54 lines
1.2 KiB
TypeScript
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'
|
|
})
|
|
}
|
|
}
|