diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/files/src/components/FilesListHeaderActions.vue | 2 | ||||
-rw-r--r-- | apps/files/src/main.ts (renamed from apps/files/src/main.js) | 28 | ||||
-rw-r--r-- | apps/files/src/services/FileAction.ts | 2 | ||||
-rw-r--r-- | apps/files/src/services/RouterService.ts | 71 |
4 files changed, 90 insertions, 13 deletions
diff --git a/apps/files/src/components/FilesListHeaderActions.vue b/apps/files/src/components/FilesListHeaderActions.vue index b86d1f1d80b..a53a1d041bf 100644 --- a/apps/files/src/components/FilesListHeaderActions.vue +++ b/apps/files/src/components/FilesListHeaderActions.vue @@ -168,7 +168,7 @@ export default Vue.extend({ const results = await action.execBatch(this.nodes, this.currentView) // Check if all actions returned null - if (results.filter(result => result !== null).length === 0) { + if (!results.some(result => result !== null)) { // If the actions returned null, we stay silent this.selectionStore.reset() return diff --git a/apps/files/src/main.js b/apps/files/src/main.ts index db1726e3376..976714a8f1f 100644 --- a/apps/files/src/main.js +++ b/apps/files/src/main.ts @@ -1,29 +1,35 @@ import './templates.js' import './legacy/filelistSearch.js' -import './actions/deleteAction.ts' - -import processLegacyFilesViews from './legacy/navigationMapper.js' +import './actions/deleteAction' import Vue from 'vue' import { createPinia, PiniaVuePlugin } from 'pinia' -import NavigationService from './services/Navigation.ts' -import registerPreviewServiceWorker from './services/ServiceWorker.js' - -import NavigationView from './views/Navigation.vue' import FilesListView from './views/FilesList.vue' - -import SettingsService from './services/Settings.js' +import NavigationService from './services/Navigation' +import NavigationView from './views/Navigation.vue' +import processLegacyFilesViews from './legacy/navigationMapper.js' +import registerPreviewServiceWorker from './services/ServiceWorker.js' +import router from './router/router.js' import SettingsModel from './models/Setting.js' +import SettingsService from './services/Settings.js' +import RouterService from './services/RouterService' -import router from './router/router.js' +declare global { + interface Window { + OC: any; + OCA: any; + OCP: any; + } +} // Init private and public Files namespace window.OCA.Files = window.OCA.Files ?? {} window.OCP.Files = window.OCP.Files ?? {} // Expose router -Object.assign(window.OCP.Files, { Router: router }) +const Router = new RouterService(router) +Object.assign(window.OCP.Files, { Router }) // Init Pinia store Vue.use(PiniaVuePlugin) diff --git a/apps/files/src/services/FileAction.ts b/apps/files/src/services/FileAction.ts index 453dbe535ee..94fc7e8ce5f 100644 --- a/apps/files/src/services/FileAction.ts +++ b/apps/files/src/services/FileAction.ts @@ -20,7 +20,7 @@ * */ -import { Node } from '@nextcloud/files' +import type { Node } from '@nextcloud/files' import logger from '../logger' declare global { diff --git a/apps/files/src/services/RouterService.ts b/apps/files/src/services/RouterService.ts new file mode 100644 index 00000000000..978e009514e --- /dev/null +++ b/apps/files/src/services/RouterService.ts @@ -0,0 +1,71 @@ +/** + * @copyright Copyright (c) 2023 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license AGPL-3.0-or-later + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +import type { Route } from 'vue-router'; +import type VueRouter from 'vue-router'; +import type { Dictionary } from 'vue-router/types/router'; +import type { Location } from 'vue-router/types/router'; + +export default class RouterService { + + private _router: VueRouter; + + constructor(router: VueRouter) { + this._router = router + } + + /** + * Trigger a route change on the files app + * + * @param path the url path, eg: '/trashbin?dir=/Deleted' + * @param replace replace the current history + * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location + */ + goTo(path: string, replace: boolean = false): Promise<Route> { + return this._router.push({ + path, + replace, + }) + } + + /** + * Trigger a route change on the files App + * + * @param name the route name + * @param params the route parameters + * @param query the url query parameters + * @param replace replace the current history + * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location + */ + goToRoute( + name?: string, + params?: Dictionary<string>, + query?: Dictionary<string | (string | null)[] | null | undefined>, + replace?: boolean, + ): Promise<Route> { + return this._router.push({ + name, + query, + params, + replace, + } as Location) + } +} |