@daveyplate/better-auth-persistent
Version:
Persistent session management for Better Auth
51 lines (44 loc) • 1.27 kB
text/typescript
import { $deviceSessions } from "./device-sessions"
import { $persistentSession } from "./persistent-session"
import { authClient } from "./types/auth-client"
export async function setActiveSession({
sessionToken
}: {
sessionToken: string
}) {
const deviceSessions = $deviceSessions.get()
if (!deviceSessions.data) return
const session = deviceSessions.data.find(
(session) => session.session.token === sessionToken
)
if (!session)
throw {
error: {
message: "Invalid session token",
code: "INVALID_SESSION_TOKEN"
}
}
$persistentSession.set({
data: session,
isPending: false,
isRefetching: false,
error: null,
refetch: undefined
})
authClient.multiSession
.setActive({
sessionToken: session.session.token
})
.then(({ error }) => {
if (error) {
$persistentSession.set({
data: session,
isPending: false,
isRefetching: false,
optimistic: true,
error: null,
refetch: undefined
})
}
})
}