浏览代码

修复异常报错问题

zhengnaiwen_citu 7 月之前
父节点
当前提交
48b7f76edd
共有 4 个文件被更改,包括 39 次插入28 次删除
  1. 27 16
      hooks/useIM.js
  2. 2 1
      layout/components/authModal/login/index.vue
  3. 1 1
      layout/index.vue
  4. 9 10
      store/user.js

+ 27 - 16
hooks/useIM.js

@@ -152,7 +152,7 @@ async function getKey () {
   const useUserStore = userStore()
 
   const keyQuery = {
-    userId: useUserStore.accountInfo.userId
+    userId: useUserStore.accountInfo?.userId
   }
 
   const { data } = await getChatKey(keyQuery)
@@ -167,14 +167,18 @@ export const useIM = () => {
   const IM = useIMStore()
   
   onMounted( async () => {
-    // 通过自身userId和企业id获取token和uid
-    await resetConfig()
-    // 连接状态监听
-    WKSDK.shared().connectManager.addConnectStatusListener(connectStatusListener)
-    // 常规消息监听
-    WKSDK.shared().chatManager.addMessageListener(messageListen)
-    // 连接
-    WKSDK.shared().connectManager.connect()
+    try {
+      // 通过自身userId和企业id获取token和uid
+      await resetConfig()
+      // 连接状态监听
+      WKSDK.shared().connectManager.addConnectStatusListener(connectStatusListener)
+      // 常规消息监听
+      WKSDK.shared().chatManager.addMessageListener(messageListen)
+      // 连接
+      WKSDK.shared().connectManager.connect()
+    } catch (error) {
+      console.log(error)
+    }
   })
   onUnmounted(() => {
     WKSDK.shared().connectManager.removeConnectStatusListener(connectStatusListener)
@@ -211,13 +215,20 @@ export const useIM = () => {
   }
 
   async function resetConfig () {
-    const { uid, wssUrl, token } = await getKey()
-    IM.setUid(uid)
-    // 单机模式可以直接设置地址
-    WKSDK.shared().config.addr = 'wss://' + wssUrl// 默认端口为5200 + wsUrl 
-    // 认证信息
-    WKSDK.shared().config.uid = uid // 用户uid(需要在悟空通讯端注册过)
-    WKSDK.shared().config.token = token // 用户token (需要在悟空通讯端注册过)
+    try {
+      const { uid, wssUrl, token } = await getKey()
+      if (!wssUrl) {
+        return
+      }
+      IM.setUid(uid)
+      // 单机模式可以直接设置地址
+      WKSDK.shared().config.addr = 'wss://' + wssUrl// 默认端口为5200 + wsUrl 
+      // 认证信息
+      WKSDK.shared().config.uid = uid // 用户uid(需要在悟空通讯端注册过)
+      WKSDK.shared().config.token = token // 用户token (需要在悟空通讯端注册过)
+    } catch (error) {
+      console.log(error)
+    }
   }
   return {
     resetConfig

+ 2 - 1
layout/components/authModal/login/index.vue

@@ -248,7 +248,8 @@ const handleLogin = async () => {
   Object.assign(query, {
     account: query.phone
   })
-  await useUserStore.handleSmsLogin(query, current.value === 0 ? true : false)
+  
+  await useUserStore.handleSmsLogin(query, current.value === 0)
 }
 </script>
 

+ 1 - 1
layout/index.vue

@@ -26,7 +26,7 @@ import { watch } from 'vue'
 import { userStore } from '@/store/user'
 const { resetConfig } = useIM()
 const useUserStore = userStore()
-watch(() => useUserStore.accountInfo.userId, (newVal, oldVal) => {
+watch(() => useUserStore?.accountInfo?.userId, (newVal, oldVal) => {
   if (useUserStore.refreshToken) {
 		// 监听登录状态
     resetConfig()

+ 9 - 10
store/user.js

@@ -1,5 +1,4 @@
 import { defineStore } from 'pinia';
-import { clone, cloneDeep } from 'lodash-es';
 import { getBaseInfo, getUserInfo } from '@/api/user';
 import { smsLogin, passwordLogin, logout, userRegister } from '@/api/common'
 import { closeAuthModal } from '@/hooks/useModal'
@@ -29,18 +28,18 @@ const tabUrl = [
   'pages/index/communicate',
   'pages/index/my'
 ]
-export const userStore = defineStore({
-  id: 'user',
+export const userStore = defineStore('user', {
   state: () => {
-    const userInfo = JSON.parse(uni.getStorageSync('user') ?? '{}')
-    console.log('userInfo====',userInfo)
+    const userLocal = uni.getStorageSync('user')
+
+    const userInfo = userLocal ? JSON.parse(userLocal) : {}
     return {
-      baseInfo: userInfo ? userInfo.baseInfo : {}, // 用户信息
-      userInfo: userInfo ? userInfo.userInfo : {},
+      baseInfo: userInfo.baseInfo ?? {}, // 用户信息
+      userInfo: userInfo.userInfo ?? {},
       isLogin: !!uni.getStorageSync('token'), // 登录状态
       refreshToken: uni.getStorageSync('refresh-token'), // 用户切换
       lastUpdateTime: 0, // 上次更新时间
-      accountInfo: cloneDeep(defaultAccountInfo), // 账号信息
+      accountInfo: { ...defaultAccountInfo }, // 账号信息
     }
   },
 
@@ -147,9 +146,9 @@ export const userStore = defineStore({
       // 清空 token
       this.setToken();
       // 清空用户相关的缓存
-      this.baseInfo = clone(defaultBaseInfo);
+      this.baseInfo = { ...defaultBaseInfo };
       this.userInfo = {}
-      this.accountInfo = cloneDeep(defaultAccountInfo);
+      this.accountInfo = { ...defaultAccountInfo };
     },
 
     // 登录后,加载各种信息