mirror of
https://github.com/RetroShare/RSNewWebUI.git
synced 2026-09-14 11:05:47 +05:00
157 lines
4.3 KiB
JavaScript
157 lines
4.3 KiB
JavaScript
const m = require('mithril');
|
|
const rs = require('rswebui');
|
|
|
|
const GROUP_SUBSCRIBE_ADMIN = 0x01; // means: you have the admin key for this group
|
|
const GROUP_SUBSCRIBE_PUBLISH = 0x02; // means: you have the publish key for thiss group. Typical use: publish key in forums are shared with specific friends.
|
|
const GROUP_SUBSCRIBE_SUBSCRIBED = 0x04; // means: you are subscribed to a group, which makes you a source for this group to your friend nodes.
|
|
const GROUP_SUBSCRIBE_NOT_SUBSCRIBED = 0x08;
|
|
|
|
const Data = {
|
|
DisplayForums: {},
|
|
};
|
|
|
|
async function updateDisplayForums(keyid, details = {}) {
|
|
const res = await rs.rsJsonApiRequest('/rsgxsforums/getForumsInfo', {
|
|
forumIds: [keyid],
|
|
});
|
|
details = res.body.forumsInfo[0];
|
|
if (Data.DisplayForums[keyid] === undefined) {
|
|
Data.DisplayForums[keyid] = {
|
|
name: details.mMeta.mGroupName,
|
|
isSearched: true,
|
|
description: details.mDescription,
|
|
isSubscribed: details.mMeta.mSubscribeFlags === GROUP_SUBSCRIBE_SUBSCRIBED,
|
|
};
|
|
}
|
|
}
|
|
|
|
const DisplayForumsFromList = () => {
|
|
return {
|
|
oninit: (v) => {},
|
|
view: (v) =>
|
|
m(
|
|
'tr',
|
|
{
|
|
key: v.attrs.id,
|
|
class:
|
|
Data.DisplayForums[v.attrs.id] && Data.DisplayForums[v.attrs.id].isSearched
|
|
? ''
|
|
: 'hidden',
|
|
onclick: () => {
|
|
m.route.set('/forums/:tab/:mGroupId', {
|
|
tab: v.attrs.category,
|
|
mGroupId: v.attrs.id,
|
|
});
|
|
},
|
|
},
|
|
[m('td', Data.DisplayForums[v.attrs.id] ? Data.DisplayForums[v.attrs.id].name : '')]
|
|
),
|
|
};
|
|
};
|
|
|
|
const ForumSummary = () => {
|
|
let keyid = {};
|
|
return {
|
|
oninit: (v) => {
|
|
keyid = v.attrs.details.mGroupId;
|
|
updateDisplayForums(keyid);
|
|
},
|
|
|
|
view: (v) => {},
|
|
};
|
|
};
|
|
|
|
const MessageView = () => {
|
|
let fname = '';
|
|
let fsubscribed = {};
|
|
return {
|
|
oninit: (v) => {
|
|
if (Data.DisplayForums[v.attrs.id]) {
|
|
fname = Data.DisplayForums[v.attrs.id].name;
|
|
fsubscribed = Data.DisplayForums[v.attrs.id].isSubscribed;
|
|
}
|
|
},
|
|
view: (v) =>
|
|
m(
|
|
'.widget',
|
|
{
|
|
key: v.attrs.id,
|
|
},
|
|
[
|
|
m(
|
|
'a[title=Back]',
|
|
{
|
|
onclick: () =>
|
|
m.route.set('/forums/:tab', {
|
|
tab: m.route.param().tab,
|
|
}),
|
|
},
|
|
m('i.fas.fa-arrow-left')
|
|
),
|
|
m(
|
|
'button',
|
|
{
|
|
onclick: async () => {
|
|
const res = await rs.rsJsonApiRequest('/rsgxsforums/subscribeToForum', {
|
|
forumId: v.attrs.id,
|
|
subscribe: !fsubscribed,
|
|
});
|
|
if (res.body.retval) {
|
|
fsubscribed = !fsubscribed;
|
|
Data.DisplayForums[v.attrs.id].isSubscribed = fsubscribed;
|
|
}
|
|
},
|
|
},
|
|
fsubscribed ? 'Subscribed' : 'Subscribe'
|
|
),
|
|
m('h3', fname),
|
|
m('[id=forumdetails]', [
|
|
m('p', m('b', 'Posts: '), 'posts'),
|
|
m('p', m('b', 'Date created: '), '1/1/11'),
|
|
m('p', m('b', 'Admin: '), 'name_of_admin'),
|
|
m('p', m('b', 'Last activity: '), '1/1/11'),
|
|
]),
|
|
m('hr'),
|
|
m('forumdesc', m('b', 'Description: '), Data.DisplayForums[v.attrs.id].description),
|
|
]
|
|
),
|
|
};
|
|
};
|
|
|
|
const Table = () => {
|
|
return {
|
|
view: (v) => m('table.forums', [m('tr', [m('th', 'Forum Name')]), v.children]),
|
|
};
|
|
};
|
|
const SearchBar = () => {
|
|
let searchString = '';
|
|
return {
|
|
view: (v) =>
|
|
m('input[type=text][id=searchforum][placeholder=Search Subject].searchbar', {
|
|
value: searchString,
|
|
oninput: (e) => {
|
|
searchString = e.target.value.toLowerCase();
|
|
for (const hash in Data.DisplayForums) {
|
|
if (Data.DisplayForums[hash].name.toLowerCase().indexOf(searchString) > -1) {
|
|
Data.DisplayForums[hash].isSearched = true;
|
|
} else {
|
|
Data.DisplayForums[hash].isSearched = false;
|
|
}
|
|
}
|
|
},
|
|
}),
|
|
};
|
|
};
|
|
|
|
module.exports = {
|
|
SearchBar,
|
|
ForumSummary,
|
|
MessageView,
|
|
DisplayForumsFromList,
|
|
Table,
|
|
GROUP_SUBSCRIBE_ADMIN,
|
|
GROUP_SUBSCRIBE_NOT_SUBSCRIBED,
|
|
GROUP_SUBSCRIBE_PUBLISH,
|
|
GROUP_SUBSCRIBE_SUBSCRIBED,
|
|
};
|