92 lines
2.1 KiB
JavaScript
92 lines
2.1 KiB
JavaScript
import { getLoginTypeLabel } from './session-browser-config.js'
|
|
|
|
export const SESSION_TTL_MS = 30 * 60 * 1000
|
|
|
|
export function resolveInitialQrSessionState(
|
|
loginType,
|
|
{
|
|
updatedAt = new Date().toISOString(),
|
|
nowMs = Date.now(),
|
|
sessionTtlMs = SESSION_TTL_MS,
|
|
loginTypeLabel = getLoginTypeLabel(loginType),
|
|
} = {},
|
|
) {
|
|
return {
|
|
status: 'waiting_scan',
|
|
notice: `请使用${loginTypeLabel}扫码登录`,
|
|
updatedAt,
|
|
expiresAt: nowMs + sessionTtlMs,
|
|
}
|
|
}
|
|
|
|
export function resolveTencentSessionExpiresAt(session, nowMs = Date.now(), sessionTtlMs = SESSION_TTL_MS) {
|
|
const autoCloseAt = Number(session?.autoCloseAt || 0)
|
|
if (autoCloseAt > 0) {
|
|
return autoCloseAt
|
|
}
|
|
|
|
return nowMs + sessionTtlMs
|
|
}
|
|
|
|
export function shouldRefreshLoggedInPresentation(hostState) {
|
|
const loginText = String(hostState?.loginText || '').trim()
|
|
|
|
return Boolean(hostState?.unloginVisible || !hostState?.loginedVisible || !loginText)
|
|
}
|
|
|
|
export function resolveSessionStatus({ hostState, qrState, credentialReady, activityInfo }) {
|
|
if (hostState.loginedVisible || credentialReady) {
|
|
if (credentialReady && activityInfo?.role?.ready) {
|
|
return 'ready_to_redeem'
|
|
}
|
|
|
|
return 'logged_in'
|
|
}
|
|
|
|
if (qrState.expired) {
|
|
return 'expired'
|
|
}
|
|
|
|
if (qrState.scanned) {
|
|
return 'scanned'
|
|
}
|
|
|
|
return 'waiting_scan'
|
|
}
|
|
|
|
export function resolveSessionNotice({
|
|
hostState,
|
|
qrState,
|
|
credentialReady,
|
|
activityInfo,
|
|
loginType,
|
|
}) {
|
|
const loginTypeLabel = getLoginTypeLabel(loginType)
|
|
|
|
if (credentialReady) {
|
|
if (activityInfo?.role?.ready && activityInfo.role.roleName) {
|
|
return `登录已完成,当前角色 ${activityInfo.role.roleName}`
|
|
}
|
|
|
|
return '登录已完成,正在同步角色信息'
|
|
}
|
|
|
|
if (hostState.loginedVisible) {
|
|
return '页面已识别登录态'
|
|
}
|
|
|
|
if (qrState.expired) {
|
|
return '二维码已失效,准备刷新'
|
|
}
|
|
|
|
if (qrState.scanned) {
|
|
return '二维码已扫描,请在手机上确认登录'
|
|
}
|
|
|
|
return `请使用${loginTypeLabel}扫码登录`
|
|
}
|
|
|
|
export function hasRedeemCredential(cookieMap) {
|
|
return Boolean(cookieMap.openid && cookieMap.access_token && cookieMap.appid)
|
|
}
|