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' }) } }