aboutsummaryrefslogtreecommitdiff
path: root/src/client/DocServer.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/DocServer.ts')
-rw-r--r--src/client/DocServer.ts12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/client/DocServer.ts b/src/client/DocServer.ts
index 8e9f7865b..a288d394a 100644
--- a/src/client/DocServer.ts
+++ b/src/client/DocServer.ts
@@ -3,7 +3,7 @@ import { MessageStore } from "./../server/Message";
import { Opt } from '../new_fields/Doc';
import { Utils } from '../Utils';
import { SerializationHelper } from './util/SerializationHelper';
-import { RefField, HandleUpdate } from '../new_fields/RefField';
+import { RefField, HandleUpdate, Id } from '../new_fields/RefField';
export namespace DocServer {
const _cache: { [id: string]: RefField | Promise<Opt<RefField>> } = {};
@@ -23,6 +23,9 @@ export namespace DocServer {
if (cached === undefined) {
const prom = Utils.EmitCallback(_socket, MessageStore.GetRefField, id).then(fieldJson => {
const field = SerializationHelper.Deserialize(fieldJson);
+ if (_cache[id] !== undefined && !(_cache[id] instanceof Promise)) {
+ id;
+ }
if (field !== undefined) {
_cache[id] = field;
} else {
@@ -87,10 +90,9 @@ export namespace DocServer {
Utils.Emit(_socket, MessageStore.UpdateField, { id, diff });
}
- export function CreateField(initialState: any) {
- if (!("id" in initialState)) {
- throw new Error("Can't create a field on the server without an id");
- }
+ export function CreateField(field: RefField) {
+ _cache[field[Id]] = field;
+ const initialState = SerializationHelper.Serialize(field);
Utils.Emit(_socket, MessageStore.CreateField, initialState);
}