diff --git a/src/App.vue b/src/App.vue index 1f461a79..135023ad 100644 --- a/src/App.vue +++ b/src/App.vue @@ -189,13 +189,26 @@ async function getDeepLink(): Promise { e.payload.startsWith("teyvatguide://import_uiaf") ) { await toUIAF(e.payload); - } else { - showSnackbar({ - text: "无效的 deep link!", - color: "error", - timeout: 3000, - }); + return; } + if (e.payload.startsWith("router?path=")) { + const routerPath = e.payload.replace("router?path=", ""); + if (router.currentRoute.value.path === routerPath) { + showSnackbar({ + text: "已在当前页面!", + color: "warn", + timeout: 3000, + }); + return; + } + await router.push(routerPath); + return; + } + showSnackbar({ + text: "无效的 deep link!", + color: "error", + timeout: 3000, + }); }); } diff --git a/src/pages/common/Posts.vue b/src/pages/common/Posts.vue index e4507196..e9457440 100644 --- a/src/pages/common/Posts.vue +++ b/src/pages/common/Posts.vue @@ -223,6 +223,10 @@ async function toNav(item: TGApp.BBS.Navigator.Navigator): Promise { window.open(item.app_path); return; } + if (item.name === "签到福利") { + await TGClient.open("web_act_thin", item.app_path); + return; + } const modeConfirm = await showConfirm({ title: "是否采用宽屏模式打开?", text: "取消则采用竖屏模式打开", diff --git a/src/utils/linkParser.ts b/src/utils/linkParser.ts index fea18075..553cbb81 100644 --- a/src/utils/linkParser.ts +++ b/src/utils/linkParser.ts @@ -1,9 +1,11 @@ /** * @file src/utils/linkParser.ts * @description 处理链接 - * @since Beta v0.3.9 + * @since Beta v0.4.7 */ +import { emit } from "@tauri-apps/api/event"; + import showConfirm from "../components/func/confirm"; import showSnackbar from "../components/func/snackbar"; @@ -50,7 +52,7 @@ export async function parsePost(link: string): Promise { /** * @function parseLink - * @since Beta v0.3.9 + * @since Beta v0.4.7 * @description 处理链接 * @param {string} link - 链接 * @param {boolean} useInner - 是否采用内置 JSBridge 打开 @@ -78,6 +80,16 @@ export async function parseLink( const urlTransform = decodeURIComponent(url.search.replace("?url=", "")); return await parseLink(urlTransform, useInner); } + console.log(url.pathname, url.search); + // 处理特定路径 + if (url.pathname.startsWith("//discussion")) { + await emit("active_deep_link", "router?path=/posts"); + return true; + } + if (link === "mihoyobbs://homeForum?game_id=2&tab_type=2") { + await emit("active_deep_link", "router?path=/news/2/news"); + return true; + } } return false; }