diff options
Diffstat (limited to 'src/client/DocServer.ts')
-rw-r--r-- | src/client/DocServer.ts | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/client/DocServer.ts b/src/client/DocServer.ts index 5af89cf49..977eb7772 100644 --- a/src/client/DocServer.ts +++ b/src/client/DocServer.ts @@ -33,7 +33,7 @@ export namespace DocServer { } const fieldWriteModes: { [field: string]: WriteMode } = {}; - const docsWithUpdates: { [field: string]: Doc[] } = {}; + const docsWithUpdates: { [field: string]: Set<Doc> } = {}; export function setFieldWriteMode(field: string, writeMode: WriteMode) { fieldWriteModes[field] = writeMode; @@ -50,12 +50,15 @@ export namespace DocServer { return fieldWriteModes[field]; } - export function registerDocWithCachedUpdate(doc: Doc, field: string) { + export function registerDocWithCachedUpdate(doc: Doc, field: string, oldValue: any) { let list = docsWithUpdates[field]; if (!list) { - list = docsWithUpdates[field] = []; + list = docsWithUpdates[field] = new Set; + } + if (!list.has(doc)) { + Doc.AddCachedUpdate(doc, field, oldValue); + list.add(doc); } - list.push(doc); } export function init(protocol: string, hostname: string, port: number, identifier: string) { |