gemercheung 2 yıl önce
ebeveyn
işleme
4720807504

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

@@ -532,7 +532,7 @@
     closeSocket();
   };
 
-  const handleCreateShare = () => {
+  const handleCreateShare = async () => {
     const search = new URLSearchParams();
     search.set('isTour', '0');
     // search.set('vruserId', `user_${Math.floor(Math.random() * 100000000)}`);
@@ -545,6 +545,9 @@
     Number(import.meta.env.VITE_SHOW_CONSOLE) === 1 && search.set('vlog', '1');
     const url = new URL(location.href);
     url.search = `?` + search.toString();
+    const { shareRoom } = useRoom();
+    // takelook/shareRoom
+    await shareRoom(rtcStore.roomId, rtcStore.userId);
     if (!unref(isUsingMiniApp)) {
       shareLink.value = url.toString();
     } else {

+ 15 - 1
src/components/chatRoom/roomControl.ts

@@ -6,8 +6,9 @@ import { handleActions, handleSync, handleReceivePaint, handleJoin } from './con
 import type { SocketParams } from '/@/store/modules/rtc';
 import Dialog from '/@/components/basic/dialog';
 import { useRoom } from '/@/hooks/useRoom';
+import { useI18n } from '/@/hooks/useI18n';
 // 所有socket业务事件集中点
-
+const { t } = useI18n();
 export function initSocketEvent(socket: SocketIOClient.Socket): void {
   if (socket) {
     socket.on('connect', () => {
@@ -51,10 +52,23 @@ export function initSocketEvent(socket: SocketIOClient.Socket): void {
       console.error('onAny:-->', event);
     });
     socket.on('manager-error', ({ type, code }) => {
+      debugger;
       switch (type) {
         case 'repeat-login':
           Dialog.toast({ content: '你已有正在连接的页面,请勿重复登录!' });
           break;
+        case 'room-maxing':
+          Dialog.toast({ content: '房间已满员,请稍后再试!' });
+          break;
+        case 'invalid-master':
+          Dialog.toast({ content: '非法房主,请检查参数!' });
+          break;
+        case 'invalid-match-role':
+          Dialog.toast({ content: t('base.errorRoom') });
+          break;
+        case 'invalid-room-params':
+          Dialog.toast({ content: t('base.errorRoom') });
+          break;
 
         default:
           Dialog.toast({ content: `错误代码:${code},类型:${type}` });

+ 11 - 0
src/hooks/useRoom.ts

@@ -77,6 +77,7 @@ export function useRoom() {
     createNewURL,
     getSign,
     validPassRoom,
+    shareRoom,
   };
 }
 
@@ -137,6 +138,16 @@ export const leaveRoom = async () => {
   });
 };
 
+export const shareRoom = async (roomId: string, userId: string) => {
+  if (!isLeader) return;
+  return shopAxios.get('/takelook/shareRoom', {
+    params: {
+      userId,
+      roomId,
+    },
+  });
+};
+
 if (roomId) {
   shopAxios.get('/takelook/roomAddView', { params: { roomId } });
 }