import { ACCESS_TOKEN_LOCAL_STORAGE_NAME, PASSPORT_LOCAL_STORAGE_NAME } from '@/config' import { getPublic, postPublic } from './base' export function setWebAppAccessToken(token: string) { localStorage.setItem(ACCESS_TOKEN_LOCAL_STORAGE_NAME, token) } export function setWebAppPassport(shareCode: string, token: string) { localStorage.setItem(PASSPORT_LOCAL_STORAGE_NAME(shareCode), token) } export function getWebAppAccessToken() { return localStorage.getItem(ACCESS_TOKEN_LOCAL_STORAGE_NAME) || '' } export function getWebAppPassport(shareCode: string) { return localStorage.getItem(PASSPORT_LOCAL_STORAGE_NAME(shareCode)) || '' } export function clearWebAppAccessToken() { localStorage.removeItem(ACCESS_TOKEN_LOCAL_STORAGE_NAME) } export function clearWebAppPassport(shareCode: string) { localStorage.removeItem(PASSPORT_LOCAL_STORAGE_NAME(shareCode)) } type isWebAppLogin = { logged_in: boolean app_logged_in: boolean } export async function webAppLoginStatus(shareCode: string, userId?: string) { // always need to check login to prevent passport from being outdated // check remotely, the access token could be in cookie (enterprise SSO redirected with https) const params = new URLSearchParams({ app_code: shareCode }) if (userId) params.append('user_id', userId) const { logged_in, app_logged_in } = await getPublic(`/login/status?${params.toString()}`) return { userLoggedIn: logged_in, appLoggedIn: app_logged_in, } } export async function webAppLogout(shareCode: string) { clearWebAppAccessToken() clearWebAppPassport(shareCode) await postPublic('/logout') }