From 08cba1e1ce5d711bcdb9036f8548e8371199aa9f Mon Sep 17 00:00:00 2001 From: zadam Date: Sun, 14 Feb 2021 11:43:31 +0100 Subject: [PATCH] fixed "duplicate subtree" --- src/entities/entity.js | 2 +- src/public/app/services/server.js | 35 +++++++++++++------ .../app/widgets/type_widgets/editable_text.js | 11 +++--- .../widgets/type_widgets/read_only_text.js | 3 +- src/routes/electron.js | 4 ++- src/services/notes.js | 5 ++- 6 files changed, 39 insertions(+), 21 deletions(-) diff --git a/src/entities/entity.js b/src/entities/entity.js index 1bb652583..f24f2d1b1 100644 --- a/src/entities/entity.js +++ b/src/entities/entity.js @@ -41,7 +41,7 @@ class Entity { } getUtcDateChanged() { - return this.utcDateModified || this.utcDateCreated; + return this.utcDateModified; } get repository() { diff --git a/src/public/app/services/server.js b/src/public/app/services/server.js index 59ffe8aee..0abde554a 100644 --- a/src/public/app/services/server.js +++ b/src/public/app/services/server.js @@ -47,6 +47,7 @@ async function remove(url, sourceId) { let i = 1; const reqResolves = {}; +const reqRejects = {}; let maxKnownEntityChangeId = 0; @@ -63,6 +64,7 @@ async function call(method, url, data, headers = {}) { resp = await new Promise((resolve, reject) => { reqResolves[requestId] = resolve; + reqRejects[requestId] = reject; if (REQUEST_LOGGING_ENABLED) { console.log(utils.now(), "Request #" + requestId + " to " + method + " " + url); @@ -96,6 +98,14 @@ async function call(method, url, data, headers = {}) { return resp.body; } +async function reportError(method, url, status, error) { + const message = "Error when calling " + method + " " + url + ": " + status + " - " + error; + + const toastService = (await import("./toast.js")).default; + toastService.showError(message); + toastService.throwError(message); +} + function ajax(url, method, data, headers) { return new Promise((res, rej) => { const options = { @@ -117,11 +127,8 @@ function ajax(url, method, data, headers) { headers: respHeaders }); }, - error: async (jqXhr, textStatus, error) => { - const message = "Error when calling " + method + " " + url + ": " + textStatus + " - " + error; - const toastService = (await import("./toast.js")).default; - toastService.showError(message); - toastService.throwError(message); + error: async (jqXhr, status, error) => { + await reportError(method, url, status, error); rej(error); } @@ -143,17 +150,25 @@ function ajax(url, method, data, headers) { if (utils.isElectron()) { const ipc = utils.dynamicRequire('electron').ipcRenderer; - ipc.on('server-response', (event, arg) => { + ipc.on('server-response', async (event, arg) => { if (REQUEST_LOGGING_ENABLED) { console.log(utils.now(), "Response #" + arg.requestId + ": " + arg.statusCode); } - reqResolves[arg.requestId]({ - body: arg.body, - headers: arg.headers - }); + if (arg.statusCode >= 200 && arg.statusCode < 300) { + reqResolves[arg.requestId]({ + body: arg.body, + headers: arg.headers + }); + } + else { + await reportError(arg.method, arg.url, arg.statusCode, arg.body); + + reqRejects[arg.requestId](); + } delete reqResolves[arg.requestId]; + delete reqRejects[arg.requestId]; }); } diff --git a/src/public/app/widgets/type_widgets/editable_text.js b/src/public/app/widgets/type_widgets/editable_text.js index 93b0f984c..f7f33c079 100644 --- a/src/public/app/widgets/type_widgets/editable_text.js +++ b/src/public/app/widgets/type_widgets/editable_text.js @@ -30,6 +30,12 @@ const mentionSetup = { const TPL = `