26 lines
753 B
TypeScript
26 lines
753 B
TypeScript
import { goLogin } from './auth-nav';
|
|
import { isLoggedIn } from './api';
|
|
import { fetchClientConfig, fetchUserProfile, needsWechatAuthForPay } from './pay-wechat';
|
|
|
|
export async function ensurePayReady(returnPath: string): Promise<boolean> {
|
|
if (!isLoggedIn()) {
|
|
goLogin(returnPath);
|
|
return false;
|
|
}
|
|
|
|
try {
|
|
const [config, profile] = await Promise.all([fetchClientConfig(), fetchUserProfile()]);
|
|
if (!needsWechatAuthForPay(config, profile)) {
|
|
return true;
|
|
}
|
|
goLogin(returnPath, { needWechat: '1' });
|
|
return false;
|
|
} catch (e) {
|
|
const msg = e instanceof Error ? e.message : '';
|
|
if (/登录已过期|重新登录|401/.test(msg) || !isLoggedIn()) {
|
|
goLogin(returnPath);
|
|
}
|
|
return false;
|
|
}
|
|
}
|