diff --git a/packages/frontend/src/context/userData.tsx b/packages/frontend/src/context/userData.tsx index b08e1a76..1d43f6da 100644 --- a/packages/frontend/src/context/userData.tsx +++ b/packages/frontend/src/context/userData.tsx @@ -7,6 +7,8 @@ import { } from '../../../core/src/utils/constants'; import { useStatus } from './status'; +const USER_DATA_KEY = 'aiostreams-user-data'; + const DefaultUserData: UserData = { services: Object.values(SERVICE_DETAILS).map((service) => ({ id: service.id, @@ -68,13 +70,28 @@ const UserDataContext = React.createContext( export function UserDataProvider({ children }: { children: React.ReactNode }) { const { status } = useStatus(); - const [userData, setUserData] = React.useState(DefaultUserData); + + // Initialize userData from local storage or apply default + const [userData, setUserData] = React.useState(() => { + try { + const stored = localStorage.getItem(USER_DATA_KEY); + return stored ? JSON.parse(stored) : DefaultUserData; + } catch { + return DefaultUserData; + } + }); + const [uuid, setUuid] = React.useState(null); const [password, setPassword] = React.useState(null); const [encryptedPassword, setEncryptedPassword] = React.useState< string | null >(null); + // Effect to persist userData to local storage + React.useEffect(() => { + localStorage.setItem(USER_DATA_KEY, JSON.stringify(userData)); + }, [userData]); + // Effect to apply forced and default values from status React.useEffect(() => { if (!status) return;