From 67c72909ff044b8241d409d17a467984ea06c4e0 Mon Sep 17 00:00:00 2001 From: Vomitblood Date: Wed, 7 Aug 2024 10:47:14 +0800 Subject: [PATCH] fixed paths initialization for settings --- bun.lockb | Bin 173096 -> 174905 bytes package.json | 2 +- src/components/Generic/FloatingDialog.tsx | 1 + src/components/HeaderBar/HeaderBar.tsx | 30 ++++++---- .../HeaderBar/Settings/Settings.tsx | 53 +++++++++++++++++- src/components/HeaderBar/WindowButtons.tsx | 8 ++- src/contexts/LoadingContext.tsx | 0 src/contexts/SettingsContext.tsx | 22 ++++---- src/lib/settings.ts | 7 ++- src/pages/testing.tsx | 23 +++++++- 10 files changed, 118 insertions(+), 28 deletions(-) create mode 100644 src/contexts/LoadingContext.tsx diff --git a/bun.lockb b/bun.lockb index f4ba319658f6801bcaa57799fbfba9c2045061a5..aa791bee4d4b5e96905f537ee1aa2d4dd0b2efd0 100755 GIT binary patch delta 32775 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 delta 32590 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 = ({ > { const router = useRouter(); @@ -42,15 +42,25 @@ export const HeaderBar = () => { flexDirection: "row", }} > - { - router.push("/testing"); + - - - - + { + router.push("/testing"); + }} + > + + + + + ); diff --git a/src/components/HeaderBar/Settings/Settings.tsx b/src/components/HeaderBar/Settings/Settings.tsx index 088235c..5639e1d 100644 --- a/src/components/HeaderBar/Settings/Settings.tsx +++ b/src/components/HeaderBar/Settings/Settings.tsx @@ -1,11 +1,12 @@ import { SettingsOutlined } from "@mui/icons-material"; -import { LoadingButton } from "@mui/lab"; -import { Box, Button, IconButton, Typography, useTheme } from "@mui/material"; +import { LoadingButton, TabContext, TabList, TabPanel } from "@mui/lab"; +import { Box, Button, IconButton, Tab, useTheme } from "@mui/material"; import { useAtom } from "jotai"; import { useEffect, useState } from "react"; import { useSettings } from "../../../contexts/SettingsContext"; import { settingsAtom } from "../../../lib/store/jotai/settings"; import { FloatingDialog } from "../../Generic/FloatingDialog"; +import { SettingsTabDisplay } from "./SettingsTabDisplay"; export const Settings = () => { // contexts @@ -60,7 +61,53 @@ export const Settings = () => { return ( Settings} + body={ + + + { + subTabChangeEvent(value); + }} + scrollButtons={true} + sx={{ + borderBottom: "1px solid " + theme.palette.divider, + }} + variant="scrollable" + > + + + + + + + + + + } bottomBar={ { }); return ( - + = ({ children }) => { const [settings, setSettings] = useState(defaultSettings); const [settingsLoading, setSettingsLoading] = useState(true); + const fetchSettings = async () => { + try { + const existingSettings = await readConfigFile(); + setSettings(existingSettings); + } catch (error) { + logcat.log(`Failed to load settings: ${error}`, "ERROR"); + } finally { + setSettingsLoading(false); + } + }; + const updateSettings = async (newSettings: SettingsType) => { try { await writeConfigFile(newSettings); @@ -43,17 +54,6 @@ export const SettingsProvider: FC<{ children: ReactNode }> = ({ children }) => { // fetch user settings from local on first load every time useEffect(() => { - const fetchSettings = async () => { - try { - const existingSettings = await readConfigFile(); - setSettings(existingSettings); - } catch (error) { - logcat.log(`Failed to load settings: ${error}`, "ERROR"); - } finally { - setSettingsLoading(false); - } - }; - fetchSettings(); }, []); diff --git a/src/lib/settings.ts b/src/lib/settings.ts index d286767..0d14f8f 100644 --- a/src/lib/settings.ts +++ b/src/lib/settings.ts @@ -1,3 +1,4 @@ +import { merge } from "lodash"; import Paths from "./path"; import { readTomlFile, writeTomlFile } from "./utils/toml"; @@ -25,9 +26,12 @@ export const readConfigFile = async (): Promise => { try { // try to read the config file + await Paths.initialize(); const data = await readTomlFile(Paths.getPath("configDirectory") + "config.toml"); if (data) { existingData = data; + console.log("existing data"); + console.log(existingData); } } catch (error) { // file does not exist, called function will throw error @@ -37,11 +41,12 @@ export const readConfigFile = async (): Promise => { // merge the existing data with the default settings // existing data will overwrite the default settings for the properties that exist - const mergedSettings = { ...defaultSettings, ...existingData }; + const mergedSettings = merge({}, defaultSettings, existingData); return mergedSettings; }; export const writeConfigFile = async (settingsValues: SettingsType): Promise => { await writeTomlFile(Paths.getPath("configDirectory") + "config.toml", settingsValues); + console.debug("Settings file written successfully."); }; diff --git a/src/pages/testing.tsx b/src/pages/testing.tsx index 298a0c6..506d982 100644 --- a/src/pages/testing.tsx +++ b/src/pages/testing.tsx @@ -29,7 +29,28 @@ export default function Testing() { > reset settings - +