aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/files/src/components/FilesListHeaderActions.vue2
-rw-r--r--apps/files/src/main.ts (renamed from apps/files/src/main.js)28
-rw-r--r--apps/files/src/services/FileAction.ts2
-rw-r--r--apps/files/src/services/RouterService.ts71
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)
+ }
+}