From a6cd25071ea6f155fb9acb688e49416e2268efdd Mon Sep 17 00:00:00 2001 From: zadam Date: Sat, 18 Jan 2020 08:48:36 +0100 Subject: [PATCH 1/2] more robust handling of sync error, fixes #830 --- .idea/.gitignore | 3 ++- src/services/notes.js | 2 +- src/services/ws.js | 36 +++++++++++++++++++++++++----------- 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/.idea/.gitignore b/.idea/.gitignore index c0f9e196c..2102c8715 100644 --- a/.idea/.gitignore +++ b/.idea/.gitignore @@ -2,4 +2,5 @@ /workspace.xml # Datasource local storage ignored files -/dataSources.local.xml \ No newline at end of file +/dataSources.local.xml +/dataSources/ diff --git a/src/services/notes.js b/src/services/notes.js index dacf40d62..2715a4eb5 100644 --- a/src/services/notes.js +++ b/src/services/notes.js @@ -277,7 +277,7 @@ async function saveLinks(note, content) { } const foundLinks = []; -console.log("Scanning", content); + if (note.type === 'text') { content = findImageLinks(content, foundLinks); content = findInternalLinks(content, foundLinks); diff --git a/src/services/ws.js b/src/services/ws.js index 1a1a45831..b4703dfc3 100644 --- a/src/services/ws.js +++ b/src/services/ws.js @@ -71,22 +71,36 @@ function sendMessageToAllClients(message) { } } +async function fillInAdditionalProperties(sync) {throw new Error("AAA"); + // fill in some extra data needed by the frontend + if (sync.entityName === 'attributes') { + sync.noteId = await sql.getValue(`SELECT noteId + FROM attributes + WHERE attributeId = ?`, [sync.entityId]); + } else if (sync.entityName === 'note_revisions') { + sync.noteId = await sql.getValue(`SELECT noteId + FROM note_revisions + WHERE noteRevisionId = ?`, [sync.entityId]); + } else if (sync.entityName === 'branches') { + const {noteId, parentNoteId} = await sql.getRow(`SELECT noteId, parentNoteId + FROM branches + WHERE branchId = ?`, [sync.entityId]); + + sync.noteId = noteId; + sync.parentNoteId = parentNoteId; + } +} + async function sendPing(client) { const syncData = require('./sync_table').getEntitySyncsNewerThan(lastAcceptedSyncIds[client.id]); for (const sync of syncData) { - // fill in some extra data needed by the frontend - if (sync.entityName === 'attributes') { - sync.noteId = await sql.getValue(`SELECT noteId FROM attributes WHERE attributeId = ?`, [sync.entityId]); + try { + await fillInAdditionalProperties(sync); } - else if (sync.entityName === 'note_revisions') { - sync.noteId = await sql.getValue(`SELECT noteId FROM note_revisions WHERE noteRevisionId = ?`, [sync.entityId]); - } - else if (sync.entityName === 'branches') { - const {noteId, parentNoteId} = await sql.getRow(`SELECT noteId, parentNoteId FROM branches WHERE branchId = ?`, [sync.entityId]); - - sync.noteId = noteId; - sync.parentNoteId = parentNoteId; + catch (e) { + log.error("Could not fill additional properties for sync " + JSON.stringify(sync) + + " because of error: " + e.message + ": " + e.stack); } } From 0ec11d29ba2d524ff80b49ab8dc40f3f8cf3835b Mon Sep 17 00:00:00 2001 From: zadam Date: Sat, 18 Jan 2020 08:59:46 +0100 Subject: [PATCH 2/2] fix creating root calendar note when missing, #752 --- src/services/date_notes.js | 4 +++- src/services/ws.js | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/services/date_notes.js b/src/services/date_notes.js index d6b1a396b..c71ccb946 100644 --- a/src/services/date_notes.js +++ b/src/services/date_notes.js @@ -40,7 +40,9 @@ async function getRootCalendarNote() { parentNoteId: 'root', title: 'Calendar', target: 'into', - isProtected: false + isProtected: false, + type: 'text', + content: '' })).note; await attributeService.createLabel(rootNote.noteId, CALENDAR_ROOT_LABEL); diff --git a/src/services/ws.js b/src/services/ws.js index b4703dfc3..5eae3f0f7 100644 --- a/src/services/ws.js +++ b/src/services/ws.js @@ -71,7 +71,7 @@ function sendMessageToAllClients(message) { } } -async function fillInAdditionalProperties(sync) {throw new Error("AAA"); +async function fillInAdditionalProperties(sync) { // fill in some extra data needed by the frontend if (sync.entityName === 'attributes') { sync.noteId = await sql.getValue(`SELECT noteId