Преглед изворни кода

新增初始标签数据和相关功能,支持随机选择标签和删除已使用标签,优化首页视频加载逻辑以提升用户体验。

wuyi пре 2 месеци
родитељ
комит
be428eb0c2
2 измењених фајлова са 51 додато и 3 уклоњено
  1. 23 0
      src/data/videoMenus.ts
  2. 28 3
      src/views/Home.vue

+ 23 - 0
src/data/videoMenus.ts

@@ -52,5 +52,28 @@ export const videoMenus: VideoMenu[] = [
   { hash: "RNct", name: "捆绑" },
 ];
 
+// 首页初始 tag 数据
+export const initialTagData: VideoMenu[] = [
+  { hash: "DQFQ", name: "国产" },
+  { hash: "XPUj", name: "麻豆" },
+];
+
+// 从初始标签数据中随机选择一个标签
+export const getRandomInitialTag = (): VideoMenu | null => {
+  if (initialTagData.length === 0) {
+    return null;
+  }
+  const randomIndex = Math.floor(Math.random() * initialTagData.length);
+  return initialTagData[randomIndex];
+};
+
+// 从初始标签数据中删除指定的标签
+export const removeInitialTag = (hash: string): void => {
+  const index = initialTagData.findIndex((tag) => tag.hash === hash);
+  if (index > -1) {
+    initialTagData.splice(index, 1);
+  }
+};
+
 // 默认导出
 export default videoMenus;

+ 28 - 3
src/views/Home.vue

@@ -377,7 +377,11 @@
 import { ref, computed, onMounted, onBeforeUnmount, watch } from "vue";
 import { useRouter, useRoute } from "vue-router";
 import { searchVideoByTags, searchVideoByKeyword } from "@/services/api";
-import { videoMenus as fixedVideoMenus } from "@/data/videoMenus";
+import {
+  videoMenus as fixedVideoMenus,
+  getRandomInitialTag,
+  removeInitialTag,
+} from "@/data/videoMenus";
 import { freeVideos } from "@/data/freeVideo";
 import VideoJSPlayer from "@/components/VideoJSPlayer.vue";
 import { useUserStore } from "@/store/user";
@@ -768,8 +772,29 @@ const initializeVideoMenus = async () => {
     await restoreSavedState();
     isReturnFromVideo.value = false;
   } else {
-    // 默认不选择任何菜单,加载所有视频
-    await loadVideosByTag("");
+    // 检查是否是第一次进入页面(没有保存的状态)
+    const savedState = userStore.getHomePageState();
+    const isFirstVisit = !savedState.selectedMenu && !savedState.isSearchMode;
+
+    if (isFirstVisit) {
+      // 第一次进入页面,从 initialTagData 中随机选择一个标签
+      const randomTag = getRandomInitialTag();
+      if (randomTag) {
+        selectedMenu.value = randomTag.hash;
+        await loadVideosByTag(randomTag.hash, 1);
+        // 删除已使用的标签
+        removeInitialTag(randomTag.hash);
+        console.log(
+          `首次访问,随机选择标签: ${randomTag.name} (${randomTag.hash})`
+        );
+      } else {
+        // 如果没有初始标签数据,加载所有视频
+        await loadVideosByTag("");
+      }
+    } else {
+      // 不是第一次访问,加载所有视频
+      await loadVideosByTag("");
+    }
   }
 };