From 3e324d156e0b1adf78acf38c94d17e8e0e5ac9ba Mon Sep 17 00:00:00 2001 From: wangfukang <15630117759@163.com> Date: Mon, 5 Oct 2026 11:06:46 +0800 Subject: [PATCH] 1 --- utils/sharePath.js | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/utils/sharePath.js b/utils/sharePath.js index 5461285..89393d6 100644 --- a/utils/sharePath.js +++ b/utils/sharePath.js @@ -97,6 +97,41 @@ export function getEnterShareTarget(options) { return resolveHomeShareTarget(options && options.query) } +// 同一次分享进入只跳转一次。小程序切回前台、关闭图片预览都会再次触发 onShow, +// 且 App.onShow 仍可能带上最初的分享参数。 +const handledShareTargets = Object.create(null) + +export function stageShareEnter(options) { + const targetPath = resolveMiniCodeSceneTarget(options && options.query && options.query.scene) || getEnterShareTarget(options) + if (!targetPath) return { targetPath: '', alreadyHandled: false } + if (handledShareTargets[targetPath]) return { targetPath: '', alreadyHandled: true } + return { targetPath: targetPath, alreadyHandled: false } +} + +export function isShareTargetHandled(targetPath) { + return !!(targetPath && handledShareTargets[targetPath]) +} + +export function completeShareEnter(targetPath) { + if (targetPath) handledShareTargets[targetPath] = true +} + +export function reopenShareEnter(targetPath) { + if (targetPath) delete handledShareTargets[targetPath] +} + +let suppressShareRedirectOnce = false + +export function suppressNextShareRedirect() { + suppressShareRedirectOnce = true +} + +export function consumeShareRedirectSuppression() { + if (!suppressShareRedirectOnce) return false + suppressShareRedirectOnce = false + return true +} + export function getCurrentEnterShareTarget() { let options = null try {