import { createApp } from 'vue' import App from './App.vue' import router from './router' import pinia from './store' import { getLaunchParams, onNativeMessage, UniEvents } from '@/utils/uniapp-bridge' import { useAvatarStore } from '@/store/avatar' import { useUserStore } from '@/store/user' import { setAuthToken } from '@/api' const app = createApp(App) app.use(router) app.use(pinia) // —— 混合架构:在挂载前注入 uniapp 壳传入的认证与会会资料 —— const params = getLaunchParams() const avatarStore = useAvatarStore(pinia) const userStore = useUserStore(pinia) // 恢复本地短信登录会话(会会 userId ↔ 本系统用户) userStore.loadFromStorage() if (userStore.isLogin && userStore.user) { setAuthToken(userStore.token) avatarStore.setNativeProfile({ userId: (userStore.user as any).huihuiUserId || '', nickname: userStore.user.nickname || '', avatarUrl: userStore.user.avatarUrl || '' }) } if (params.token) { setAuthToken(params.token) } if (params.userId || params.nickname || params.avatar) { avatarStore.setNativeProfile({ userId: params.userId || '', nickname: params.nickname || '', avatarUrl: params.avatar || '' }) } // 原生 → H5:注册消息处理(壳通过 web-view.evalJS 调用) onNativeMessage((msg) => { if (!msg || !msg.type) return if (msg.type === 'tokenRefresh' && msg.token) { setAuthToken(msg.token) } if (msg.type === 'userUpdate' && msg.user) { avatarStore.setNativeProfile(msg.user) } }) app.mount('#app') // 通知原生壳:H5 已就绪 UniEvents.ready()