fix(share-trip): 调整主动点击开启提醒的订阅逻辑,避免本地频控缓存拦截

新增requestSubscribeMessageDirect工具函数,修改handleEnableReminder中的调用,使用专门的主动点击专用订阅函数避开本地频控缓存
2个文件已修改
38 ■■■■■ 已修改文件
src/robotaxi/pages/share-trip/index.tsx 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/subscribe.ts 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/share-trip/index.tsx
@@ -10,7 +10,7 @@
import ShareTripView from './components/share-trip-view';
import { TripStatus } from '../begin-route/constants/trip-status';
import { isWhiteList } from '../../api/home';
import { subscribeAfterOrderSuccess } from '../../../utils/subscribe';
import { subscribeAfterOrderSuccessByTap } from '../../../utils/subscribe';
import { checkOtp } from '../../../utils/tools';
import { jumpToHome } from '../../../utils/jump';
@@ -203,9 +203,8 @@
  }; // 联系客服动作
  const handleEnableReminder = async () => {
    // 复用项目通用订阅流程,按下单成功模板触发订阅
    // await runSubscribeScene(ORDER_SUCCESS_SUBSCRIBE_CONFIG, orderId);
    await subscribeAfterOrderSuccess(orderId);
    // 用户主动点击时直接拉起订阅,避免被本地频控缓存拦截
    await subscribeAfterOrderSuccessByTap(orderId);
    setShowReminder(false);
  }; // 开启提醒订阅
src/utils/subscribe.ts
@@ -175,6 +175,31 @@
  clearOrderSuccessSubscribeCache();
  return true;
}
/**
 * 执行订阅弹窗请求。
 * 用户主动点击场景下可直接调用,避免被本地频控缓存拦截。
 */
async function requestSubscribeMessageDirect(config: SubscribeSceneConfig, bizId?: string | number) {
  const type = buildSubscribeType(config.sceneKey, bizId);
  await new Promise<void>((resolve) => {
    Taro.requestSubscribeMessage({
      tmplIds: config.tmplIds,
      success: (result) => {
        checkSubscribeStatus(type, config.tmplIds, result, config.limit);
        const acceptedTemplateIds = getAcceptedTemplateIds(config.tmplIds, result as Record<string, string>);
        void saveAcceptedSubscribeTemplates(acceptedTemplateIds);
        resolve();
      },
      fail: () => {
        resolve();
      },
      complete: () => {
        resolve();
      }
    });
  });
}
// 执行通用订阅流程(失败/拒绝不影响主流程)
export async function runSubscribeScene(config: SubscribeSceneConfig, bizId?: string | number) {
@@ -212,6 +237,12 @@
  if (consumed) return;
  await runSubscribeScene(ORDER_SUCCESS_SUBSCRIBE_CONFIG, orderId);
}
// 用户主动点击“去开启”时,直接拉起订阅,不受频控缓存影响
export async function subscribeAfterOrderSuccessByTap(orderId: string) {
  if (!orderId) return;
  await requestSubscribeMessageDirect(ORDER_SUCCESS_SUBSCRIBE_CONFIG, orderId);
}
// 运营活动 + 券效期 + 券到账三合一模板订阅
export async function subscribeOperationCouponGroup(bizId?: string | number) {