diff options
author | Tyler Schicke <tyler_schicke@brown.edu> | 2019-05-02 03:29:02 -0400 |
---|---|---|
committer | Tyler Schicke <tyler_schicke@brown.edu> | 2019-05-02 03:29:02 -0400 |
commit | ad9111cdef77795b2eca57b62d203c21cfef3357 (patch) | |
tree | 2e5f7714118ad1d506bf09e7d723a6d311c2d38f /src | |
parent | 2c1cf7fd3e1d71813f23f60acb9264a4f8bf33b0 (diff) |
Various fixes:
Added a couple missing prototype ids that weren't fetched
Fixed DocServer bug that was affecting docking view
Diffstat (limited to 'src')
-rw-r--r-- | src/client/DocServer.ts | 12 | ||||
-rw-r--r-- | src/client/documents/Documents.ts | 2 | ||||
-rw-r--r-- | src/client/views/collections/CollectionDockingView.tsx | 4 | ||||
-rw-r--r-- | src/new_fields/Doc.ts | 2 |
4 files changed, 10 insertions, 10 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); } diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index 0333f4673..2de389a3c 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -85,7 +85,7 @@ export namespace Docs { const iconProtoId = "iconProto"; export function initProtos(): Promise<void> { - return DocServer.GetRefFields([textProtoId, histoProtoId, collProtoId, pdfProtoId, imageProtoId, videoProtoId, audioProtoId, webProtoId, kvpProtoId]).then(fields => { + return DocServer.GetRefFields([textProtoId, histoProtoId, collProtoId, imageProtoId, webProtoId, kvpProtoId, videoProtoId, audioProtoId, pdfProtoId, iconProtoId]).then(fields => { textProto = fields[textProtoId] as Doc || CreateTextPrototype(); histoProto = fields[histoProtoId] as Doc || CreateHistogramPrototype(); collProto = fields[collProtoId] as Doc || CreateCollectionPrototype(); diff --git a/src/client/views/collections/CollectionDockingView.tsx b/src/client/views/collections/CollectionDockingView.tsx index 2facd404f..014773ab6 100644 --- a/src/client/views/collections/CollectionDockingView.tsx +++ b/src/client/views/collections/CollectionDockingView.tsx @@ -292,9 +292,7 @@ export class CollectionDockingView extends React.Component<SubCollectionViewProp DocServer.GetRefField(tab.contentItem.config.props.documentId).then(async f => runInAction(() => { if (f instanceof Doc) { let docs = Cast(CollectionDockingView.Instance.props.Document.data, listSpec(Doc)); - docs && docs.map((d, i) => d[Id] === f[Id] && docs!.splice(i, 1)); - // bcz: this seems like it should work, but it only does occasionally -- usually I get -1 - // docs && docs.indexOf(f) !== -1 && docs.splice(docs.indexOf(f), 1); + docs && docs.indexOf(f) !== -1 && docs.splice(docs.indexOf(f), 1); } })); tab.contentItem.remove(); diff --git a/src/new_fields/Doc.ts b/src/new_fields/Doc.ts index 8dd293f2d..d3d6ff93a 100644 --- a/src/new_fields/Doc.ts +++ b/src/new_fields/Doc.ts @@ -51,7 +51,7 @@ export class Doc extends RefField { }); this[SelfProxy] = doc; if (!id || forceSave) { - DocServer.CreateField(SerializationHelper.Serialize(doc)); + DocServer.CreateField(doc); } return doc; } |