diff --git a/package-lock.json b/package-lock.json index aada1e079..93d666ee1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -404,6 +404,29 @@ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==" }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, "@types/node": { "version": "10.12.21", "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.21.tgz", @@ -1042,7 +1065,7 @@ }, "bl": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "resolved": "http://registry.npmjs.org/bl/-/bl-1.2.2.tgz", "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", "requires": { "readable-stream": "^2.3.5", @@ -1988,6 +2011,15 @@ "which": "^1.2.9" } }, + "cross-spawn-promise": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/cross-spawn-promise/-/cross-spawn-promise-0.10.1.tgz", + "integrity": "sha1-25y0xQxgtyoVvgSbeBIs44LYexA=", + "dev": true, + "requires": { + "cross-spawn": "^5.1.0" + } + }, "crypto-random-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", @@ -2906,6 +2938,48 @@ "resolved": "https://registry.npmjs.org/electron-in-page-search/-/electron-in-page-search-1.3.2.tgz", "integrity": "sha512-gHZtUV3t5g3UXndAOUC+QM0ZzvB43mtKvba4zig65SsOnYqu1G5SMeRq41OIKnDftZN8iXD0NgTzuK3fWh4F8g==" }, + "electron-installer-common": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/electron-installer-common/-/electron-installer-common-0.5.0.tgz", + "integrity": "sha512-BNIPjCI4LB+I0f5gK+1+NVxM9Hez8xLck48yKr6yosyze5S2p0K87QvNGZu8KBY8+X32RcHeI5Dfdyt+NK+fnw==", + "dev": true, + "requires": { + "asar": "^0.14.6", + "cross-spawn-promise": "^0.10.1", + "fs-extra": "^7.0.1", + "glob": "^7.1.3", + "glob-promise": "^3.4.0", + "lodash": "^4.17.11", + "parse-author": "^2.0.0", + "semver": "^5.6.0", + "tmp-promise": "^1.0.5" + } + }, + "electron-installer-debian": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/electron-installer-debian/-/electron-installer-debian-1.1.0.tgz", + "integrity": "sha512-PqWNjVBsfjHiyCYxWBB4W22wSS1DpDfwmAhRsCA2W/0NtOE2yQrnnOrIOC77TcmxY2HmsNlv+n0Aabp8O6b0SA==", + "dev": true, + "requires": { + "debug": "^4.0.1", + "electron-installer-common": "^0.5.0", + "fs-extra": "^7.0.0", + "get-folder-size": "^2.0.0", + "lodash": "^4.17.4", + "pify": "^4.0.0", + "semver": "^5.4.1", + "word-wrap": "^1.2.3", + "yargs": "^12.0.2" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, "electron-is-accelerator": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/electron-is-accelerator/-/electron-is-accelerator-0.1.2.tgz", @@ -4390,9 +4464,9 @@ } }, "file-type": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.7.1.tgz", - "integrity": "sha512-kUc4EE9q3MH6kx70KumPOvXLZLEJZzY9phEVg/bKWyGZ+OA9KoKZzFR4HS0yDmNv31sJkdf4hbTERIfplF9OxQ==" + "version": "10.8.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-10.8.0.tgz", + "integrity": "sha512-287YScp3cpRWzhM+/E+A85O4FJi4dHus0eA6eBUzkRc08d/JAwqeczU/nwLstRuzzq/S7TqvQg9mhv7xVsdINQ==" }, "filename-regex": { "version": "2.0.1", @@ -4811,6 +4885,12 @@ } } }, + "gar": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/gar/-/gar-1.0.4.tgz", + "integrity": "sha512-w4n9cPWyP7aHxKxYHFQMegj7WIAsL/YX/C4Bs5Rr8s1H9M1rNtRWRsw+ovYMkXDQ5S4ZbYHsHAPmevPjPgw44w==", + "dev": true + }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", @@ -4839,6 +4919,16 @@ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", "dev": true }, + "get-folder-size": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/get-folder-size/-/get-folder-size-2.0.1.tgz", + "integrity": "sha512-+CEb+GDCM7tkOS2wdMKTn9vU7DgnKUTuDlehkNJKNSovdCOVxs14OfKCk4cvSaR3za4gj+OBdl9opPN9xrJ0zA==", + "dev": true, + "requires": { + "gar": "^1.0.4", + "tiny-each-async": "2.0.3" + } + }, "get-package-info": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-package-info/-/get-package-info-1.0.0.tgz", @@ -5041,6 +5131,15 @@ } } }, + "glob-promise": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/glob-promise/-/glob-promise-3.4.0.tgz", + "integrity": "sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw==", + "dev": true, + "requires": { + "@types/glob": "*" + } + }, "glob-stream": { "version": "5.3.5", "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", @@ -7931,7 +8030,7 @@ }, "semver": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "resolved": "http://registry.npmjs.org/semver/-/semver-5.3.0.tgz", "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", "dev": true }, @@ -11257,6 +11356,12 @@ "resolved": "https://registry.npmjs.org/timm/-/timm-1.6.1.tgz", "integrity": "sha512-hqDTYi/bWuDxL2i6T3v6nrvkAQ/1Bc060GSkVEQZp02zTSTB4CHSKsOkliequCftQaNRcjRqUZmpGWs5FfhrNg==" }, + "tiny-each-async": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tiny-each-async/-/tiny-each-async-2.0.3.tgz", + "integrity": "sha1-jru/1tYpXxNwAD+7NxYq/loKUdE=", + "dev": true + }, "tinycolor2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", @@ -11271,6 +11376,27 @@ "os-tmpdir": "~1.0.1" } }, + "tmp-promise": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-1.0.5.tgz", + "integrity": "sha512-hOabTz9Tp49wCozFwuJe5ISrOqkECm6kzw66XTP23DuzNU7QS/KiZq5LC9Y7QSy8f1rPSLy4bKaViP0OwGI1cA==", + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "tmp": "0.0.33" + }, + "dependencies": { + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + } + } + }, "to-absolute-glob": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz", @@ -11959,6 +12085,12 @@ "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", "dev": true }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", diff --git a/package.json b/package.json index 5c044f075..3c6d6a918 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "electron-window-state": "^5.0.3", "express": "4.16.4", "express-session": "1.15.6", - "file-type": "10.7.1", + "file-type": "10.8.0", "fs-extra": "7.0.1", "get-port": "4.1.0", "helmet": "3.15.1", @@ -73,6 +73,7 @@ "electron": "4.0.3", "electron-builder": "20.38.5", "electron-compile": "6.4.4", + "electron-installer-debian": "^1.1.0", "electron-packager": "13.0.1", "electron-rebuild": "1.8.4", "lorem-ipsum": "1.0.6", diff --git a/src/routes/api/sender.js b/src/routes/api/sender.js index ae260d6a2..4c1fee9da 100644 --- a/src/routes/api/sender.js +++ b/src/routes/api/sender.js @@ -38,26 +38,17 @@ async function uploadImage(req) { const parentNote = await dateNoteService.getDateNote(req.headers['x-local-date']); - const {note} = await noteService.createNewNote(parentNote.noteId, { - title: "Sender image", - content: "", - target: 'into', - isProtected: false, - type: 'text', - mime: 'text/html' - }); + const {noteId} = await imageService.saveImage(file.buffer, "Sender image", parentNote.noteId); - const {url} = await imageService.saveImage(file, null, note.noteId); - - const content = ``; - - await sql.execute("UPDATE notes SET content = ? WHERE noteId = ?", [content, note.noteId]); + return { + noteId: noteId + }; } async function saveNote(req) { const parentNote = await dateNoteService.getDateNote(req.headers['x-local-date']); - await noteService.createNewNote(parentNote.noteId, { + const {note, branch} = await noteService.createNewNote(parentNote.noteId, { title: req.body.title, content: req.body.content, target: 'into', @@ -65,6 +56,11 @@ async function saveNote(req) { type: 'text', mime: 'text/html' }); + + return { + noteId: note.noteId, + branchId: branch.branchId + }; } module.exports = { diff --git a/src/routes/routes.js b/src/routes/routes.js index e34923f53..b842c20dd 100644 --- a/src/routes/routes.js +++ b/src/routes/routes.js @@ -197,7 +197,7 @@ function register(app) { apiRoute(GET, '/api/script/relation/:noteId/:relationName', scriptRoute.getRelationBundles); route(POST, '/api/sender/login', [], senderRoute.login, apiResultHandler); - route(POST, '/api/sender/image', [auth.checkSenderToken], senderRoute.uploadImage, apiResultHandler); + route(POST, '/api/sender/image', [auth.checkSenderToken, uploadMiddleware], senderRoute.uploadImage, apiResultHandler); route(POST, '/api/sender/note', [auth.checkSenderToken], senderRoute.saveNote, apiResultHandler); apiRoute(GET, '/api/search/:searchString', searchRoute.searchNotes);