Collapse Lists to be per user, not per board. In Progress.

Related #5388

Thanks to xet7 !
This commit is contained in:
Lauri Ojansivu 2024-05-01 23:58:57 +03:00
parent e73a44d15b
commit 902f86d363
7 changed files with 74 additions and 44 deletions

View file

@ -440,6 +440,20 @@ Users.attachSchema(
defaultValue: {},
blackbox: true,
},
'profile.listCollapsed': {
/**
* User-specific list of collapsed list IDs
*/
type: [String],
optional: true,
},
'profile.swimlaneCollapsed': {
/**
* User-specific list of collapsed swimlane IDs
*/
type: [String],
optional: true,
},
services: {
/**
* services field of the user
@ -736,6 +750,36 @@ Users.helpers({
return _.contains(starredBoards, boardId);
},
collapsedLists() {
const { collapsedLists = [] } = this.profile || {};
return Lists.userLists(
this._id,
false,
{ _id: { $in: collapsedLists } },
{ sort: { sort: 1 } },
);
},
hasCollapsedList(listId) {
const { collapsedLists = [] } = this.profile || {};
return _.contains(collapsedLists, listId);
},
collapsedSwimlanes() {
const { collapsedSwimlanes = [] } = this.profile || {};
return Swimlanes.userSwimlanes(
this._id,
false,
{ _id: { $in: collapsedSwimlanes } },
{ sort: { sort: 1 } },
);
},
hasCollapsedSwimlane(swimlaneId) {
const { collapsedSwimlanes = [] } = this.profile || {};
return _.contains(collapsedSwimlanes, swimlaneId);
},
invitedBoards() {
const { invitedBoards = [] } = this.profile || {};
return Boards.userBoards(
@ -1004,6 +1048,22 @@ Users.mutations({
},
};
},
toggleCollapseList(listId) {
const queryKind = this.hasCollapsedList(listId) ? '$pull' : '$addToSet';
return {
[queryKind]: {
'profile.listCollapsed': listId,
},
};
},
toggleCollapseSwimlane(swimlaneId) {
const queryKind = this.hasCollapsedSwimlane(swimlaneId) ? '$pull' : '$addToSet';
return {
[queryKind]: {
'profile.swimlaneCollapsed': swimlaneId,
},
};
},
addInvite(boardId) {
return {