diff options
author | Sam Wilkins <samwilkins333@gmail.com> | 2019-08-08 10:28:31 -0400 |
---|---|---|
committer | Sam Wilkins <samwilkins333@gmail.com> | 2019-08-08 10:28:31 -0400 |
commit | f3a1b96c5587249a1f6d45ecc9b462215da479e2 (patch) | |
tree | 9726a7489f947a4294f49102562a4d3b3c3c2b6d /src/new_fields/util.ts | |
parent | 7cf716e4288f09e835fce3613ab007f239a59e8e (diff) | |
parent | 5deebce85ded6403faf8f63f45d4d6d7932e3813 (diff) |
clean up
Diffstat (limited to 'src/new_fields/util.ts')
-rw-r--r-- | src/new_fields/util.ts | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/new_fields/util.ts b/src/new_fields/util.ts index c6f693f7f..099fe2d0a 100644 --- a/src/new_fields/util.ts +++ b/src/new_fields/util.ts @@ -6,7 +6,8 @@ import { RefField } from "./RefField"; import { ObjectField } from "./ObjectField"; import { action } from "mobx"; import { Parent, OnUpdate, Update, Id, SelfProxy, Self } from "./FieldSymbols"; -import { ComputedField } from "./ScriptField"; +import { DocServer } from "../client/DocServer"; +import { CurrentUserUtils } from "../server/authentication/models/current_user_utils"; function _readOnlySetter(): never { throw new Error("Documents can't be modified in read-only mode"); @@ -63,9 +64,14 @@ const _setterImpl = action(function (target: any, prop: string | symbol | number } else { target.__fields[prop] = value; } - if (value === undefined) target[Update]({ '$unset': { ["fields." + prop]: "" } }); + const writeMode = DocServer.getFieldWriteMode(prop as string); if (typeof value === "object" && !(value instanceof ObjectField)) debugger; - else target[Update]({ '$set': { ["fields." + prop]: value instanceof ObjectField ? SerializationHelper.Serialize(value) : (value === undefined ? null : value) } }); + if (!writeMode || (writeMode === DocServer.WriteMode.SameUser && receiver.author === CurrentUserUtils.email)) { + if (value === undefined) target[Update]({ '$unset': { ["fields." + prop]: "" } }); + else target[Update]({ '$set': { ["fields." + prop]: value instanceof ObjectField ? SerializationHelper.Serialize(value) : (value === undefined ? null : value) } }); + } else { + DocServer.registerDocWithCachedUpdate(receiver, prop as string); + } UndoManager.AddEvent({ redo: () => receiver[prop] = value, undo: () => receiver[prop] = curValue |