import { WritableAtom } from 'jotai'; import { atomWithLocalStorage, getLocalStorageItem, setLocalStorageItem, } from './utils/atomWithLocalStorage'; export type CallPreferences = { microphone: boolean; video: boolean; sound: boolean; }; const CALL_PREFERENCES = 'callPreferences'; const DEFAULT_PREFERENCES: CallPreferences = { microphone: true, video: false, sound: true, }; export type CallPreferencesAtom = WritableAtom; export const makeCallPreferencesAtom = (userId: string): CallPreferencesAtom => { const storeKey = `${CALL_PREFERENCES}${userId}`; const callPreferencesAtom = atomWithLocalStorage( storeKey, (key) => { const v = getLocalStorageItem(key, DEFAULT_PREFERENCES); // Never restore camera state — always start with camera off for privacy. // Users can toggle it in the prescreen before joining. return { ...v, video: false }; }, (key, value) => { // Don't persist video state — always resets to off on next load. setLocalStorageItem(key, { ...value, video: false }); }, ); return callPreferencesAtom; };