aboutsummaryrefslogtreecommitdiff
path: root/src/client/DocServer.ts
diff options
context:
space:
mode:
authorSam Wilkins <samwilkins333@gmail.com>2019-08-08 10:28:31 -0400
committerSam Wilkins <samwilkins333@gmail.com>2019-08-08 10:28:31 -0400
commitf3a1b96c5587249a1f6d45ecc9b462215da479e2 (patch)
tree9726a7489f947a4294f49102562a4d3b3c3c2b6d /src/client/DocServer.ts
parent7cf716e4288f09e835fce3613ab007f239a59e8e (diff)
parent5deebce85ded6403faf8f63f45d4d6d7932e3813 (diff)
clean up
Diffstat (limited to 'src/client/DocServer.ts')
-rw-r--r--src/client/DocServer.ts34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/client/DocServer.ts b/src/client/DocServer.ts
index 87a87be92..5af89cf49 100644
--- a/src/client/DocServer.ts
+++ b/src/client/DocServer.ts
@@ -1,6 +1,6 @@
import * as OpenSocket from 'socket.io-client';
import { MessageStore, Diff, YoutubeQueryTypes } from "./../server/Message";
-import { Opt } from '../new_fields/Doc';
+import { Opt, Doc } from '../new_fields/Doc';
import { Utils, emptyFunction } from '../Utils';
import { SerializationHelper } from './util/SerializationHelper';
import { RefField } from '../new_fields/RefField';
@@ -26,6 +26,38 @@ export namespace DocServer {
let GUID: string;
// indicates whether or not a document is currently being udpated, and, if so, its id
+ export enum WriteMode {
+ Always = 0,
+ None = 1,
+ SameUser = 2,
+ }
+
+ const fieldWriteModes: { [field: string]: WriteMode } = {};
+ const docsWithUpdates: { [field: string]: Doc[] } = {};
+
+ export function setFieldWriteMode(field: string, writeMode: WriteMode) {
+ fieldWriteModes[field] = writeMode;
+ if (writeMode === WriteMode.Always) {
+ const docs = docsWithUpdates[field];
+ if (docs) {
+ docs.forEach(doc => Doc.RunCachedUpdate(doc, field));
+ delete docsWithUpdates[field];
+ }
+ }
+ }
+
+ export function getFieldWriteMode(field: string) {
+ return fieldWriteModes[field];
+ }
+
+ export function registerDocWithCachedUpdate(doc: Doc, field: string) {
+ let list = docsWithUpdates[field];
+ if (!list) {
+ list = docsWithUpdates[field] = [];
+ }
+ list.push(doc);
+ }
+
export function init(protocol: string, hostname: string, port: number, identifier: string) {
_cache = {};
GUID = identifier;