use fermi::UseAtomRef; use gloo_storage::{LocalStorage, Storage}; use serde::{Deserialize, Serialize}; use crate::{ constants::{DIOXUS_FRONT_AUTH_REQUEST, DIOXUS_FRONT_AUTH_TOKEN}, oidc::{AuthRequestState, AuthTokenState}, }; #[derive(Serialize, Deserialize, Clone)] pub struct StorageEntry { pub key: String, pub value: T, } pub trait PersistentWrite { fn persistent_set(atom_ref: &UseAtomRef>, entry: Option); } impl PersistentWrite for AuthTokenState { fn persistent_set( atom_ref: &UseAtomRef>, entry: Option, ) { *atom_ref.write() = entry.clone(); LocalStorage::set(DIOXUS_FRONT_AUTH_TOKEN, entry).unwrap(); } } impl PersistentWrite for AuthRequestState { fn persistent_set( atom_ref: &UseAtomRef>, entry: Option, ) { *atom_ref.write() = entry.clone(); LocalStorage::set(DIOXUS_FRONT_AUTH_REQUEST, entry).unwrap(); } }