1a0afb6d39
Open weappOrderConfirm in mini-user so users confirm in-app instead of service notice; verify via get_order before completing. Show operator/remark on admin order status timeline. Co-authored-by: Cursor <cursoragent@cursor.com>
73 lines
2.2 KiB
TypeScript
73 lines
2.2 KiB
TypeScript
import './lib/text-encoding-polyfill';
|
|
import { PropsWithChildren, useRef } from 'react';
|
|
import Taro, { useDidShow } from '@tarojs/taro';
|
|
import WechatShareBootstrap from './components/WechatShareBootstrap';
|
|
import { patchTaroH5Hooks } from './lib/patch-taro-h5-hooks';
|
|
import { handleWechatOrderConfirmShow } from './lib/wechat-order-confirm';
|
|
import './app.css';
|
|
|
|
// H5:在首屏 page hooks 执行前,把 Taro.useDidShow 等绑到与 createReactApp 同一份 runtime
|
|
patchTaroH5Hooks();
|
|
|
|
function App({ children }: PropsWithChildren) {
|
|
const handlingRef = useRef(false);
|
|
|
|
useDidShow((options?: {
|
|
referrerInfo?: {
|
|
appId?: string;
|
|
extraData?: { status?: string; errormsg?: string; req_extradata?: Record<string, string> };
|
|
};
|
|
}) => {
|
|
if (process.env.TARO_ENV !== 'weapp') return;
|
|
if (handlingRef.current) return;
|
|
|
|
const referrerInfo =
|
|
options?.referrerInfo ||
|
|
(typeof Taro.getEnterOptionsSync === 'function'
|
|
? (
|
|
Taro.getEnterOptionsSync() as {
|
|
referrerInfo?: {
|
|
appId?: string;
|
|
extraData?: {
|
|
status?: string;
|
|
errormsg?: string;
|
|
req_extradata?: Record<string, string>;
|
|
};
|
|
};
|
|
}
|
|
).referrerInfo
|
|
: undefined);
|
|
if (!referrerInfo?.appId) return;
|
|
|
|
handlingRef.current = true;
|
|
void handleWechatOrderConfirmShow({ referrerInfo })
|
|
.then((result) => {
|
|
if (result.redirectUrl) {
|
|
Taro.redirectTo({ url: result.redirectUrl }).catch(() => {
|
|
Taro.reLaunch({ url: result.redirectUrl! });
|
|
});
|
|
return;
|
|
}
|
|
if (!result.handled || !result.orderId) return;
|
|
const pages = Taro.getCurrentPages();
|
|
const cur = pages[pages.length - 1] as { route?: string } | undefined;
|
|
const route = cur?.route || '';
|
|
if (route.includes('pickup-receive')) {
|
|
Taro.redirectTo({ url: '/pages/orders/index?tab=done' }).catch(() => {});
|
|
}
|
|
})
|
|
.finally(() => {
|
|
handlingRef.current = false;
|
|
});
|
|
});
|
|
|
|
return (
|
|
<>
|
|
<WechatShareBootstrap />
|
|
{children}
|
|
</>
|
|
);
|
|
}
|
|
|
|
export default App;
|