aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/client/util/GroupManager.scss25
-rw-r--r--src/client/util/GroupManager.tsx4
-rw-r--r--src/client/util/GroupMemberView.scss10
-rw-r--r--src/client/util/GroupMemberView.tsx3
-rw-r--r--src/client/util/SharingManager.scss30
-rw-r--r--src/client/util/SharingManager.tsx106
-rw-r--r--src/client/views/nodes/DocumentView.tsx22
-rw-r--r--src/fields/Doc.ts2
8 files changed, 28 insertions, 174 deletions
diff --git a/src/client/util/GroupManager.scss b/src/client/util/GroupManager.scss
index 8a2c616b1..34d4f40f8 100644
--- a/src/client/util/GroupManager.scss
+++ b/src/client/util/GroupManager.scss
@@ -1,8 +1,4 @@
-// @import "../views/globalCssVariables";
-
.group-interface {
- // background-color: whitesmoke !important;
- // color: grey;
width: 550px;
height: 300px;
@@ -12,21 +8,17 @@
flex-direction: column;
height: 90%;
justify-content: space-between;
- // flex-basis: 30%;
margin-left: 5px;
input {
border-radius: 5px;
- // border: none;
padding: 8px;
min-width: 100%;
- // margin: 4px 0 4px 0;
border: 1px solid hsl(0, 0%, 80%);
outline: none;
height: 30;
&:focus {
- // border: unset;
border: 2.5px solid #2684FF;
}
}
@@ -43,18 +35,12 @@
}
}
- // .dialogue-box {
- // width: 450;
- // height: 300;
- // }
button {
- // background: $lighter-alt-accent;
align-self: center;
outline: none;
border-radius: 5px;
border: 0px;
- // color: #fcfbf7;
text-transform: none;
letter-spacing: 2px;
font-size: 75%;
@@ -94,10 +80,8 @@
p {
font-size: 20px;
text-align: left;
- // margin: 0 0 20px 0;
margin-right: 15px;
color: black;
- // width: 60%;
}
}
@@ -112,14 +96,10 @@
}
.group-body {
- // display: flex;
justify-content: space-between;
- // max-height: 80%;
height: 220;
background-color: #e8e8e8;
- // flex-direction: column;
- // padding-left: 1em;
padding-right: 1em;
justify-content: space-around;
text-align: left;
@@ -129,17 +109,12 @@
.group-row {
display: flex;
- // position: relative;
margin-bottom: 5px;
min-height: 30px;
- // border: 1px solid;
- // border-radius: 10px;
align-items: center;
.group-name {
- // position: relative;
max-width: 65%;
- // left: 10;
margin: 0 10;
color: black;
}
diff --git a/src/client/util/GroupManager.tsx b/src/client/util/GroupManager.tsx
index 2d8930660..12951f2ab 100644
--- a/src/client/util/GroupManager.tsx
+++ b/src/client/util/GroupManager.tsx
@@ -286,7 +286,6 @@ export default class GroupManager extends React.Component<{}> {
*/
@action
createGroup = () => {
- // this.createGroupModalOpen = true;
if (!this.inputRef.current?.value) {
alert("Please enter a group name");
return;
@@ -410,9 +409,6 @@ export default class GroupManager extends React.Component<{}> {
<div className="group-info" onClick={action(() => this.currentGroup = group)}>
<FontAwesomeIcon icon={fa.faInfoCircle} color={"#e8e8e8"} size={"sm"} style={{ backgroundColor: "#1e89d7", borderRadius: "100%", border: "1px solid #1e89d7" }} />
</div>
- {/* <button onClick={action(() => this.currentGroup = group)}>
- {this.hasEditAccess(group) ? "Edit" : "View"}
- </button> */}
</div>
)}
</div>
diff --git a/src/client/util/GroupMemberView.scss b/src/client/util/GroupMemberView.scss
index a34e5b989..c609c5c7b 100644
--- a/src/client/util/GroupMemberView.scss
+++ b/src/client/util/GroupMemberView.scss
@@ -1,18 +1,12 @@
-// @import "../views/globalCssVariables";
-
.editing-interface {
- // background-color: whitesmoke !important;
- // color: grey;
width: 100%;
height: 100%;
- // color: black;
hr {
margin-top: 20;
}
button {
- // background: $darker-alt-accent;
outline: none;
border-radius: 5px;
border: 0px;
@@ -78,7 +72,6 @@
.editing-contents {
overflow-y: auto;
- // max-height: 67%;
height: 65%;
width: 100%;
color: black;
@@ -89,11 +82,8 @@
align-items: center;
margin-bottom: 10px;
position: relative;
- // border: 1px solid;
- // border-radius: 10px;
.user-email {
- // position: relative;
min-width: 65%;
word-break: break-all;
padding: 0 5;
diff --git a/src/client/util/GroupMemberView.tsx b/src/client/util/GroupMemberView.tsx
index ebe9830ba..f20670c4e 100644
--- a/src/client/util/GroupMemberView.tsx
+++ b/src/client/util/GroupMemberView.tsx
@@ -28,9 +28,6 @@ export default class GroupMemberView extends React.Component<GroupMemberViewProp
members = this.memberSort === "ascending" ? members.sort() : this.memberSort === "descending" ? members.sort().reverse() : members;
const options: UserOptions[] = this.props.group ? GroupManager.Instance.options.filter(option => !(JSON.parse(StrCast(this.props.group.members)) as string[]).includes(option.value)) : [];
- console.log(this.props.group, options);
- console.log(GroupManager.Instance.options);
-
return (!this.props.group ? null :
<div className="editing-interface">
diff --git a/src/client/util/SharingManager.scss b/src/client/util/SharingManager.scss
index 572b94ffb..130785672 100644
--- a/src/client/util/SharingManager.scss
+++ b/src/client/util/SharingManager.scss
@@ -1,16 +1,7 @@
-// @import "../views/globalCssVariables";
-
.sharing-interface {
- // display: flex;
- // flex-direction: column;
width: 600px;
height: 360px;
- // .dialogue-box {
- // width: 450;
- // height: 300;
- // }
-
.overlay {
transform: translate(-20px, -20px);
}
@@ -87,7 +78,6 @@
.users-list {
font-style: italic;
background: #e8e8e8;
- // border: 1px solid black;
padding-left: 10px;
padding-right: 10px;
overflow-y: scroll;
@@ -98,7 +88,6 @@
align-items: center;
text-align: center;
justify-content: center;
- // color: red;
color: black;
height: 250px;
margin: 0 2;
@@ -113,7 +102,6 @@
}
button {
- // background: $darker-alt-accent;
outline: none;
border-radius: 5px;
border: 0px;
@@ -135,8 +123,6 @@
p {
font-size: 20px;
text-align: left;
- // font-style: italic;
- // padding: 0;
margin: 0 0 20px 0;
color: black;
}
@@ -174,8 +160,6 @@
-ms-user-select: none;
user-select: none;
width: 100%;
- // min-width: 700px;
- // max-width: 700px;
text-align: left;
font-style: normal;
font-size: 14;
@@ -249,18 +233,4 @@
padding-top: 12px;
}
}
-
- // .close-button {
- // border-radius: 5px;
- // margin-top: 20px;
- // padding: 10px 0;
- // background: aliceblue;
- // transition: 0.5s ease all;
- // border: 1px solid;
- // border-color: aliceblue;
- // }
-
- // .close-button:hover {
- // border-color: black;
- // }
} \ No newline at end of file
diff --git a/src/client/util/SharingManager.tsx b/src/client/util/SharingManager.tsx
index be86b183f..8d4e508ac 100644
--- a/src/client/util/SharingManager.tsx
+++ b/src/client/util/SharingManager.tsx
@@ -36,13 +36,6 @@ export enum SharingPermissions {
None = "Not Shared"
}
-// const ColorMapping = new Map<string, string>([
-// [SharingPermissions.None, "red"],
-// [SharingPermissions.View, "maroon"],
-// [SharingPermissions.Add, "blue"],
-// [SharingPermissions.Edit, "green"]
-// ]);
-
interface GroupOptions {
label: string;
options: UserOptions[];
@@ -67,10 +60,9 @@ export default class SharingManager extends React.Component<{}> {
public static Instance: SharingManager;
@observable private isOpen = false;
@observable private users: ValidatedUser[] = [];
- // @observable private groups: Doc[] = [];
@observable private targetDoc: Doc | undefined;
@observable private targetDocView: DocumentView | undefined;
- @observable private copied = false;
+ // @observable private copied = false;
@observable private dialogueBoxOpacity = 1;
@observable private overlayOpacity = 0.4;
@observable private selectedUsers: UserOptions[] | null = null;
@@ -90,32 +82,20 @@ export default class SharingManager extends React.Component<{}> {
this.targetDoc = target.props.Document;
DictationOverlay.Instance.hasActiveModal = true;
this.isOpen = true;
- // if (!this.sharingDoc) {
- // this.sharingDoc = new Doc;
- // }
}));
- // runInAction(() => this.groups = GroupManager.Instance.getAllGroups());
}
public close = action(() => {
this.isOpen = false;
this.users = [];
setTimeout(action(() => {
- this.copied = false;
+ // this.copied = false;
DictationOverlay.Instance.hasActiveModal = false;
this.targetDoc = undefined;
}), 500);
});
- // private get sharingDoc() {
- // return this.targetDoc ? Cast(this.targetDoc[SharingKey], Doc) as Doc : undefined;
- // }
-
- // private set sharingDoc(value: Doc | undefined) {
- // this.targetDoc && (this.targetDoc[SharingKey] = value);
- // }
-
constructor(props: {}) {
super(props);
SharingManager.Instance = this;
@@ -152,7 +132,6 @@ export default class SharingManager extends React.Component<{}> {
Doc.GetProto(target)[ACL] = permission;
group.docsShared ? DocListCastAsync(group.docsShared).then(resolved => Doc.IndexOf(target, resolved!) === -1 && (group.docsShared as List<Doc>).push(target)) : group.docsShared = new List<Doc>([target]);
- // group.docsShared ? Doc.IndexOf(target, DocListCast(group.docsShared)) === -1 && (group.docsShared as List<Doc>).push(target) : group.docsShared = new List<Doc>([target]);
users.forEach(({ notificationDoc }) => {
DocListCastAsync(notificationDoc[storage]).then(resolved => {
@@ -171,7 +150,6 @@ export default class SharingManager extends React.Component<{}> {
DocListCastAsync(user.notificationDoc[storage]).then(resolved => Doc.IndexOf(doc, resolved!) === -1 && Doc.AddDocToList(user.notificationDoc, storage, doc));
});
});
- // DocListCast(group.docsShared).forEach(doc => Doc.IndexOf(doc, DocListCast(user.notificationDoc[storage])) === -1 && Doc.AddDocToList(user.notificationDoc, storage, doc));
}
}
@@ -184,7 +162,6 @@ export default class SharingManager extends React.Component<{}> {
DocListCastAsync(user.notificationDoc[storage]).then(resolved => Doc.IndexOf(doc, resolved!) !== -1 && Doc.RemoveDocFromList(user.notificationDoc, storage, doc));
});
});
- // DocListCast(group.docsShared).forEach(doc => Doc.IndexOf(doc, DocListCast(user.notificationDoc[storage])) === -1 && Doc.AddDocToList(user.notificationDoc, storage, doc));
}
}
@@ -208,14 +185,10 @@ export default class SharingManager extends React.Component<{}> {
setInternalSharing = (recipient: ValidatedUser, permission: string) => {
const { user, notificationDoc } = recipient;
const target = this.targetDoc!;
- // const manager = this.sharingDoc!;
const key = user.email.replace('.', '_');
- // const key = user.userDocumentId;
const ACL = `ACL-${key}`;
- // const permissions: { [key: string]: number } = target[ACL] ? JSON.parse(StrCast(target[ACL])) : {};
-
target[ACL] = permission;
Doc.GetProto(target)[ACL] = permission;
@@ -228,47 +201,12 @@ export default class SharingManager extends React.Component<{}> {
}
else {
DocListCastAsync(notificationDoc[storage]).then(resolved => {
- Doc.IndexOf(target, resolved!) === -1 && Doc.RemoveDocFromList(notificationDoc, storage, target);
+ Doc.IndexOf(target, resolved!) !== -1 && Doc.RemoveDocFromList(notificationDoc, storage, target);
});
}
}
-
- // let metadata = await DocCastAsync(manager[key]);
- // const permissions: { [key: string]: number } = metadata?.permissions ? JSON.parse(StrCast(metadata.permissions)) : {};
- // permissions[StrCast(group ? group.groupName : Doc.CurrentUserEmail)] = parseInt(HierarchyMapping.get(permission)!);
- // const max = Math.max(...Object.values(permissions));
-
- // switch (max) {
- // case 0:
- // // if (metadata) {
- // // const sharedAlias = (await DocCastAsync(metadata.sharedAlias))!;
- // // Doc.RemoveDocFromList(notificationDoc, storage, sharedAlias);
- // // manager[key] = undefined;
- // // }
- // Doc.RemoveDocFromList(notificationDoc, storage, target);
- // break;
-
- // case 1: case 2: case 3:
-
- // Doc.AddDocToList(notificationDoc, storage, target);
-
- // if (!metadata) {
- // metadata = new Doc;
- // const sharedAlias = Doc.MakeAlias(target);
- // Doc.AddDocToList(notificationDoc, storage, target);
- // metadata.sharedAlias = sharedAlias;
- // manager[key] = metadata;
- // }
- // metadata.permissions = JSON.stringify(permissions);
- // // metadata.usersShared = JSON.stringify(keys);
- // break;
- // }
-
- // if (metadata) metadata.maxPermission = HierarchyMapping.get(`${max}`);
-
-
// private setExternalSharing = (permission: string) => {
// const sharingDoc = this.sharingDoc;
// if (!sharingDoc) {
@@ -277,20 +215,20 @@ export default class SharingManager extends React.Component<{}> {
// sharingDoc[PublicKey] = permission;
// }
- private get sharingUrl() {
- if (!this.targetDoc) {
- return undefined;
- }
- const baseUrl = Utils.prepend("/doc/" + this.targetDoc[Id]);
- return `${baseUrl}?sharing=true`;
- }
+ // private get sharingUrl() {
+ // if (!this.targetDoc) {
+ // return undefined;
+ // }
+ // const baseUrl = Utils.prepend("/doc/" + this.targetDoc[Id]);
+ // return `${baseUrl}?sharing=true`;
+ // }
- copy = action(() => {
- if (this.sharingUrl) {
- Utils.CopyText(this.sharingUrl);
- this.copied = true;
- }
- });
+ // copy = action(() => {
+ // if (this.sharingUrl) {
+ // Utils.CopyText(this.sharingUrl);
+ // this.copied = true;
+ // }
+ // });
private get sharingOptions() {
return Object.values(SharingPermissions).map(permission => {
@@ -394,14 +332,7 @@ export default class SharingManager extends React.Component<{}> {
const userListContents: (JSX.Element | null)[] = users.map(({ user, notificationDoc }) => { // can't use async here
const userKey = user.email.replace('.', '_');
- // const userKey = user.userDocumentId;
const permissions = StrCast(this.targetDoc?.[`ACL-${userKey}`], SharingPermissions.None);
- // const color = ColorMapping.get(permissions);
-
- // console.log(manager);
- // const metadata = manager[userKey] as Doc;
- // const usersShared = StrCast(metadata?.usersShared, "");
- // console.log(usersShared)
return permissions === SharingPermissions.None || user.email === this.targetDoc?.author ? null : (
<div
@@ -409,12 +340,10 @@ export default class SharingManager extends React.Component<{}> {
className={"container"}
>
<span className={"padding"}>{user.email}</span>
- {/* <div className={"shared-by"}>{usersShared}</div> */}
<div className="edit-actions">
<select
className={"permissions-dropdown"}
value={permissions}
- // style={{ color, borderColor: color }}
onChange={e => this.setInternalSharing({ user, notificationDoc }, e.currentTarget.value)}
>
{this.sharingOptions}
@@ -442,7 +371,6 @@ export default class SharingManager extends React.Component<{}> {
const groupListContents = groups.map(group => {
const permissions = StrCast(this.targetDoc?.[`ACL-${StrCast(group.groupName)}`], SharingPermissions.None);
- // const color = ColorMapping.get(permissions);
return permissions === SharingPermissions.None ? null : (
<div
@@ -457,7 +385,6 @@ export default class SharingManager extends React.Component<{}> {
<select
className={"permissions-dropdown"}
value={permissions}
- // style={{ color, borderColor: color }}
onChange={e => this.setInternalGroupSharing(group, e.currentTarget.value)}
>
{this.sharingOptions}
@@ -582,7 +509,6 @@ export default class SharingManager extends React.Component<{}> {
}
render() {
- // console.log(this.sharingDoc);
return (
<MainViewModal
contents={this.sharingInterface}
diff --git a/src/client/views/nodes/DocumentView.tsx b/src/client/views/nodes/DocumentView.tsx
index 0015e4bc7..8ef367a7c 100644
--- a/src/client/views/nodes/DocumentView.tsx
+++ b/src/client/views/nodes/DocumentView.tsx
@@ -831,17 +831,17 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu
!Doc.UserDoc().novice && helpItems.push({ description: "Show Fields ", event: () => this.props.addDocTab(Docs.Create.KVPDocument(this.props.Document, { _width: 300, _height: 300 }), "onRight"), icon: "layer-group" });
cm.addItem({ description: "Help...", noexpand: true, subitems: helpItems, icon: "question" });
- const existingAcls = cm.findByDescription("Privacy...");
- const aclItems: ContextMenuProps[] = existingAcls && "subitems" in existingAcls ? existingAcls.subitems : [];
- aclItems.push({ description: "Make Add Only", event: () => this.setAcl("addOnly"), icon: "concierge-bell" });
- aclItems.push({ description: "Make Read Only", event: () => this.setAcl("readOnly"), icon: "concierge-bell" });
- aclItems.push({ description: "Make Private", event: () => this.setAcl("ownerOnly"), icon: "concierge-bell" });
- aclItems.push({ description: "Make Editable", event: () => this.setAcl("write"), icon: "concierge-bell" });
- aclItems.push({ description: "Test Private", event: () => this.testAcl("ownerOnly"), icon: "concierge-bell" });
- aclItems.push({ description: "Test Readonly", event: () => this.testAcl("readOnly"), icon: "concierge-bell" });
- !existingAcls && cm.addItem({ description: "Privacy...", subitems: aclItems, icon: "question" });
-
- cm.addItem({ description: `${getPlaygroundMode() ? "Disable" : "Enable"} playground mode`, event: togglePlaygroundMode, icon: "concierge-bell" });
+ // const existingAcls = cm.findByDescription("Privacy...");
+ // const aclItems: ContextMenuProps[] = existingAcls && "subitems" in existingAcls ? existingAcls.subitems : [];
+ // aclItems.push({ description: "Make Add Only", event: () => this.setAcl(SharingPermissions.Add), icon: "concierge-bell" });
+ // aclItems.push({ description: "Make Read Only", event: () => this.setAcl(SharingPermissions.View), icon: "concierge-bell" });
+ // aclItems.push({ description: "Make Private", event: () => this.setAcl(SharingPermissions.None), icon: "concierge-bell" });
+ // aclItems.push({ description: "Make Editable", event: () => this.setAcl(SharingPermissions.Edit), icon: "concierge-bell" });
+ // aclItems.push({ description: "Test Private", event: () => this.testAcl(SharingPermissions.None), icon: "concierge-bell" });
+ // aclItems.push({ description: "Test Readonly", event: () => this.testAcl(SharingPermissions.View), icon: "concierge-bell" });
+ // !existingAcls && cm.addItem({ description: "Privacy...", subitems: aclItems, icon: "question" });
+
+ // cm.addItem({ description: `${getPlaygroundMode() ? "Disable" : "Enable"} playground mode`, event: togglePlaygroundMode, icon: "concierge-bell" });
// const recommender_subitems: ContextMenuProps[] = [];
diff --git a/src/fields/Doc.ts b/src/fields/Doc.ts
index 8ab4735a7..5dfc14a4a 100644
--- a/src/fields/Doc.ts
+++ b/src/fields/Doc.ts
@@ -109,7 +109,7 @@ const AclMap = new Map<string, symbol>([
]);
export function fetchProto(doc: Doc) {
- if (doc.author !== Doc.CurrentUserEmail) { // storing acls for groups needs to be extended here - AclSym should store a datastructure that stores information about permissions
+ if (doc.author !== Doc.CurrentUserEmail) {
untracked(() => {
const permissions: { [key: string]: symbol } = {};