gemercheung 2 سال پیش
والد
کامیت
e815059dd5
7فایلهای تغییر یافته به همراه43 افزوده شده و 4 حذف شده
  1. 2 1
      src/App.vue
  2. 1 0
      src/components/basic/title.vue
  3. 0 0
      src/hooks/useParams.ts
  4. 22 1
      src/hooks/useRoom.ts
  5. 11 2
      src/hooks/userSocket.ts
  6. 6 0
      src/store/modules/app.ts
  7. 1 0
      src/utils/browser.ts

+ 2 - 1
src/App.vue

@@ -145,8 +145,9 @@
 
 <template>
   <LoadingLogo :thumb="true" />
+  isTourMode:{{ isTourMode }}
   <!-- 引导页 -->
-  <Title v-if="!isJoined && isLoaded" />
+  <Title v-if="isLoaded && isTourMode" />
   <Guideline />
   <div class="ui-view-layout" :class="{ show: show }">
     <div class="scene" ref="scene$"></div>

+ 1 - 0
src/components/basic/title.vue

@@ -77,6 +77,7 @@
   }
 
   const isTourMode = computed(() => appStore.isTourMode);
+
   // const musicPlayer = useMusicPlayer()
   // const store = useStore();
   const metadata = computed(() => sceneStore.metadata);

+ 0 - 0
src/hooks/useParams.ts


+ 22 - 1
src/hooks/useRoom.ts

@@ -1,6 +1,6 @@
 import browser from '/@/utils/browser';
 import axios from 'axios';
-import { ref, computed, unref, Ref } from 'vue';
+import { ref, computed, unref } from 'vue';
 
 const roomParam = browser.getURLParam('roomId');
 
@@ -31,6 +31,26 @@ export const roomId = roomParam && roomParam.substr(7);
 export const sceneList = computed(() => unref(room)?.sceneData || []);
 export const isLeader = browser.getURLParam('role') === 'leader';
 
+interface roomParamsType {
+  name: string;
+  role: string;
+  vruserId: string;
+  isTour: number;
+  roomId: string;
+  avatar: string;
+}
+
+function createNewURLEntry(params: roomParamsType) {
+  let tempUrl = window.location.href;
+  // ['mode', 'name', 'role', 'vruserId']
+  Object.keys(params).forEach((item) => {
+    tempUrl = browser.replaceQueryString(tempUrl, item, params[item]);
+    console.log('tempUrl', tempUrl);
+  });
+
+  history.replaceState(null, '', tempUrl);
+}
+
 export function useRoom() {
   return {
     sceneList,
@@ -39,6 +59,7 @@ export function useRoom() {
     initialRoom,
     enterRoom,
     leaveRoom,
+    createNewURLEntry,
   };
 }
 

+ 11 - 2
src/hooks/userSocket.ts

@@ -25,7 +25,7 @@ export function createSocket() {
 }
 
 async function closeSocket() {
-  const { leaveRoom } = useRoom();
+  const { leaveRoom, createNewURLEntry } = useRoom();
   const rtcStore = useRtcStore();
   const appStore = useAppStore();
   await getApp().Connect.follow.exit();
@@ -34,7 +34,16 @@ async function closeSocket() {
   if (rtcStore.isLeader) {
     socket.emit('action', { type: 'leader-dismiss' });
   }
-  setTimeout(() => {});
+  setTimeout(() => {
+    createNewURLEntry({
+      vruserId: '',
+      isTour: 1,
+      name: '',
+      role: '',
+      roomId: '',
+      avatar: '',
+    });
+  });
 }
 
 export function useSocket(): ReturnUseSocketType {

+ 6 - 0
src/store/modules/app.ts

@@ -51,6 +51,12 @@ export const useAppStore = defineStore({
   actions: {
     setIsTourMode(payload: boolean): void {
       this.isTourMode = payload;
+      const searchParams = new URLSearchParams(location.search);
+      if (!searchParams.has('isTour')) {
+        const isTour = payload ? '1' : '0';
+        searchParams.set('isTour', isTour);
+        location.search = searchParams.toString();
+      }
     },
     setMode(payload: string): void {
       console.log('setMode', payload);

+ 1 - 0
src/utils/browser.ts

@@ -389,6 +389,7 @@ const browser = {
     }
     return url.replace(re, name + '=' + value).replace('?&', '?');
   },
+
   openLink(mglink, h5link, appLink) {
     if (this.getURLParam('isBuyerApp') === '1') {
       if (appLink) {