// 已读取AGENTS.md import { onShareAppMessage, onShareTimeline, onShow } from '@dcloudio/uni-app'; import { onMounted } from 'vue'; const DEFAULT_SHARE_TITLE = '同城陪伴 · 专业游戏陪玩与生活陪伴'; const DEFAULT_INDEX_PATH = '/pages/index/index'; /** * 获取当前登录用户的邀请码/用户ID,用于分销裂变与邀请自动绑定 */ export function getShareInviterParams() { try { const uid = uni.getStorageSync('userId'); if (uid) { return { inviterId: String(uid), code: `PW${uid}` }; } } catch (_) {} return { inviterId: '', code: '' }; } /** * 构造携带邀请人参数与页面参数的分享路径 (用于 onShareAppMessage) */ export function buildSharePath(basePath = DEFAULT_INDEX_PATH, extraParams = {}) { const { inviterId, code } = getShareInviterParams(); const params = { ...extraParams }; if (inviterId && !params.inviterId) { params.inviterId = inviterId; } if (code && !params.code) { params.code = code; } const queryParts = []; for (const key of Object.keys(params)) { const val = params[key]; if (val !== undefined && val !== null && val !== '') { queryParts.push(`${encodeURIComponent(key)}=${encodeURIComponent(val)}`); } } const cleanBase = (basePath || DEFAULT_INDEX_PATH).split('?')[0]; const queryStr = queryParts.join('&'); return queryStr ? `${cleanBase}?${queryStr}` : cleanBase; } /** * 构造朋友圈分享的 query 参数字符串 (用于 onShareTimeline,微信规范 query 不带 ?) */ export function buildTimelineQuery(extraParams = {}) { const { inviterId, code } = getShareInviterParams(); const params = { ...extraParams }; if (inviterId && !params.inviterId) { params.inviterId = inviterId; } if (code && !params.code) { params.code = code; } const queryParts = []; for (const key of Object.keys(params)) { const val = params[key]; if (val !== undefined && val !== null && val !== '') { queryParts.push(`${encodeURIComponent(key)}=${encodeURIComponent(val)}`); } } return queryParts.join('&'); } /** * 显式唤起微信小程序分享菜单 (同时激活【转发给朋友】与【分享到朋友圈】) */ export function enableShareMenu() { // #ifdef MP-WEIXIN try { if (uni.canIUse && uni.canIUse('showShareMenu')) { uni.showShareMenu({ withShareTicket: true, menus: ['shareAppMessage', 'shareTimeline'] }); } } catch (_) {} // #endif } /** * 页面级分享统一 Composable (支持在 Vue3