26 lines
705 B
TypeScript
26 lines
705 B
TypeScript
export function pickToken (payload: any): string {
|
|
const first = payload?.data ?? payload
|
|
const nested = first?.data && typeof first.data === 'object' && ('token' in first.data || !first.token)
|
|
? first.data
|
|
: first
|
|
const token = nested?.token ?? first?.token ?? payload?.token
|
|
return typeof token === 'string' ? token.trim() : ''
|
|
}
|
|
|
|
export async function ensureSessionToken (input: {
|
|
token?: string
|
|
fetchUserConfig: () => Promise<unknown>
|
|
}) {
|
|
const existing = String(input.token || '').trim()
|
|
if (existing) {
|
|
return existing
|
|
}
|
|
|
|
const token = pickToken(await input.fetchUserConfig())
|
|
if (!token) {
|
|
throw new Error('获取临时登录态失败')
|
|
}
|
|
|
|
return token
|
|
}
|