src/renderer/store/auth-persist-storage.ts
Rama main · réplica de lectura del repositorio original.
import type { StateStorage } from 'zustand/middleware';
import isElectron from 'is-electron';
/**
* Renderer localStorage can fail in Electron dev (LOCK / profile corruption).
* Persist auth through main-process electron-store instead.
*/
export const authPersistStorage: StateStorage = {
getItem: async (name) => {
if (isElectron() && window.api?.localSettings?.authPersistGet) {
const fromDisk = await window.api.localSettings.authPersistGet(name);
if (fromDisk) {
return fromDisk;
}
try {
const legacy = localStorage.getItem(name);
if (legacy) {
await window.api.localSettings.authPersistSet(name, legacy);
return legacy;
}
} catch {
// localStorage unavailable (LOCK errors)
}
return null;
}
try {
return localStorage.getItem(name);
} catch {
return null;
}
},
removeItem: async (name) => {
if (isElectron() && window.api?.localSettings?.authPersistRemove) {
await window.api.localSettings.authPersistRemove(name);
return;
}
try {
localStorage.removeItem(name);
} catch {
// ignore
}
},
setItem: async (name, value) => {
if (isElectron() && window.api?.localSettings?.authPersistSet) {
await window.api.localSettings.authPersistSet(name, value);
return;
}
try {
localStorage.setItem(name, value);
} catch {
// ignore
}
},
};