gemercheung 2 лет назад
Родитель
Сommit
3c4d429318

+ 1 - 1
src/App.vue

@@ -323,7 +323,7 @@
       {{ maxNumber }}
     </span> -->
     <span>
-      {{ t('base.debuginfo') }}:公告,测试1.1.0-0423-01,角色:{{ rtcStore.role }} rId:{{
+      {{ t('base.debuginfo') }}:公告,测试1.1.0-0424-03,角色:{{ rtcStore.role }} rId:{{
         rtcStore.roomId || browser.getURLParam('roomId')
       }}
       sceneIndex:{{ currentSceneIndex }} uid::

+ 13 - 13
src/components/chatRoom/controls/actions.ts

@@ -386,7 +386,7 @@ const handleUserExit = (user?: UserInfoType, members?: UserInfoType[]) => {
 };
 //被动处理用离开 全员解散
 const handleLeaderDismiss = () => {
-  const { closeSocket } = useSocket();
+  const { closeSocket, closeRoomForWechat } = useSocket();
   const rtcStore = useRtcStore();
   const { t } = useI18n();
   // Dialog.toast({ content: t('action.hosterDismissRoom') });
@@ -400,10 +400,7 @@ const handleLeaderDismiss = () => {
     },
     () => {
       if (isUsingMiniApp.value) {
-        //@ts-ignore
-        wx.miniProgram.switchTab({
-          url: '/pages/index/index',
-        });
+        closeRoomForWechat();
       } else {
         closeSocket();
       }
@@ -444,15 +441,11 @@ export const handleError = () => {
 export const handleMaxRoomsError = () => {
   // const rtcStore = useRtcStore();
   // const { t } = useI18n();
-
+  const { closeSocket, closeRoomForWechat } = useSocket();
   setTimeout(() => {
     if (isUsingMiniApp.value) {
-      //@ts-ignore
-      wx.miniProgram.switchTab({
-        url: '/pages/index/index',
-      });
+      closeRoomForWechat();
     } else {
-      const { closeSocket } = useSocket();
       closeSocket();
     }
   }, 3000);
@@ -495,8 +488,15 @@ export const handleEarlyError = () => {
       isSingle: true,
     },
     () => {
-      const { closeSocket } = useSocket();
-      closeSocket();
+      if (isUsingMiniApp.value) {
+        //@ts-ignore
+        wx.miniProgram.switchTab({
+          url: '/pages/index/index',
+        });
+      } else {
+        const { closeSocket } = useSocket();
+        closeSocket();
+      }
     },
   );
 };

+ 2 - 4
src/components/chatRoom/index.vue

@@ -549,16 +549,14 @@
 
   const handleCloseRoom = async () => {
     showCloseDialog.value = false;
-    const { socket, closeSocket } = useSocket();
+    const { socket, closeSocket, closeRoomForWechat } = useSocket();
     socket.emit('exit', {
       roomId: rtcStore.roomId,
       userId: rtcStore.userId,
     });
     if (isUsingMiniApp.value) {
       //@ts-ignore
-      wx.miniProgram.switchTab({
-        url: '/pages/index/index',
-      });
+      closeRoomForWechat();
     } else {
       closeSocket();
     }

+ 0 - 1
src/hooks/useTRTC.ts

@@ -307,7 +307,6 @@ function uninstallEventHandlers() {
     return;
   }
   localClient.off('error', handleError);
-  localClient.off('error', handleError);
   localClient.off('client-banned', handleBanned);
   localClient.off('peer-join', handlePeerJoin);
   localClient.off('peer-leave', handlePeerLeave);

+ 28 - 0
src/hooks/userSocket.ts

@@ -10,6 +10,7 @@ interface ReturnUseSocketType {
   createSocket: Fn;
   closeSocket: Fn;
   socket: SocketIOClient.Socket;
+  closeRoomForWechat: Fn;
 }
 
 export function createSocket() {
@@ -57,10 +58,37 @@ async function closeSocket() {
   }, 100);
 }
 
+async function closeRoomForWechat() {
+  const { leaveRoom } = useRoom();
+  const rtcStore = useRtcStore();
+  // const appStore = useAppStore();
+  try {
+    await getApp().Connect.follow.exit();
+    await leaveRoom();
+  } catch (error) {
+    console.error('exit-error', error);
+  }
+
+  // appStore.setIsTourMode(true);
+  if (rtcStore.isLeader) {
+    socket && socket.emit('action', { type: 'leader-dismiss' });
+  }
+  console.log('socket', socket);
+  socket && socket.emit('disconnected');
+
+  setTimeout(() => {
+    //@ts-ignore
+    wx.miniProgram.switchTab({
+      url: '/pages/index/index',
+    });
+  }, 1000);
+}
+
 export function useSocket(): ReturnUseSocketType {
   return {
     socket,
     closeSocket,
     createSocket,
+    closeRoomForWechat,
   };
 }