UNPKG

@signalwire/js

Version:
38 lines (34 loc) 984 B
import jwtDecode from 'jwt-decode' import { getLogger } from '@signalwire/core' /** * Note: ready to support RN with a "storage.native.ts" file. */ export const getStorage = () => { if (window && window.sessionStorage) { return window.sessionStorage } return undefined } export const sessionStorageManager = (token: string) => { let roomName: string = '' try { const jwtPayload = jwtDecode<{ r: string; ja: string }>(token) roomName = jwtPayload?.r ?? '' } catch (e) { try { const jwtPayload = jwtDecode<{ typ: string}>(token, {header: true}) roomName = jwtPayload.typ || '' } catch { if (process.env.NODE_ENV !== 'production') { getLogger().error('[sessionStorageManager] error decoding JWT', token) } roomName = '' } } const valid = Boolean(roomName) return { authStateKey: valid && `as-${roomName}`, protocolKey: valid && `pt-${roomName}`, callIdKey: valid && `ci-${roomName}`, } }