2a9493165b
Phone re-login + OAuth on iOS left SPA on a different path than the WebView entry URL, so scanQRCode failed until a full reopen. Sign with the document entry URL again and warm up after auth. Co-authored-by: Cursor <cursoragent@cursor.com>
56 lines
1.4 KiB
TypeScript
56 lines
1.4 KiB
TypeScript
import { isIosDevice } from '@dukang/weixin-sdk';
|
||
|
||
/** 扫码前发起 OAuth 时标记,回跳后在首页续扫 */
|
||
export const SHOP_PENDING_SCAN_KEY = 'shop_pending_scan';
|
||
|
||
/** 短信登录后绑定微信等 OAuth 回跳:下次手动扫码加长预热(不自动打开相机) */
|
||
export const SHOP_SCAN_WARMUP_KEY = 'shop_scan_warmup';
|
||
|
||
export function markPendingScanAfterAuth(): void {
|
||
try {
|
||
sessionStorage.setItem(SHOP_PENDING_SCAN_KEY, '1');
|
||
} catch {
|
||
/* ignore */
|
||
}
|
||
}
|
||
|
||
export function peekPendingScanAfterAuth(): boolean {
|
||
try {
|
||
return sessionStorage.getItem(SHOP_PENDING_SCAN_KEY) === '1';
|
||
} catch {
|
||
return false;
|
||
}
|
||
}
|
||
|
||
export function clearPendingScanAfterAuth(): void {
|
||
try {
|
||
sessionStorage.removeItem(SHOP_PENDING_SCAN_KEY);
|
||
} catch {
|
||
/* ignore */
|
||
}
|
||
}
|
||
|
||
/** OAuth(含短信登录后绑微信)回跳后,标记下一次扫码需要加长预热 */
|
||
export function markScanWarmupAfterAuth(): void {
|
||
try {
|
||
sessionStorage.setItem(SHOP_SCAN_WARMUP_KEY, '1');
|
||
} catch {
|
||
/* ignore */
|
||
}
|
||
}
|
||
|
||
export function consumeScanWarmupAfterAuth(): boolean {
|
||
try {
|
||
if (sessionStorage.getItem(SHOP_SCAN_WARMUP_KEY) !== '1') return false;
|
||
sessionStorage.removeItem(SHOP_SCAN_WARMUP_KEY);
|
||
return true;
|
||
} catch {
|
||
return false;
|
||
}
|
||
}
|
||
|
||
/** OAuth 回跳后延迟再调 scanQRCode(iOS JSSDK 离线校验更慢) */
|
||
export function getPostAuthScanDelayMs(): number {
|
||
return isIosDevice() ? 1200 : 600;
|
||
}
|