Creé una aplicación en electron con react. Hice dos ventanas: la ventana de login window de app window . En la ventana de inicio de sesión, configuro un formulario HTML básico y llamo al punto final de inicio de sesión para que no sea así:
async function login() { const response = await loginResponse( usernameInput.value, passwordInput.value ); if (response?.invalidData === true) { alert("Wrong credentials!"); return; } return ipcRenderer.send("open-app", response?.token, response?.displayName); }El evento open-app es para crear una ventana de aplicación y enviar un token, displayName para reaccionar a la aplicación:
ipcMain.on("open-app", async (e, token, displayName) => { console.log(token, displayName); if (appWindow) { appWindow.focus(); return; } appWindow = new BrowserWindow({ width: 1200, height: 900, webPreferences: { nodeIntegration: true, contextIsolation: false, enableRemoteModule: true, }, }); appWindow.webContents.on("dom-ready", (e) => { appWindow.webContents.send("auth-data", { token, displayName, }); }); appWindow.loadURL( isDev ? "http://localhost:3000" : `file://${__dirname}/../build/index.html` ); });Y en mi App.js guardo el token en el almacenamiento local:
useEffect(() => { ipcRenderer.on("auth-data", async (data) => { console.log(data); const { token, displayName } = data; console.log(token); if (token && displayName) { window.localStorage.setItem("auth", token); window.localStorage.setItem("displayName", displayName); await apiService.markOnline(token); } }); }, []);el problema es que el token no se guarda o, si está guardado, no se actualiza en el almacenamiento local cuando vuelvo a abrir la aplicación. ¿Cómo enviar y actualizar correctamente el token entre las ventanas?