Skip to content

Commit

Permalink
refactor(files): Make RouterService provide a protected getter for …
Browse files Browse the repository at this point in the history
…the router to allow injecting the `files_sharing` router

Signed-off-by: Ferdinand Thiessen <[email protected]>
  • Loading branch information
susnux committed Jun 18, 2024
1 parent 380de12 commit 7fe567d
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 19 deletions.
9 changes: 5 additions & 4 deletions apps/files/src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,10 @@ __webpack_nonce__ = btoa(getRequestToken())

declare global {
interface Window {
OC: any;
OCA: any;
OCP: any;
OC: Nextcloud.v28.OC
// eslint-disable-next-line @typescript-eslint/no-explicit-any
OCA: Record<string, any>
OCP: Nextcloud.v28.OCP
}
}

Expand Down Expand Up @@ -50,6 +51,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')
31 changes: 16 additions & 15 deletions apps/files/src/services/RouterService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

/**
Expand All @@ -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,
})
Expand All @@ -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,
Expand Down

0 comments on commit 7fe567d

Please sign in to comment.