feat(files): expose Files router

Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
This commit is contained in:
John Molakvoæ 2023-04-20 09:06:34 +02:00
parent bb4d7969b9
commit 0a2a1b4b52
No known key found for this signature in database
GPG Key ID: 60C25B8C072916CF
8 changed files with 96 additions and 19 deletions

View File

@ -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

View File

@ -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 SettingsModel from './models/Setting.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'
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)

View File

@ -20,7 +20,7 @@
*
*/
import { Node } from '@nextcloud/files'
import type { Node } from '@nextcloud/files'
import logger from '../logger'
declare global {

View File

@ -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)
}
}

4
dist/files-main.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -50,7 +50,7 @@ module.exports = {
},
files: {
sidebar: path.join(__dirname, 'apps/files/src', 'sidebar.js'),
main: path.join(__dirname, 'apps/files/src', 'main.js'),
main: path.join(__dirname, 'apps/files/src', 'main.ts'),
'personal-settings': path.join(__dirname, 'apps/files/src', 'main-personal-settings.js'),
'reference-files': path.join(__dirname, 'apps/files/src', 'reference-files.js'),
},