mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
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}