refactor(files): Make RouterService provide a protected getter for the router to allow injecting the files_sharing router

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
This commit is contained in:
Ferdinand Thiessen 2024-06-18 11:56:07 +02:00
parent 82a7a3971d
commit f109c1a044
No known key found for this signature in database
GPG key ID: 45FAE7268762B400
2 changed files with 17 additions and 16 deletions

View file

@ -50,6 +50,6 @@ Object.assign(window.OCA.Files.Settings, { Setting: SettingsModel })
const FilesAppVue = Vue.extend(FilesApp)
new FilesAppVue({
router: window.OCP.Files.Router.router,
router: (window.OCP.Files.Router as RouterService)._router,
pinia,
}).$mount('#content')

View file

@ -2,36 +2,37 @@
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { Route } from 'vue-router'
import type { Route, Location } from 'vue-router'
import type VueRouter from 'vue-router'
import type { Dictionary, Location } from 'vue-router/types/router'
export default class RouterService {
private _router: VueRouter
// typescript compiles this to `#router` to make it private even in JS,
// but in TS it needs to be called without the visibility specifier
private router: VueRouter
constructor(router: VueRouter) {
this._router = router
this.router = router
}
get name(): string | null | undefined {
return this._router.currentRoute.name
return this.router.currentRoute.name
}
get query(): Dictionary<string | (string | null)[] | null | undefined> {
return this._router.currentRoute.query || {}
get query(): Record<string, string | (string | null)[] | null | undefined> {
return this.router.currentRoute.query || {}
}
get params(): Dictionary<string> {
return this._router.currentRoute.params || {}
get params(): Record<string, string> {
return this.router.currentRoute.params || {}
}
/**
* This is a protected getter only for internal use
* @private
*/
get router() {
return this._router
get _router() {
return this.router
}
/**
@ -42,7 +43,7 @@ export default class RouterService {
* @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location
*/
goTo(path: string, replace = false): Promise<Route> {
return this._router.push({
return this.router.push({
path,
replace,
})
@ -59,11 +60,11 @@ export default class RouterService {
*/
goToRoute(
name?: string,
params?: Dictionary<string>,
query?: Dictionary<string | (string | null)[] | null | undefined>,
params?: Record<string, string>,
query?: Record<string, string | (string | null)[] | null | undefined>,
replace?: boolean,
): Promise<Route> {
return this._router.push({
return this.router.push({
name,
query,
params,