Files
vueapp/api/navigation.ts
2026-06-09 17:00:23 +08:00

54 lines
1.2 KiB
TypeScript

import { getCurrentInstance } from 'vue'
type OpenProfileEmit = (event: 'open-profile') => void
type OpenSettingsEmit = (event: 'open-settings') => void
type GoHomeEmit = (event: 'go-home') => void
export function createProfileOpener(emit: OpenProfileEmit) {
const instance = getCurrentInstance()
const hasOpenProfileListener = Boolean(instance?.vnode.props?.onOpenProfile)
return function openProfile() {
if (hasOpenProfileListener) {
emit('open-profile')
return
}
uni.navigateTo({
url: '/pages/profile/profile'
})
}
}
export function createSettingsOpener(emit: OpenSettingsEmit) {
const instance = getCurrentInstance()
const hasOpenSettingsListener = Boolean(instance?.vnode.props?.onOpenSettings)
return function openSettings() {
if (hasOpenSettingsListener) {
emit('open-settings')
return
}
uni.navigateTo({
url: '/pages/config/config'
})
}
}
export function createHomeNavigator(emit: GoHomeEmit) {
const instance = getCurrentInstance()
const hasGoHomeListener = Boolean(instance?.vnode.props?.onGoHome)
return function goHome() {
if (hasGoHomeListener) {
emit('go-home')
return
}
uni.reLaunch({
url: '/pages/home/home'
})
}
}