mirror of
https://github.com/koel/koel
synced 2024-12-25 12:03:06 +00:00
29 lines
949 B
TypeScript
29 lines
949 B
TypeScript
import { RouterKey } from '@/symbols'
|
|
import { requireInjection } from '@/utils'
|
|
import Router from '@/router'
|
|
|
|
let router: Router
|
|
|
|
export const useRouter = () => {
|
|
router = router || requireInjection(RouterKey)
|
|
|
|
const getRouteParam = (name: string) => router.$currentRoute.value?.params?.[name]
|
|
const getCurrentScreen = () => router.$currentRoute.value?.screen
|
|
const isCurrentScreen = (...screens: ScreenName[]) => screens.includes(router.$currentRoute.value?.screen!)
|
|
|
|
const onScreenActivated = (screen: ScreenName, cb: Closure) => {
|
|
isCurrentScreen(screen) && cb()
|
|
router.onRouteChanged(route => route.screen === screen && cb())
|
|
}
|
|
|
|
return {
|
|
getRouteParam,
|
|
getCurrentScreen,
|
|
isCurrentScreen,
|
|
onScreenActivated,
|
|
go: router.go.bind(router),
|
|
onRouteChanged: router.onRouteChanged.bind(router),
|
|
resolveRoute: router.resolve.bind(router),
|
|
triggerNotFound: router.triggerNotFound.bind(router)
|
|
}
|
|
}
|