зеркало из https://github.com/nextcloud/server.git
feat(files): expose Files router
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
This commit is contained in:
Родитель
bb4d7969b9
Коммит
0a2a1b4b52
|
@ -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
|
||||
|
|
|
@ -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)
|
|
@ -20,7 +20,7 @@
|
|||
*
|
||||
*/
|
||||
|
||||
import { Node } from '@nextcloud/files'
|
||||
import type { Node } from '@nextcloud/files'
|
||||
import logger from '../logger'
|
||||
|
||||
declare global {
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -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'),
|
||||
},
|
||||
|
|
Загрузка…
Ссылка в новой задаче