diff --git a/app/components/Login.tsx b/app/components/Login.tsx index 146e86c..f1382a6 100644 --- a/app/components/Login.tsx +++ b/app/components/Login.tsx @@ -5,6 +5,7 @@ import { getSettings } from '../backend/database'; import Settings from './settings/Settings'; // Import the Settings component +import { importDatabase } from './settings/settingUtils'; const Login: React.FC = () => { // State to handle popup visibility @@ -23,14 +24,14 @@ const Login: React.FC = () => { // On component mount, check if there are credentials in localStorage useEffect(() => { - let savedAccountName:string|null; - let savedAccountEmail:string|null; - let savedAccountPassword:string|null; + let savedAccountName: string | null; + let savedAccountEmail: string | null; + let savedAccountPassword: string | null; if (typeof localStorage !== 'undefined') { savedAccountName = localStorage.getItem('accountName'); savedAccountEmail = localStorage.getItem('accountEmail'); savedAccountPassword = localStorage.getItem('accountPassword'); - + // If credentials are found in localStorage, log the user in if (savedAccountName && savedAccountEmail && savedAccountPassword) { setAccountName(savedAccountName); @@ -40,6 +41,14 @@ const Login: React.FC = () => { if (savedAccountName !== null && savedAccountPassword !== null) { const success = await checkCredentials(savedAccountName, savedAccountPassword); setIsLoggedIn(success); // Automatically log in + const useName = localStorage.getItem("accountName"); + const usePassword = localStorage.getItem("accountPassword"); + + if (useName && usePassword) { + await importDatabase(useName, usePassword); + } + + } }; check(); @@ -64,11 +73,19 @@ const Login: React.FC = () => { setIsLoggedIn(true); // Successful login const data = await getSettings(accountName, password) if (data) { - if (typeof localStorage !== 'undefined') { + if (typeof localStorage !== 'undefined') { localStorage.setItem("dataFromServer", data) } } setShowLoginPopup(false); // Close the login popup + const useName = localStorage.getItem("accountName"); + const usePassword = localStorage.getItem("accountPassword"); + + if (useName && usePassword) { + await importDatabase(useName, usePassword); + } + + window.location.reload(); } else { alert('Incorrect credentials'); } diff --git a/app/components/settings/Settings.tsx b/app/components/settings/Settings.tsx index afe571d..28aeb87 100644 --- a/app/components/settings/Settings.tsx +++ b/app/components/settings/Settings.tsx @@ -1,7 +1,7 @@ //#region imports import React, { useState, useEffect } from 'react'; import { applyTheme } from './theme'; -import { exportSettings, importSettings } from './settingUtils'; // Import utility functions +import { exportSettings, importSettings, sendToDatabase, importDatabase } from './settingUtils'; // Import utility functions import { getAllLocalStorageItems } from '../../backend/GetLocalStorage'; import ColorSetting from './ColorSettings'; import TextSettings from './TextSettings' @@ -15,8 +15,6 @@ import { changeSettings, createAccount, deleteAccount, - getSettings, - sendToDatabase } from '../../backend/database'; import ThemeDropdown from './DropDownTheme'; @@ -302,7 +300,7 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = ( useEffect(() => { const useName = localStorage.getItem("accountName"); const usePassword = localStorage.getItem("accountPassword"); - + if (useName && usePassword) { importDatabase(useName, usePassword); } @@ -314,27 +312,6 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = ( } }, []); // Runs only once when the component mounts - const importDatabase = async (useName: string, usePassword: string) => { - const databaseSettings = await getSettings(useName, usePassword); - - // Ensure user settings exist before flattening and storing - if (typeof databaseSettings == 'object' && databaseSettings) { - JSON.stringify(importSettings(databaseSettings), null, 2); // Pass only the current user's settings - } else { - console.error('Database settings are not in the expected format.'); - } - } - - const sendToDatabase = async () => { - let useName = localStorage.getItem("accountName") - let usePassword = localStorage.getItem("accountPassword") - if (useName && usePassword) { - if (await changeSettings(useName, usePassword, JSON.parse(exportSettings()))) { - alert('Data has been transferred') - } - } - }; - // Effect hooks to update localStorage whenever any state changes useEffect(() => { // Flatten nested objects @@ -593,7 +570,7 @@ const Settings: React.FC<{ closeSettings: () => void; accountName: string }> = ( )} ); - //#region custom --> foss + //#region custom --> foss case 'foss': return (