mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 02:16:05 +01:00 
			
		
		
		
	changed import progress notification so it shows up for drag & drop as well
This commit is contained in:
		| @@ -1,4 +1,4 @@ | ||||
| FROM node:12.11.1-alpine | ||||
| FROM node:12.12.0-alpine | ||||
|  | ||||
| # Create app directory | ||||
| WORKDIR /usr/src/app | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| PKG_DIR=dist/trilium-linux-x64-server-src | ||||
| NODE_VERSION=12.11.1 | ||||
| NODE_VERSION=12.12.0 | ||||
|  | ||||
| if [ "$1" != "DONTCOPY" ] | ||||
| then | ||||
|   | ||||
							
								
								
									
										74
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										74
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -842,7 +842,7 @@ | ||||
|       "dependencies": { | ||||
|         "file-type": { | ||||
|           "version": "3.9.0", | ||||
|           "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", | ||||
|           "resolved": "http://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", | ||||
|           "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" | ||||
|         } | ||||
|       } | ||||
| @@ -1226,7 +1226,7 @@ | ||||
|         }, | ||||
|         "uuid": { | ||||
|           "version": "2.0.3", | ||||
|           "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", | ||||
|           "resolved": "http://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", | ||||
|           "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" | ||||
|         } | ||||
|       } | ||||
| @@ -1260,7 +1260,7 @@ | ||||
|       "dependencies": { | ||||
|         "semver": { | ||||
|           "version": "4.3.6", | ||||
|           "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", | ||||
|           "resolved": "http://registry.npmjs.org/semver/-/semver-4.3.6.tgz", | ||||
|           "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=" | ||||
|         } | ||||
|       } | ||||
| @@ -1280,7 +1280,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", | ||||
| @@ -1465,7 +1465,7 @@ | ||||
|     }, | ||||
|     "buf-compare": { | ||||
|       "version": "1.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", | ||||
|       "resolved": "http://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", | ||||
|       "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", | ||||
|       "dev": true | ||||
|     }, | ||||
| @@ -1525,12 +1525,12 @@ | ||||
|       "dependencies": { | ||||
|         "file-type": { | ||||
|           "version": "3.9.0", | ||||
|           "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", | ||||
|           "resolved": "http://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", | ||||
|           "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" | ||||
|         }, | ||||
|         "uuid": { | ||||
|           "version": "2.0.3", | ||||
|           "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", | ||||
|           "resolved": "http://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", | ||||
|           "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" | ||||
|         } | ||||
|       } | ||||
| @@ -1619,7 +1619,7 @@ | ||||
|         }, | ||||
|         "readable-stream": { | ||||
|           "version": "1.1.14", | ||||
|           "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", | ||||
|           "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", | ||||
|           "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", | ||||
|           "requires": { | ||||
|             "core-util-is": "~1.0.0", | ||||
| @@ -1756,7 +1756,7 @@ | ||||
|     }, | ||||
|     "chalk": { | ||||
|       "version": "1.1.3", | ||||
|       "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", | ||||
|       "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", | ||||
|       "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", | ||||
|       "requires": { | ||||
|         "ansi-styles": "^2.2.1", | ||||
| @@ -2039,7 +2039,7 @@ | ||||
|     }, | ||||
|     "commander": { | ||||
|       "version": "2.8.1", | ||||
|       "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", | ||||
|       "resolved": "http://registry.npmjs.org/commander/-/commander-2.8.1.tgz", | ||||
|       "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", | ||||
|       "requires": { | ||||
|         "graceful-readlink": ">= 1.0.0" | ||||
| @@ -2751,7 +2751,7 @@ | ||||
|         }, | ||||
|         "readable-stream": { | ||||
|           "version": "1.1.14", | ||||
|           "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", | ||||
|           "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", | ||||
|           "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", | ||||
|           "requires": { | ||||
|             "core-util-is": "~1.0.0", | ||||
| @@ -5475,7 +5475,7 @@ | ||||
|     }, | ||||
|     "get-stream": { | ||||
|       "version": "3.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", | ||||
|       "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", | ||||
|       "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" | ||||
|     }, | ||||
|     "get-value": { | ||||
| @@ -5703,7 +5703,7 @@ | ||||
|     }, | ||||
|     "got": { | ||||
|       "version": "5.7.1", | ||||
|       "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", | ||||
|       "resolved": "http://registry.npmjs.org/got/-/got-5.7.1.tgz", | ||||
|       "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", | ||||
|       "requires": { | ||||
|         "create-error-class": "^3.0.1", | ||||
| @@ -6556,7 +6556,7 @@ | ||||
|     }, | ||||
|     "into-stream": { | ||||
|       "version": "3.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", | ||||
|       "resolved": "http://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", | ||||
|       "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", | ||||
|       "requires": { | ||||
|         "from2": "^2.1.1", | ||||
| @@ -6792,7 +6792,7 @@ | ||||
|     }, | ||||
|     "is-obj": { | ||||
|       "version": "1.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", | ||||
|       "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", | ||||
|       "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" | ||||
|     }, | ||||
|     "is-obj-prop": { | ||||
| @@ -7353,7 +7353,7 @@ | ||||
|     }, | ||||
|     "load-json-file": { | ||||
|       "version": "1.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", | ||||
|       "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", | ||||
|       "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", | ||||
|       "requires": { | ||||
|         "graceful-fs": "^4.1.2", | ||||
| @@ -7836,7 +7836,7 @@ | ||||
|     }, | ||||
|     "minimist": { | ||||
|       "version": "1.2.0", | ||||
|       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", | ||||
|       "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", | ||||
|       "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" | ||||
|     }, | ||||
|     "minimist-options": { | ||||
| @@ -7897,7 +7897,7 @@ | ||||
|     }, | ||||
|     "mkdirp": { | ||||
|       "version": "0.5.1", | ||||
|       "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", | ||||
|       "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", | ||||
|       "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", | ||||
|       "requires": { | ||||
|         "minimist": "0.0.8" | ||||
| @@ -7905,7 +7905,7 @@ | ||||
|       "dependencies": { | ||||
|         "minimist": { | ||||
|           "version": "0.0.8", | ||||
|           "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", | ||||
|           "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", | ||||
|           "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" | ||||
|         } | ||||
|       } | ||||
| @@ -8060,7 +8060,7 @@ | ||||
|             }, | ||||
|             "get-stream": { | ||||
|               "version": "3.0.0", | ||||
|               "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", | ||||
|               "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", | ||||
|               "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" | ||||
|             }, | ||||
|             "got": { | ||||
| @@ -8096,7 +8096,7 @@ | ||||
|             }, | ||||
|             "p-cancelable": { | ||||
|               "version": "0.4.1", | ||||
|               "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", | ||||
|               "resolved": "http://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", | ||||
|               "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==" | ||||
|             }, | ||||
|             "p-event": { | ||||
| @@ -8220,7 +8220,7 @@ | ||||
|           "dependencies": { | ||||
|             "file-type": { | ||||
|               "version": "3.9.0", | ||||
|               "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", | ||||
|               "resolved": "http://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", | ||||
|               "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" | ||||
|             } | ||||
|           } | ||||
| @@ -8245,7 +8245,7 @@ | ||||
|           "dependencies": { | ||||
|             "get-stream": { | ||||
|               "version": "3.0.0", | ||||
|               "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", | ||||
|               "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", | ||||
|               "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" | ||||
|             }, | ||||
|             "pify": { | ||||
| @@ -8302,7 +8302,7 @@ | ||||
|         }, | ||||
|         "get-stream": { | ||||
|           "version": "2.3.1", | ||||
|           "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", | ||||
|           "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", | ||||
|           "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", | ||||
|           "requires": { | ||||
|             "object-assign": "^4.0.1", | ||||
| @@ -8332,7 +8332,7 @@ | ||||
|           "dependencies": { | ||||
|             "get-stream": { | ||||
|               "version": "3.0.0", | ||||
|               "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", | ||||
|               "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", | ||||
|               "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" | ||||
|             } | ||||
|           } | ||||
| @@ -8372,7 +8372,7 @@ | ||||
|         }, | ||||
|         "pify": { | ||||
|           "version": "2.3.0", | ||||
|           "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", | ||||
|           "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", | ||||
|           "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" | ||||
|         }, | ||||
|         "prepend-http": { | ||||
| @@ -8504,7 +8504,7 @@ | ||||
|         }, | ||||
|         "readable-stream": { | ||||
|           "version": "1.1.14", | ||||
|           "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", | ||||
|           "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", | ||||
|           "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", | ||||
|           "requires": { | ||||
|             "core-util-is": "~1.0.0", | ||||
| @@ -9052,7 +9052,7 @@ | ||||
|     }, | ||||
|     "onetime": { | ||||
|       "version": "1.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", | ||||
|       "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", | ||||
|       "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" | ||||
|     }, | ||||
|     "open": { | ||||
| @@ -9168,7 +9168,7 @@ | ||||
|     }, | ||||
|     "os-locale": { | ||||
|       "version": "1.4.0", | ||||
|       "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", | ||||
|       "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", | ||||
|       "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
| @@ -9217,7 +9217,7 @@ | ||||
|     }, | ||||
|     "p-is-promise": { | ||||
|       "version": "1.1.0", | ||||
|       "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", | ||||
|       "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", | ||||
|       "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" | ||||
|     }, | ||||
|     "p-limit": { | ||||
| @@ -10401,7 +10401,7 @@ | ||||
|         }, | ||||
|         "readable-stream": { | ||||
|           "version": "1.1.14", | ||||
|           "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", | ||||
|           "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", | ||||
|           "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", | ||||
|           "dev": true, | ||||
|           "requires": { | ||||
| @@ -10494,7 +10494,7 @@ | ||||
|     }, | ||||
|     "query-string": { | ||||
|       "version": "5.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", | ||||
|       "resolved": "http://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", | ||||
|       "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", | ||||
|       "requires": { | ||||
|         "decode-uri-component": "^0.2.0", | ||||
| @@ -10640,7 +10640,7 @@ | ||||
|     }, | ||||
|     "readable-stream": { | ||||
|       "version": "2.3.6", | ||||
|       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", | ||||
|       "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", | ||||
|       "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", | ||||
|       "requires": { | ||||
|         "core-util-is": "~1.0.0", | ||||
| @@ -11714,7 +11714,7 @@ | ||||
|     }, | ||||
|     "strip-ansi": { | ||||
|       "version": "3.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", | ||||
|       "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", | ||||
|       "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", | ||||
|       "requires": { | ||||
|         "ansi-regex": "^2.0.0" | ||||
| @@ -11739,7 +11739,7 @@ | ||||
|     }, | ||||
|     "strip-dirs": { | ||||
|       "version": "1.1.1", | ||||
|       "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-1.1.1.tgz", | ||||
|       "resolved": "http://registry.npmjs.org/strip-dirs/-/strip-dirs-1.1.1.tgz", | ||||
|       "integrity": "sha1-lgu9EoeETzl1pFWKoQOoJV4kVqA=", | ||||
|       "requires": { | ||||
|         "chalk": "^1.0.0", | ||||
| @@ -12005,7 +12005,7 @@ | ||||
|     }, | ||||
|     "through": { | ||||
|       "version": "2.3.8", | ||||
|       "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", | ||||
|       "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", | ||||
|       "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" | ||||
|     }, | ||||
|     "through2": { | ||||
| @@ -12024,7 +12024,7 @@ | ||||
|         }, | ||||
|         "readable-stream": { | ||||
|           "version": "1.0.34", | ||||
|           "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", | ||||
|           "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", | ||||
|           "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", | ||||
|           "requires": { | ||||
|             "core-util-is": "~1.0.0", | ||||
|   | ||||
| @@ -29,6 +29,7 @@ import macInit from './services/mac_init.js'; | ||||
| import cssLoader from './services/css_loader.js'; | ||||
| import dateNoteService from './services/date_notes.js'; | ||||
| import sidebarService from './services/sidebar.js'; | ||||
| import importService from './services/import.js'; | ||||
|  | ||||
| window.glob.isDesktop = utils.isDesktop; | ||||
| window.glob.isMobile = utils.isMobile; | ||||
|   | ||||
| @@ -1,16 +1,11 @@ | ||||
| import treeService from '../services/tree.js'; | ||||
| import utils from '../services/utils.js'; | ||||
| import treeUtils from "../services/tree_utils.js"; | ||||
| import server from "../services/server.js"; | ||||
| import infoService from "../services/info.js"; | ||||
| import ws from "../services/ws.js"; | ||||
| import importService from "../services/import.js"; | ||||
|  | ||||
| const $dialog = $("#import-dialog"); | ||||
| const $form = $("#import-form"); | ||||
| const $noteTitle = $dialog.find(".import-note-title"); | ||||
| const $fileUploadInput = $("#import-file-upload-input"); | ||||
| const $importProgressCountWrapper = $("#import-progress-count-wrapper"); | ||||
| const $importProgressCount = $("#import-progress-count"); | ||||
| const $importButton = $("#import-button"); | ||||
| const $safeImportCheckbox = $("#safe-import-checkbox"); | ||||
| const $shrinkImagesCheckbox = $("#shrink-images-checkbox"); | ||||
| @@ -18,16 +13,11 @@ const $textImportedAsTextCheckbox = $("#text-imported-as-text-checkbox"); | ||||
| const $codeImportedAsCodeCheckbox = $("#code-imported-as-code-checkbox"); | ||||
| const $explodeArchivesCheckbox = $("#explode-archives-checkbox"); | ||||
|  | ||||
| let importId; | ||||
| let importIntoNoteId = null; | ||||
| let parentNoteId = null; | ||||
|  | ||||
| export async function showDialog(node) { | ||||
|     utils.closeActiveDialog(); | ||||
|  | ||||
|     // each opening of the dialog resets the importId so we don't associate it with previous imports anymore | ||||
|     importId = ''; | ||||
|     $importProgressCountWrapper.hide(); | ||||
|     $importProgressCount.text('0'); | ||||
|     $fileUploadInput.val('').change(); // to trigger Import button disabling listener below | ||||
|  | ||||
|     $safeImportCheckbox.prop("checked", true); | ||||
| @@ -38,9 +28,9 @@ export async function showDialog(node) { | ||||
|  | ||||
|     glob.activeDialog = $dialog; | ||||
|  | ||||
|     importIntoNoteId = node.data.noteId; | ||||
|     parentNoteId = node.data.noteId; | ||||
|  | ||||
|     $noteTitle.text(await treeUtils.getNoteTitle(importIntoNoteId)); | ||||
|     $noteTitle.text(await treeUtils.getNoteTitle(parentNoteId)); | ||||
|  | ||||
|     $dialog.modal(); | ||||
| } | ||||
| @@ -49,18 +39,14 @@ $form.submit(() => { | ||||
|     // disabling so that import is not triggered again. | ||||
|     $importButton.attr("disabled", "disabled"); | ||||
|  | ||||
|     importIntoNote(importIntoNoteId); | ||||
|     importIntoNote(parentNoteId); | ||||
|  | ||||
|     return false; | ||||
| }); | ||||
|  | ||||
| async function importIntoNote(importNoteId) { | ||||
| async function importIntoNote(parentNoteId) { | ||||
|     const files = Array.from($fileUploadInput[0].files); // shallow copy since we're resetting the upload button below | ||||
|  | ||||
|     // we generate it here (and not on opening) for the case when you try to import multiple times from the same | ||||
|     // dialog (which shouldn't happen, but still ...) | ||||
|     importId = utils.randomString(10); | ||||
|  | ||||
|     const options = { | ||||
|         safeImport: boolToString($safeImportCheckbox), | ||||
|         shrinkImages: boolToString($shrinkImagesCheckbox), | ||||
| @@ -69,73 +55,15 @@ async function importIntoNote(importNoteId) { | ||||
|         explodeArchives: boolToString($explodeArchivesCheckbox) | ||||
|     }; | ||||
|  | ||||
|     await uploadFiles(importNoteId, files, options); | ||||
|  | ||||
|     $dialog.modal('hide'); | ||||
| } | ||||
|  | ||||
| export async function uploadFiles(importNoteId, files, options) { | ||||
|     if (files.length === 0) { | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     let noteId; | ||||
|  | ||||
|     for (const file of files) { | ||||
|         const formData = new FormData(); | ||||
|         formData.append('upload', file); | ||||
|         formData.append('importId', importId); | ||||
|  | ||||
|         for (const key in options) { | ||||
|             formData.append(key, options[key]); | ||||
|         } | ||||
|  | ||||
|         ({noteId} = await $.ajax({ | ||||
|             url: baseApiUrl + 'notes/' + importNoteId + '/import', | ||||
|             headers: server.getHeaders(), | ||||
|             data: formData, | ||||
|             dataType: 'json', | ||||
|             type: 'POST', | ||||
|             timeout: 60 * 60 * 1000, | ||||
|             contentType: false, // NEEDED, DON'T REMOVE THIS | ||||
|             processData: false, // NEEDED, DON'T REMOVE THIS | ||||
|         })); | ||||
|     } | ||||
|  | ||||
|     infoService.showMessage("Import finished successfully."); | ||||
|  | ||||
|     await treeService.reloadNote(importNoteId); | ||||
|  | ||||
|     if (noteId) { | ||||
|         const node = await treeService.activateNote(noteId); | ||||
|  | ||||
|         node.setExpanded(true); | ||||
|     } | ||||
|     await importService.uploadFiles(parentNoteId, files, options); | ||||
| } | ||||
|  | ||||
| function boolToString($el) { | ||||
|     return $el.is(":checked") ? "true" : "false"; | ||||
| } | ||||
|  | ||||
| ws.subscribeToMessages(async message => { | ||||
|     if (message.type === 'import-error') { | ||||
|         infoService.showError(message.message); | ||||
|         $dialog.modal('hide'); | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     if (!message.importId || message.importId !== importId) { | ||||
|         // incoming messages must correspond to this import instance | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     if (message.type === 'import-progress-count') { | ||||
|         $importProgressCountWrapper.slideDown(); | ||||
|  | ||||
|         $importProgressCount.text(message.progressCount); | ||||
|     } | ||||
| }); | ||||
|  | ||||
| $fileUploadInput.change(() => { | ||||
|     if ($fileUploadInput.val()) { | ||||
|         $importButton.removeAttr("disabled"); | ||||
|   | ||||
| @@ -30,9 +30,9 @@ const dragAndDropSetup = { | ||||
|         if (dataTransfer && dataTransfer.files && dataTransfer.files.length > 0) { | ||||
|             const files = [...dataTransfer.files]; // chrome has issue that dataTransfer.files empties after async operation | ||||
|  | ||||
|             const importDialog = await import('../dialogs/import.js'); | ||||
|             const importService = await import('./import.js'); | ||||
|  | ||||
|             importDialog.uploadFiles(node.data.noteId, files, { | ||||
|             importService.uploadFiles(node.data.noteId, files, { | ||||
|                 safeImport: true, | ||||
|                 shrinkImages: true, | ||||
|                 textImportedAsText: true, | ||||
|   | ||||
							
								
								
									
										66
									
								
								src/public/javascripts/services/import.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								src/public/javascripts/services/import.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,66 @@ | ||||
| import infoService from "./info.js"; | ||||
| import treeService from "./tree.js"; | ||||
| import server from "./server.js"; | ||||
| import ws from "./ws.js"; | ||||
| import utils from "./utils.js"; | ||||
|  | ||||
| export async function uploadFiles(parentNoteId, files, options) { | ||||
|     if (files.length === 0) { | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     const importId = utils.randomString(10); | ||||
|     let noteId; | ||||
|     let counter = 0; | ||||
|  | ||||
|     for (const file of files) { | ||||
|         counter++; | ||||
|  | ||||
|         const formData = new FormData(); | ||||
|         formData.append('upload', file); | ||||
|         formData.append('importId', importId); | ||||
|         formData.append('last', counter === files.length ? "true" : "false"); | ||||
|  | ||||
|         for (const key in options) { | ||||
|             formData.append(key, options[key]); | ||||
|         } | ||||
|  | ||||
|         ({noteId} = await $.ajax({ | ||||
|             url: baseApiUrl + 'notes/' + parentNoteId + '/import', | ||||
|             headers: server.getHeaders(), | ||||
|             data: formData, | ||||
|             dataType: 'json', | ||||
|             type: 'POST', | ||||
|             timeout: 60 * 60 * 1000, | ||||
|             contentType: false, // NEEDED, DON'T REMOVE THIS | ||||
|             processData: false, // NEEDED, DON'T REMOVE THIS | ||||
|         })); | ||||
|     } | ||||
| } | ||||
|  | ||||
| ws.subscribeToMessages(async message => { | ||||
|     if (message.type === 'import-error') { | ||||
|         infoService.showError(message.message); | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     if (message.type === 'import-progress-count') { | ||||
|         infoService.showMessage("Import in progress: " + message.progressCount, 1000); | ||||
|     } | ||||
|  | ||||
|     if (message.type === 'import-succeeded') { | ||||
|         infoService.showMessage("Import finished successfully.", 5000); | ||||
|  | ||||
|         await treeService.reloadNote(message.parentNoteId); | ||||
|  | ||||
|         if (message.importedNoteId) { | ||||
|             const node = await treeService.activateNote(message.importedNoteId); | ||||
|  | ||||
|             node.setExpanded(true); | ||||
|         } | ||||
|     } | ||||
| }); | ||||
|  | ||||
| export default { | ||||
|     uploadFiles | ||||
| } | ||||
| @@ -1,13 +1,13 @@ | ||||
| import ws from "./ws.js"; | ||||
| import utils from "./utils.js"; | ||||
|  | ||||
| function showMessage(message) { | ||||
| function showMessage(message, delay = 3000) { | ||||
|     console.debug(utils.now(), "message: ", message); | ||||
|  | ||||
|     $.notify({ | ||||
|         icon: 'jam jam-check', | ||||
|         message: message | ||||
|     }, getNotifySettings('success', 3000)); | ||||
|     }, getNotifySettings('success', delay)); | ||||
| } | ||||
|  | ||||
| function showAndLogError(message, delay = 10000) { | ||||
|   | ||||
| @@ -345,9 +345,9 @@ $tabContentsContainer.on("drop", async e => { | ||||
|  | ||||
|     const files = [...e.originalEvent.dataTransfer.files]; // chrome has issue that dataTransfer.files empties after async operation | ||||
|  | ||||
|     const importDialog = await import("../dialogs/import.js"); | ||||
|     const importService = await import("./import.js"); | ||||
|  | ||||
|     importDialog.uploadFiles(activeNote.noteId, files, { | ||||
|     importService.uploadFiles(activeNote.noteId, files, { | ||||
|         safeImport: true, | ||||
|         shrinkImages: true, | ||||
|         textImportedAsText: true, | ||||
|   | ||||
| @@ -1,5 +1,6 @@ | ||||
| import utils from './utils.js'; | ||||
| import infoService from "./info.js"; | ||||
| import treeService from "./tree.js"; | ||||
|  | ||||
| const $outstandingSyncsCount = $("#outstanding-syncs-count"); | ||||
|  | ||||
|   | ||||
| @@ -13,7 +13,7 @@ const ImportContext = require('../../services/import_context'); | ||||
|  | ||||
| async function importToBranch(req) { | ||||
|     const {parentNoteId} = req.params; | ||||
|     const {importId} = req.body; | ||||
|     const {importId, last} = req.body; | ||||
|  | ||||
|     const options = { | ||||
|         safeImport: req.body.safeImport !== 'false', | ||||
| @@ -65,6 +65,11 @@ async function importToBranch(req) { | ||||
|         return [500, message]; | ||||
|     } | ||||
|  | ||||
|     if (last === "true") { | ||||
|         // small timeout to avoid race condition (message is received before the transaction is committed) | ||||
|         setTimeout(() => importContext.importSucceeded(parentNoteId, note.noteId), 1000); | ||||
|     } | ||||
|  | ||||
|     // import has deactivated note events so note cache is not updated | ||||
|     // instead we force it to reload (can be async) | ||||
|     noteCacheService.load(); | ||||
|   | ||||
| @@ -116,11 +116,7 @@ async function importTar(importContext, fileBuffer, importRootNote) { | ||||
|     function getNoteId(noteMeta, filePath) { | ||||
|         const filePathNoExt = getTextFileWithoutExtension(filePath); | ||||
|  | ||||
|         console.log(`Searching for noteId of filePath ${filePath} with meta: ${!!noteMeta}`); | ||||
|  | ||||
|         if (filePathNoExt in createdPaths) { | ||||
|             console.log("Found existing path", filePathNoExt, createdPaths[filePathNoExt]); | ||||
|  | ||||
|             return createdPaths[filePathNoExt]; | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -33,7 +33,7 @@ class ImportContext { | ||||
|     async increaseProgressCount() { | ||||
|         this.progressCount++; | ||||
|  | ||||
|         if (Date.now() - this.lastSentCountTs >= 500) { | ||||
|         if (Date.now() - this.lastSentCountTs >= 1000) { | ||||
|             this.lastSentCountTs = Date.now(); | ||||
|  | ||||
|             await ws.sendMessageToAllClients({ | ||||
| @@ -51,6 +51,15 @@ class ImportContext { | ||||
|             message: message | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     // must remaing non-static | ||||
|     async importSucceeded(parentNoteId, importedNoteId) { | ||||
|         await ws.sendMessageToAllClients({ | ||||
|             type: 'import-succeeded', | ||||
|             parentNoteId: parentNoteId, | ||||
|             importedNoteId: importedNoteId | ||||
|         }); | ||||
|     } | ||||
| } | ||||
|  | ||||
| module.exports = ImportContext; | ||||
| @@ -9,10 +9,6 @@ | ||||
|             </div> | ||||
|             <form id="import-form"> | ||||
|                 <div class="modal-body"> | ||||
|                     <div id="import-progress-count-wrapper" class="alert alert-primary" style="padding: 15px;"> | ||||
|                         <strong>Note import progress count:</strong> <span id="import-progress-count"></span> | ||||
|                     </div> | ||||
|  | ||||
|                     <div class="form-group"> | ||||
|                         <label for="import-file-upload-input"><strong>Choose import file</strong></label> | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user