aboutsummaryrefslogtreecommitdiff
path: root/src/client/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/util')
-rw-r--r--src/client/util/GroupManager.tsx60
-rw-r--r--src/client/util/SharingManager.tsx42
2 files changed, 28 insertions, 74 deletions
diff --git a/src/client/util/GroupManager.tsx b/src/client/util/GroupManager.tsx
index b14dcf55b..83b206f94 100644
--- a/src/client/util/GroupManager.tsx
+++ b/src/client/util/GroupManager.tsx
@@ -33,7 +33,7 @@ export default class GroupManager extends React.Component<{}> {
@observable private selectedUsers: UserOptions[] | null = null; // list of users selected in the "Select users" dropdown.
@observable currentGroup: Opt<Doc>; // the currently selected group.
private inputRef: React.RefObject<HTMLInputElement> = React.createRef(); // the ref for the input box.
- private currentUserGroups: Doc[] = [];
+ currentUserGroups: string[] = [];
constructor(props: Readonly<{}>) {
super(props);
@@ -51,7 +51,7 @@ export default class GroupManager extends React.Component<{}> {
DocListCastAsync(this.GroupManagerDoc?.data).then(groups => {
groups?.forEach(group => {
const members: string[] = JSON.parse(StrCast(group.members));
- if (members.includes(Doc.CurrentUserEmail)) this.currentUserGroups.push(group);
+ if (members.includes(Doc.CurrentUserEmail)) this.currentUserGroups.push(StrCast(group.groupName));
});
})
.finally(() => console.log(this.currentUserGroups));
@@ -82,11 +82,6 @@ export default class GroupManager extends React.Component<{}> {
return this.users.map(user => ({ label: user, value: user }));
}
-
- get groupMemberships() {
- return this.currentUserGroups;
- }
-
/**
* Makes the GroupManager visible.
*/
@@ -151,6 +146,11 @@ export default class GroupManager extends React.Component<{}> {
);
}
+ getGroupMembers(group: string | Doc): string[] {
+ if (group instanceof Doc) return JSON.parse(StrCast(group.members)) as string[];
+ else return JSON.parse(StrCast(this.getGroup(group)!.members)) as string[];
+ }
+
/**
* @returns the members of the admin group.
*/
@@ -280,52 +280,6 @@ export default class GroupManager extends React.Component<{}> {
}
/**
- * A getter that @returns the interface rendered to view an individual group.
- */
- // private get editingInterface() {
- // const members: string[] = this.currentGroup ? JSON.parse(StrCast(this.currentGroup.members)) : [];
- // const options: UserOptions[] = this.currentGroup ? this.options.filter(option => !(JSON.parse(StrCast(this.currentGroup!.members)) as string[]).includes(option.value)) : [];
- // return (!this.currentGroup ? null :
- // <div className="editing-interface">
- // <div className="editing-header">
- // <b>{this.currentGroup.groupName}</b>
- // <div className={"close-button"} onClick={action(() => this.currentGroup = undefined)}>
- // <FontAwesomeIcon icon={fa.faWindowClose} size={"lg"} />
- // </div>
-
- // {this.hasEditAccess(this.currentGroup) ?
- // <div className="group-buttons">
- // <div className="add-member-dropdown">
- // <Select
- // // isMulti={true}
- // isSearchable={true}
- // options={options}
- // onChange={selectedOption => this.addMemberToGroup(this.currentGroup!, (selectedOption as UserOptions).value)}
- // placeholder={"Add members"}
- // value={null}
- // closeMenuOnSelect={true}
- // />
- // </div>
- // <button onClick={() => this.deleteGroup(this.currentGroup!)}>Delete group</button>
- // </div> :
- // null}
- // </div>
- // <div className="editing-contents">
- // {members.map(member => (
- // <div className="editing-row">
- // <div className="user-email">
- // {member}
- // </div>
- // {this.hasEditAccess(this.currentGroup!) ? <button onClick={() => this.removeMemberFromGroup(this.currentGroup!, member)}> Remove </button> : null}
- // </div>
- // ))}
- // </div>
- // </div>
- // );
-
- // }
-
- /**
* A getter that @returns the main interface for the GroupManager.
*/
private get groupInterface() {
diff --git a/src/client/util/SharingManager.tsx b/src/client/util/SharingManager.tsx
index e74824581..bec6b973b 100644
--- a/src/client/util/SharingManager.tsx
+++ b/src/client/util/SharingManager.tsx
@@ -43,18 +43,18 @@ export enum SharingPermissions {
// [SharingPermissions.Edit, "green"]
// ]);
-const HierarchyMapping = new Map<string, string>([
- [SharingPermissions.None, "0"],
- [SharingPermissions.View, "1"],
- [SharingPermissions.Add, "2"],
- [SharingPermissions.Edit, "3"],
+// export const HierarchyMapping = new Map<string, number>([
+// [SharingPermissions.None, 0],
+// [SharingPermissions.View, 1],
+// [SharingPermissions.Add, 2],
+// [SharingPermissions.Edit, 3]
- ["0", SharingPermissions.None],
- ["1", SharingPermissions.View],
- ["2", SharingPermissions.Add],
- ["3", SharingPermissions.Edit]
+// // ["0", SharingPermissions.None],
+// // ["1", SharingPermissions.View],
+// // ["2", SharingPermissions.Add],
+// // ["3", SharingPermissions.Edit]
-]);
+// ]);
interface GroupOptions {
label: string;
@@ -161,14 +161,6 @@ export default class SharingManager extends React.Component<{}> {
const ACL = `ACL-${StrCast(group.groupName)}`;
target[ACL] = permission;
- // const sharingDoc = this.sharingDoc!;
- // if (permission === SharingPermissions.None) {
- // const metadata = sharingDoc[StrCast(group.groupName)];
- // if (metadata) sharingDoc[StrCast(group.groupName)] = undefined;
- // }
- // else {
- // sharingDoc[StrCast(group.groupName)] = permission;
- // }
group.docsShared ? Doc.IndexOf(target, DocListCast(group.docsShared)) === -1 && (group.docsShared as List<Doc>).push(target) : group.docsShared = new List<Doc>([target]);
@@ -206,7 +198,7 @@ export default class SharingManager extends React.Component<{}> {
const users: ValidatedUser[] = this.users.filter(user => members.includes(user.user.email));
users.forEach(user => Doc.RemoveDocFromList(user.notificationDoc, storage, doc));
- })
+ });
}
}
@@ -224,8 +216,16 @@ export default class SharingManager extends React.Component<{}> {
target[ACL] = permission;
- if (permission !== SharingPermissions.None) Doc.IndexOf(target, DocListCast(notificationDoc[storage])) === -1 && Doc.AddDocToList(notificationDoc, storage, target);
- else Doc.IndexOf(target, DocListCast(notificationDoc[storage])) !== -1 && Doc.RemoveDocFromList(notificationDoc, storage, target);
+ if (permission !== SharingPermissions.None) {
+ !this.sharedUsers.includes(recipient) && this.sharedUsers.push(recipient);
+
+ Doc.IndexOf(target, DocListCast(notificationDoc[storage])) === -1 && Doc.AddDocToList(notificationDoc, storage, target);
+ }
+ else {
+ const index = this.sharedUsers.findIndex(user => user === recipient);
+ index !== -1 && this.sharedUsers.splice(index, 1);
+ Doc.IndexOf(target, DocListCast(notificationDoc[storage])) !== -1 && Doc.RemoveDocFromList(notificationDoc, storage, target);
+ }
}