feat(mini-user): configurable WeChat mini share scenes in system settings

Add HQ group for default and per-page share title/desc/image; expose via client-config and wire all mini-user share entry points.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-06 15:45:57 +08:00
parent a2abbb6169
commit 83b1b0e5f6
12 changed files with 526 additions and 106 deletions
+14 -19
View File
@@ -19,9 +19,9 @@ import { maskPhone } from '../../lib/phone';
import { track } from '../../lib/analytics';
import { formatShanghaiDateTime } from '../../lib/datetime';
import {
DEFAULT_SHARE_DESC,
DEFAULT_SHARE_TITLE,
buildSceneSharePayload,
toWeappShareMessage,
toWeappShareTimeline,
} from '../../lib/wechat-share';
type StoreMedia = {
@@ -237,18 +237,15 @@ export default function StoreDetailPage() {
void loadRecentRedeems(id);
});
const sharePayload = useMemo(
() => {
const envFirst = store ? envPhotoUrls(store)[0] : undefined;
return {
title: store?.name || DEFAULT_SHARE_TITLE,
desc: store?.intro?.trim() || store?.address || DEFAULT_SHARE_DESC,
path: `/pages/store-detail/index?id=${storeId}`,
imgUrl: store?.coverUrl || envFirst || store?.carouselUrls?.[0] || undefined,
};
},
[store, storeId],
);
const sharePayload = useMemo(() => {
const envFirst = store ? envPhotoUrls(store)[0] : undefined;
return buildSceneSharePayload('storeDetail', {
path: `/pages/store-detail/index?id=${storeId}`,
dynamicTitle: store?.name,
dynamicDesc: store?.intro?.trim() || store?.address,
dynamicImageUrl: store?.coverUrl || envFirst || store?.carouselUrls?.[0],
});
}, [store, storeId]);
const marqueeLines = useMemo(
() => recentRedeems.map(formatRecentRedeemLine).filter(Boolean),
@@ -256,11 +253,9 @@ export default function StoreDetailPage() {
);
useShareAppMessage(() => toWeappShareMessage(sharePayload));
useShareTimeline(() => ({
title: sharePayload.title || DEFAULT_SHARE_TITLE,
query: storeId ? `id=${storeId}` : '',
imageUrl: sharePayload.imgUrl,
}));
useShareTimeline(() =>
toWeappShareTimeline(sharePayload, storeId ? `id=${storeId}` : ''),
);
function goBack() {
const pages = Taro.getCurrentPages();