aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTyler Schicke <tyler_schicke@brown.edu>2019-05-02 03:29:02 -0400
committerTyler Schicke <tyler_schicke@brown.edu>2019-05-02 03:29:02 -0400
commitad9111cdef77795b2eca57b62d203c21cfef3357 (patch)
tree2e5f7714118ad1d506bf09e7d723a6d311c2d38f /src
parent2c1cf7fd3e1d71813f23f60acb9264a4f8bf33b0 (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.ts12
-rw-r--r--src/client/documents/Documents.ts2
-rw-r--r--src/client/views/collections/CollectionDockingView.tsx4
-rw-r--r--src/new_fields/Doc.ts2
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;
}