aboutsummaryrefslogtreecommitdiff
path: root/src/fields/Doc.ts
diff options
context:
space:
mode:
authorBob Zeleznik <zzzman@gmail.com>2020-07-13 11:46:35 -0400
committerBob Zeleznik <zzzman@gmail.com>2020-07-13 11:46:35 -0400
commitdb15b1d27a639af7a65f72dd5e4b6ea298412315 (patch)
tree305996a77e228c82e8866ef543377aaaf858bdf6 /src/fields/Doc.ts
parentc5eee7d838acb6991d1e37e0160cf77f5fc6aa34 (diff)
fixed issues with ACLs and writing to playground fields when you have Edit permission. Also fixed text editing by fixing fetchProto to use untracked references to fields
Diffstat (limited to 'src/fields/Doc.ts')
-rw-r--r--src/fields/Doc.ts12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/fields/Doc.ts b/src/fields/Doc.ts
index e8dca5fb6..8ab4735a7 100644
--- a/src/fields/Doc.ts
+++ b/src/fields/Doc.ts
@@ -1,4 +1,4 @@
-import { action, computed, observable, ObservableMap, runInAction } from "mobx";
+import { action, computed, observable, ObservableMap, runInAction, untracked } from "mobx";
import { computedFn } from "mobx-utils";
import { alias, map, serializable } from "serializr";
import { DocServer } from "../client/DocServer";
@@ -110,15 +110,13 @@ 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
+ untracked(() => {
+ const permissions: { [key: string]: symbol } = {};
- const permissions: { [key: string]: symbol } = {};
+ Object.keys(doc).filter(key => key.startsWith("ACL")).forEach(key => permissions[key] = AclMap.get(StrCast(doc[key]))!);
- Object.keys(doc).forEach(key => {
- if (key.startsWith("ACL")) permissions[key] = AclMap.get(StrCast(doc[key]))!;
+ if (Object.keys(permissions).length) doc[AclSym] = permissions;
});
-
-
- if (Object.keys(permissions).length) doc[AclSym] = permissions;
}
if (doc.proto instanceof Promise) {