mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
at samuel/exp-cli 37 lines 976 B view raw
1import {jwtDecode} from 'jwt-decode' 2 3import {hasProp} from '#/lib/type-guards' 4import {logger} from '#/logger' 5import * as persisted from '#/state/persisted' 6import {SessionAccount} from './types' 7 8export function readLastActiveAccount() { 9 const {currentAccount, accounts} = persisted.get('session') 10 return accounts.find(a => a.did === currentAccount?.did) 11} 12 13export function isSignupQueued(accessJwt: string | undefined) { 14 if (accessJwt) { 15 const sessData = jwtDecode(accessJwt) 16 return ( 17 hasProp(sessData, 'scope') && 18 sessData.scope === 'com.atproto.signupQueued' 19 ) 20 } 21 return false 22} 23 24export function isSessionExpired(account: SessionAccount) { 25 try { 26 if (account.accessJwt) { 27 const decoded = jwtDecode(account.accessJwt) 28 if (decoded.exp) { 29 const didExpire = Date.now() >= decoded.exp * 1000 30 return didExpire 31 } 32 } 33 } catch (e) { 34 logger.error(`session: could not decode jwt`) 35 } 36 return true 37}