diff --git a/appinfo/routes.php b/appinfo/routes.php index 1801745c..4389b14e 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -52,6 +52,7 @@ return [ ['name' => 'internal_folders#edit_folder', 'url' => '/folder/{folderId}', 'verb' => 'PUT'], ['name' => 'internal_folders#delete_folder', 'url' => '/folder/{folderId}', 'verb' => 'DELETE'], ['name' => 'internal_folders#hash_folder', 'url' => '/folder/{folderId}/hash', 'verb' => 'GET'], + ['name' => 'internal_bookmark#import_bookmark', 'url' => '/folder/{folder}/import', 'verb' => 'POST'], ['name' => 'internal_folders#get_folder_children', 'url' => '/folder/{folderId}/children', 'verb' => 'GET'], ['name' => 'internal_folders#get_folder_children_order', 'url' => '/folder/{folderId}/childorder', 'verb' => 'GET'], ['name' => 'internal_folders#set_folder_children_order', 'url' => '/folder/{folderId}/childorder', 'verb' => 'PATCH'], diff --git a/lib/Controller/BookmarkController.php b/lib/Controller/BookmarkController.php index 307d60c0..805ccaaf 100644 --- a/lib/Controller/BookmarkController.php +++ b/lib/Controller/BookmarkController.php @@ -631,6 +631,8 @@ class BookmarkController extends ApiController { if ($folder !== null) { $folder = $this->toInternalFolderId($folder); + }else{ + $folder = $this->_getRootFolderId(); } try { diff --git a/lib/Controller/InternalBookmarkController.php b/lib/Controller/InternalBookmarkController.php index 4c509aed..d52d3677 100644 --- a/lib/Controller/InternalBookmarkController.php +++ b/lib/Controller/InternalBookmarkController.php @@ -157,12 +157,12 @@ class InternalBookmarkController extends ApiController { } /** - * + * @param int|null $folder * @return JSONResponse * @NoAdminRequired */ - public function importBookmark() { - return $this->publicController->importBookmark(); + public function importBookmark($folder = null) { + return $this->publicController->importBookmark($folder); } /** diff --git a/lib/Service/FolderService.php b/lib/Service/FolderService.php index 5fd070b6..cb04bab1 100644 --- a/lib/Service/FolderService.php +++ b/lib/Service/FolderService.php @@ -372,13 +372,8 @@ class FolderService { * @throws UnauthorizedAccessError * @throws UserLimitExceededError */ - public function importFile(string $userId, $file, $folder = null): array { + public function importFile(string $userId, $file, $folder): array { $importFolderId = $folder; - if ($folder === null) { - $rootFolder = $this->folderMapper->findRootFolder($userId); - $newFolder = $this->create($this->l10n->t('Imported bookmarks'), $rootFolder->getId()); - $importFolderId = $newFolder->getId(); - } return $this->htmlImporter->importFile($userId, $file, $importFolderId); } } diff --git a/src/components/Settings.vue b/src/components/Settings.vue index adf90fb7..ec11dc85 100644 --- a/src/components/Settings.vue +++ b/src/components/Settings.vue @@ -132,11 +132,11 @@ export default { async onImportSubmit(e) { this.importing = true try { - await this.$store.dispatch(actions.IMPORT_BOOKMARKS, e.target.files[0]) - this.$router.push({ name: this.routes.HOME }) - } finally { - this.importing = false + await this.$store.dispatch(actions.IMPORT_BOOKMARKS, { file: e.target.files[0], folder: this.$route.params.folder }) + } catch (e) { + console.warn(e) } + this.importing = false }, onExport() { window.location diff --git a/src/store/actions.js b/src/store/actions.js index 29f3803f..2ad345b6 100644 --- a/src/store/actions.js +++ b/src/store/actions.js @@ -232,11 +232,11 @@ export default { throw err } }, - [actions.IMPORT_BOOKMARKS]({ commit, dispatch, state }, file) { + [actions.IMPORT_BOOKMARKS]({ commit, dispatch, state }, { file, folder }) { const data = new FormData() data.append('bm_import', file) return axios - .post(url(state, `/bookmark/import`), data) + .post(url(state, `/folder/${folder || -1}/import`), data) .then(response => { if (!response.data || response.data.status !== 'success') { if (response.status === 413) {