diff options
author | Bob Zeleznik <zzzman@gmail.com> | 2020-07-13 11:46:35 -0400 |
---|---|---|
committer | Bob Zeleznik <zzzman@gmail.com> | 2020-07-13 11:46:35 -0400 |
commit | db15b1d27a639af7a65f72dd5e4b6ea298412315 (patch) | |
tree | 305996a77e228c82e8866ef543377aaaf858bdf6 /src/fields/Doc.ts | |
parent | c5eee7d838acb6991d1e37e0160cf77f5fc6aa34 (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.ts | 12 |
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) { |