2
0
Просмотр исходного кода

🐛 fix(classroom): 修复IM连接和禁言功能问题

- 角色不存在时显示错误提示,避免后续逻辑异常
- 统一使用loginRole变量作为IM登录角色参数,确保角色值正确转换
- 将全体禁言/取消禁言操作的错误提示方式从设置错误消息改为显示toast,提升用户感知
yourname 5 месяцев назад
Родитель
Сommit
91c3841e01
1 измененных файлов с 11 добавлено и 5 удалено
  1. 11 5
      src/client/mobile/components/Classroom/useClassroom.ts

+ 11 - 5
src/client/mobile/components/Classroom/useClassroom.ts

@@ -270,7 +270,11 @@ export const useClassroom = ({ user }:{ user : User }) => {
   // 事件监听函数
   const listenImEvents = (): void => {
     if (!imEngine.current) return;    
-    if (!role) return;    
+    if(!role) {
+      showToast('error', '角色不存在');
+      return;
+    }
+    const loginRole = role === Role.Teacher ? 'admin' : Role.Student;
 
     imEngine.current.on('connectsuccess', () => {
       showSystemMessage('IM连接成功');
@@ -281,7 +285,7 @@ export const useClassroom = ({ user }:{ user : User }) => {
       // 自动重连
       try {
         const res = await aliyunClient.im_token.$post({
-          json: { role }
+          json: { role: loginRole }
         });
         if(!res.ok) { 
           const { message } = await res.json()
@@ -300,7 +304,7 @@ export const useClassroom = ({ user }:{ user : User }) => {
             nonce,
             timestamp,
             token,
-            role
+            role: loginRole
           }
         });
         showSystemMessage('IM自动重连成功');
@@ -1426,7 +1430,8 @@ export const useClassroom = ({ user }:{ user : User }) => {
       });
       showToast('info', '已全体禁言(IM聊天)');
     } catch (err: any) {
-      setErrorMessage(`全体IM禁言失败: ${err.message}`);
+      // setErrorMessage(`全体IM禁言失败: ${err.message}`);
+      showToast('error', `全体IM禁言失败: ${err.message}`);
     }
   };
 
@@ -1440,7 +1445,8 @@ export const useClassroom = ({ user }:{ user : User }) => {
       });
       showToast('info', '已取消全体禁言(IM聊天)');
     } catch (err: any) {
-      setErrorMessage(`取消全体IM禁言失败: ${err.message}`);
+      // setErrorMessage(`取消全体IM禁言失败: ${err.message}`);
+      showToast('error', `取消全体IM禁言失败: ${err.message}`);
     }
   };