import { apiPublishedAgentInfo } from "@/servers/agentDev"; import { HideChatAreaEnum, ExpandPageAreaEnum } from "@/types/enums/agent"; import { API_BASE_URL } from "@/constants/config"; import { SUCCESS_CODE } from "@/constants/codes.constants"; import { apiUserTicketCreate } from "@/servers/agentDev"; import { getCurrentPageFullPath } from "@/utils/common"; import { t } from "@/utils/i18n"; /** * 获取ticket */ export const getTicket = async (): Promise => { const ticketResult = await apiUserTicketCreate(); let _ticket: string = ""; if (ticketResult.code === SUCCESS_CODE && ticketResult.data) { _ticket = ticketResult.data; } return _ticket; }; /** * 判断是否是根页面或id页面 * @param str * @returns */ export const isRootOrId = (str: string) => { return str === "/" || /^\/\?id=\d+$/.test(str); }; /** * 获取当前页面地址不包含url参数 H5 || WEB */ export const getCurrentPagePath = () => { // #ifdef H5 || WEB const currentUrl = getCurrentPageFullPath()?.split("#")?.[1] || ""; return currentUrl === "/" ? "/pages/index/index" : currentUrl; // #endif // #ifdef MP-WEIXIN return "/" + getCurrentPageFullPath(); // #endif }; /** * 将ticket添加到url并跳转至webview页面 * @param url * @param jump_type * @returns */ export const addTicketAndJumpToWebview = async ( url: string, jump_type: "inner" | "outer" = "inner", title: string = "", ): Promise => { const resolvedTitle = title || t("Mobile.Common.appName"); const andStr = url.includes("?") ? "&" : "?"; const baseWebviewUrl = `${API_BASE_URL}${url}${andStr}title=${resolvedTitle}`; let webviewUrl = ""; // #ifdef H5 || WEB // 当前页面地址 const backUrl = getCurrentPageFullPath()?.split("#")?.[1] || ""; // 保存需要返回的地址在storage中 uni.setStorageSync("backUrl", backUrl); webviewUrl = encodeURIComponent(baseWebviewUrl); // #endif // #ifdef MP-WEIXIN const _ticket = await getTicket(); webviewUrl = encodeURIComponent( baseWebviewUrl + `&_ticket=${_ticket}&jump_type=${jump_type}`, ); // #endif uni.navigateTo({ url: `/subpackages/pages/webview/webview?url=${webviewUrl}`, }); }; // 跳转至智能体详情页面 export const jumpToAgentDetailPage = async ( agentId: number, conversationId: number = null, agentType: "ChatBot" | "PageApp" | "TaskAgent" = "ChatBot", title: string = "", ) => { const resolvedTitle = title || t("Mobile.Common.appName"); let url = `/subpackages/pages/agent-detail/agent-detail?id=${agentId}`; if (conversationId) { url = url + "&conversationId=" + conversationId; } // 问答型智能体、任务型智能体直接跳转至智能体详情页面 if (agentType === "ChatBot" || agentType === "TaskAgent") { uni.navigateTo({ url }); return; } if (agentType === "PageApp") { try { uni.showLoading({ title: t("Mobile.Page.loading") }); const { code, data, message } = await apiPublishedAgentInfo(agentId); if (code === SUCCESS_CODE) { await addTicketAndJumpToWebview( data.pageHomeIndex, "inner", resolvedTitle, ); } } finally { uni.hideLoading(); } } }; // 判断当前页面是否是tab页面 export const isTabPage = (url: string) => { const tabPageList = [ "/pages/index/index", // 首页 "/pages/agent-union-record/agent-union-record", // 智联录 "/pages/agent-list/agent-list", // 智能体 "/pages/page-app/page-app", // 应用 ]; return tabPageList.includes(url); };