forums subscribe fix

This commit is contained in:
Sukhamjot Singh 2022-06-09 12:07:15 +05:30
parent f280bd1e11
commit 2d01eca511
6 changed files with 144 additions and 39 deletions

View File

@ -46,4 +46,8 @@ img.channelpic {
}
.p{
margin:0;
}
#toggleunsub{
position: relative;
background: gray;
}

View File

@ -86,7 +86,6 @@ const MessageView = () => {
return {
oninit: (v) => {
if (Data.DisplayChannels[v.attrs.id]) {
console.log(Data.DisplayChannels[v.attrs.id].all);
cname = Data.DisplayChannels[v.attrs.id].name;
cimage = Data.DisplayChannels[v.attrs.id].image;
if (rs.userList.userMap[Data.DisplayChannels[v.attrs.id].author]) {
@ -146,11 +145,12 @@ const MessageView = () => {
csubscribed ? 'Subscribed' : 'Subscribe'
),
m(
'button',
'button[id=toggleunsub]',
{
style: 'display:' + (toggleUnsubscribe ? 'block' : 'none'),
onclick: () => {
if (csubscribed) {
console.log(csubscribed);
rs.rsJsonApiRequest(
'/rsgxschannels/subscribeToChannel',
{

View File

@ -1,7 +1,7 @@
.forums-node-panel {
position: relative;
bottom: 100px;
margin-left: 200px;
margin-left: 300px;
animation: fadein 0.5s;
}
@ -36,8 +36,13 @@ table.forums tr.hidden{
#forumdetails{
position: relative;
margin-left: auto;
margin-left: 10px;
padding: 10px;
}
.p{
margin:0;
}
#toggleunsub{
position: relative;
background: gray;
}

View File

@ -3,16 +3,19 @@ const widget = require('widgets');
const rs = require('rswebui');
const util = require('forums/forums_util');
const getForums =
{
PopularForums : [],
load(){
rs.rsJsonApiRequest('/rsgxsforums/getForumsSummaries', {}, (data) => {
getForums.PopularForums = data.forums;
console.log(getForums.PopularForums);
const getForums = {
All: [],
PopularForums: [],
SubscribedForums: [],
async load() {
await rs.rsJsonApiRequest('/rsgxsforums/getForumsSummaries', {}, (data) => {
getForums.All = data.forums;
getForums.PopularForums = getForums.All;
getForums.SubscribedForums = getForums.All.filter(
(forum) => forum.mSubscribeFlags === util.GROUP_SUBSCRIBE_SUBSCRIBED
);
});
}
},
};
const sections = {
MyForums: require('forums/my_forums'),
@ -22,36 +25,43 @@ const sections = {
};
const Layout = {
oninit: getForums.load,
// oninit : getForums.load,
onupdate: getForums.load,
view: (vnode) =>
m('.tab-page', [
m(util.SearchBar, {
list: getForums.PopularForums
list: getForums.All,
}),
m(widget.Sidebar, {
tabs: Object.keys(sections),
baseRoute: '/forums/',
}),
m('.forums-node-panel', vnode.children),
m(
'.forum-node-panel',
vnode.attrs.check
? m(util.MessageView, {
id: vnode.attrs.id,
})
: m(sections[vnode.attrs.tab], {
list: getForums[vnode.attrs.tab],
})
),
]),
};
module.exports = {
view: (vnode) => {
const tab = vnode.attrs.tab;
if (Object.prototype.hasOwnProperty.call(vnode.attrs, 'mGroupId')) {
return m(
Layout,
m(util.MessageView, {
id: vnode.attrs.mGroupId,
})
);
return m(Layout, {
check: true, // for forum description
id: vnode.attrs.mGroupId,
});
}
return m(
Layout,
m((sections[tab]), {
list: getForums.PopularForums,
}),
);
return m(Layout, {
check: false,
tab: vnode.attrs.tab,
});
// this check is implemented for Layout and helps to send in updated list each time.
},
};

View File

@ -1,6 +1,11 @@
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: {},
};
@ -14,7 +19,6 @@ async function updateDisplayForums(keyid, details = {}) {
},
(data) => {
details = data.forumsInfo[0];
// console.log(details);
}
)
.then(() => {
@ -23,6 +27,7 @@ async function updateDisplayForums(keyid, details = {}) {
name: details.mMeta.mGroupName,
isSearched: true,
description: details.mDescription,
isSubscribed: details.mMeta.mSubscribeFlags === GROUP_SUBSCRIBE_SUBSCRIBED,
};
}
});
@ -65,11 +70,14 @@ const ForumSummary = () => {
};
const MessageView = () => {
let cname = '';
let fname = '';
let fsubscribed = {};
let toggleUnsubscribe = false;
return {
oninit: (v) => {
if (Data.DisplayForums[v.attrs.id]) {
cname = Data.DisplayForums[v.attrs.id].name;
fname = Data.DisplayForums[v.attrs.id].name;
fsubscribed = Data.DisplayForums[v.attrs.id].isSubscribed;
}
},
view: (v) =>
@ -89,7 +97,57 @@ const MessageView = () => {
},
m('i.fas.fa-arrow-left')
),
m('h3', cname),
m(
'button',
{
onclick: () => {
if (!fsubscribed) {
rs.rsJsonApiRequest(
'/rsgxsforums/subscribeToForum',
{
forumId: v.attrs.id,
subscribe: true,
},
(data) => {
console.log(data);
}
).then(() => {
Data.DisplayForums[v.attrs.id].isSubscribed = true;
fsubscribed = true;
});
} else {
toggleUnsubscribe = !toggleUnsubscribe;
}
},
},
fsubscribed ? 'Subscribed' : 'Subscribe'
),
m(
'button[id=toggleunsub]',
{
style: 'display:' + (toggleUnsubscribe ? 'block' : 'none'),
onclick: () => {
if (fsubscribed) {
rs.rsJsonApiRequest(
'/rsgxsforums/subscribeToForum',
{
forumId: v.attrs.id,
subscribe: false,
},
(data) => {
console.log(data);
}
).then(() => {
Data.DisplayForums[v.attrs.id].isSubscribed = false;
fsubscribed = false;
toggleUnsubscribe = false;
});
}
},
},
'Unsubscribe?'
),
m('h3', fname),
m('[id=forumdetails]', [
m('p', m('b', 'Posts: '), 'posts'),
m('p', m('b', 'Date created: '), '1/1/11'),
@ -154,4 +212,8 @@ module.exports = {
MessageView,
DisplayForumsFromList,
Table,
GROUP_SUBSCRIBE_ADMIN,
GROUP_SUBSCRIBE_NOT_SUBSCRIBED,
GROUP_SUBSCRIBE_PUBLISH,
GROUP_SUBSCRIBE_SUBSCRIBED,
};

View File

@ -1,11 +1,35 @@
const m = require('mithril');
const util = require('forums/forums_util');
const Layout = () => {
return{
view: () => [
m('.widget', [m('h2', 'Subscribed Forums'), m('hr'), ])
]
};
return {
view: (v) => [
m('.widget', [
m('h3', 'Subscribed Forums'),
m('hr'),
m(
util.Table,
m(
'tbody',
[v.attrs.list.map((forum) =>
m(util.ForumSummary, {
details: forum,
category: 'SubscribedForums',
}),
),
v.attrs.list.map((forum) =>
m(util.DisplayForumsFromList, {
id: forum.mGroupId,
category: 'SubscribedForums',
}),
),
]
)
),
]),
],
};
};
module.exports = Layout();
module.exports = Layout;