diff --git a/package-lock.json b/package-lock.json index 7d0634764..b64a575eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "trilium", - "version": "0.45.4", + "version": "0.45.5", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -2638,9 +2638,9 @@ } }, "electron": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/electron/-/electron-9.3.4.tgz", - "integrity": "sha512-OHP8qMKgW8D8GtH+altB22WJw/lBOyyVdoz5e8D0/iPBmJU3Jm93vO4z4Eh/9DvdSXlH8bMHUCMLL9PVW6f+tw==", + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/electron/-/electron-9.3.5.tgz", + "integrity": "sha512-EPmDsp7sO0UPtw7nLD1ufse/nBskP+ifXzBgUg9psCUlapkzuwYi6pmLAzKLW/bVjwgyUKwh1OKWILWfOeLGcQ==", "dev": true, "requires": { "@electron/get": "^1.0.1", diff --git a/package.json b/package.json index d3748689c..42815b78c 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ }, "devDependencies": { "cross-env": "7.0.2", - "electron": "9.3.4", + "electron": "9.3.5", "electron-builder": "22.9.1", "electron-packager": "15.1.0", "electron-rebuild": "2.3.2", diff --git a/src/routes/api/link_map.js b/src/routes/api/link_map.js index e5fb0a8d6..707941881 100644 --- a/src/routes/api/link_map.js +++ b/src/routes/api/link_map.js @@ -3,15 +3,33 @@ const sql = require('../../services/sql'); function getRelations(noteIds) { - return (sql.getManyRows(` - SELECT noteId, name, value AS targetNoteId - FROM attributes - WHERE (noteId IN (???) OR value IN (???)) - AND type = 'relation' - AND isDeleted = 0 - AND noteId != '' - AND value != '' - `, Array.from(noteIds))); + noteIds = Array.from(noteIds); + + return [ + // first read all non-image relations + ...sql.getManyRows(` + SELECT noteId, name, value AS targetNoteId + FROM attributes + WHERE (noteId IN (???) OR value IN (???)) + AND type = 'relation' + AND name != 'imageLink' + AND isDeleted = 0 + AND noteId != '' + AND value != ''`, noteIds), + // ... then read only imageLink relations which are not connecting parent and child + // this is done to not show image links in the trivial case where they are direct children of the note to which they are included. Same heuristic as in note tree + ...sql.getManyRows(` + SELECT rel.noteId, rel.name, rel.value AS targetNoteId + FROM attributes AS rel + LEFT JOIN branches ON branches.parentNoteId = rel.noteId AND branches.noteId = rel.value AND branches.isDeleted = 0 + WHERE (rel.noteId IN (???) OR rel.value IN (???)) + AND rel.type = 'relation' + AND rel.name = 'imageLink' + AND rel.isDeleted = 0 + AND rel.noteId != '' + AND rel.value != '' + AND branches.branchId IS NULL`, noteIds) + ]; } function getLinkMap(req) {