aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/database.ts4
-rw-r--r--src/server/websocket.ts6
2 files changed, 7 insertions, 3 deletions
diff --git a/src/server/database.ts b/src/server/database.ts
index 41bf8b3da..8e0f99a1f 100644
--- a/src/server/database.ts
+++ b/src/server/database.ts
@@ -163,7 +163,7 @@ export namespace Database {
}
public async insert(value: any, collectionName = DocumentsCollection) {
- if (this.db) {
+ if (this.db && value) {
if ("id" in value) {
value._id = value.id;
delete value.id;
@@ -185,7 +185,7 @@ export namespace Database {
newProm = prom ? prom.then(run) : run();
this.currentWrites[id] = newProm;
return newProm;
- } else {
+ } else if (value) {
this.onConnect.push(() => this.insert(value, collectionName));
}
}
diff --git a/src/server/websocket.ts b/src/server/websocket.ts
index 7e3c4da82..4ae97913f 100644
--- a/src/server/websocket.ts
+++ b/src/server/websocket.ts
@@ -277,7 +277,11 @@ export namespace WebSocket {
function addToListField(socket: Socket, diff: Diff, curListItems?: Transferable): void {
diff.diff.$set = diff.diff.$addToSet; delete diff.diff.$addToSet;// convert add to set to a query of the current fields, and then a set of the composition of the new fields with the old ones
const updatefield = Array.from(Object.keys(diff.diff.$set))[0];
- const newListItems = diff.diff.$set[updatefield].fields;
+ const newListItems = diff.diff.$set[updatefield]?.fields;
+ if (!newListItems) {
+ console.log("Error: addToListField - no new list items");
+ return;
+ }
const curList = (curListItems as any)?.fields?.[updatefield.replace("fields.", "")]?.fields.filter((item: any) => item !== undefined) || [];
diff.diff.$set[updatefield].fields = [...curList, ...newListItems.filter((newItem: any) => newItem === null || !curList.some((curItem: any) => curItem.fieldId ? curItem.fieldId === newItem.fieldId : curItem.heading ? curItem.heading === newItem.heading : curItem === newItem))];
const sendBack = diff.diff.length !== diff.diff.$set[updatefield].fields.length;