From e65c053a6296a8012bae385312e181afde278b7c Mon Sep 17 00:00:00 2001 From: Brandon Presley Date: Sun, 12 Nov 2023 23:27:28 +1300 Subject: [PATCH] Add setting to choose the startup page Closes #186 --- App.tsx | 15 ++++++++---- AppDrawer.tsx | 14 +++++++++++- AppStack.tsx | 10 ++++++-- SettingsPage.tsx | 24 ++++++++++++++++++++ data-source.ts | 2 ++ drawer-param-list.ts | 6 ++--- migrations/1699783784680-settings-startup.ts | 9 ++++++++ settings.ts | 3 +++ 8 files changed, 72 insertions(+), 11 deletions(-) create mode 100644 migrations/1699783784680-settings-startup.ts diff --git a/App.tsx b/App.tsx index ddf3eb8..9feb2b4 100644 --- a/App.tsx +++ b/App.tsx @@ -20,6 +20,7 @@ import { emitter } from "./emitter"; import { TickEvent } from "./TimerPage"; import { TOAST } from "./toast"; import { ThemeContext } from "./use-theme"; +import Settings from "./settings"; export const CombinedDefaultTheme = { ...NavigationDefaultTheme, @@ -45,6 +46,7 @@ const App = () => { const [snackbar, setSnackbar] = useState(""); const [appTheme, setAppTheme] = useState("system"); const [progress, setProgress] = useState(0); + const [settings, setSettings] = useState(); const [lightColor, setLightColor] = useState( CombinedDefaultTheme.colors.primary @@ -57,12 +59,15 @@ const App = () => { useEffect(() => { (async () => { if (!AppDataSource.isInitialized) await AppDataSource.initialize(); - const settings = await settingsRepo.findOne({ where: {} }); - setAppTheme(settings.theme); - if (settings.lightColor) setLightColor(settings.lightColor); - if (settings.darkColor) setDarkColor(settings.darkColor); + const gotSettings = await settingsRepo.findOne({ where: {} }); + console.log({ gotSettings }); + setSettings(gotSettings); + setAppTheme(gotSettings.theme); + if (gotSettings.lightColor) setLightColor(gotSettings.lightColor); + if (gotSettings.darkColor) setDarkColor(gotSettings.darkColor); setInitialized(true); })(); + const descriptions = [ emitter.addListener(TOAST, ({ value }: { value: string }) => { setSnackbar(value); @@ -110,7 +115,7 @@ const App = () => { setDarkColor, }} > - + )} diff --git a/AppDrawer.tsx b/AppDrawer.tsx index a9706bf..bdd993c 100644 --- a/AppDrawer.tsx +++ b/AppDrawer.tsx @@ -10,10 +10,19 @@ import SettingsPage from "./SettingsPage"; import TimerPage from "./TimerPage"; import useDark from "./use-dark"; import WeightList from "./WeightList"; +import Settings from "./settings"; +import { StackScreenProps } from "@react-navigation/stack"; const Drawer = createDrawerNavigator(); -export default function AppDrawer() { +interface AppDrawerParams { + settings: Settings; +} + +export default function AppDrawer({ + route, +}: StackScreenProps<{ settings: AppDrawerParams }>) { + console.log(route.params.settings.startup); const dark = useDark(); return ( @@ -23,6 +32,9 @@ export default function AppDrawer() { swipeEdgeWidth: 1000, headerShown: false, }} + initialRouteName={ + (route.params.settings.startup || "Home") as keyof DrawerParams + } > (); -export default function AppStack() { +export default function AppStack({ settings }: { settings: Settings }) { + console.log({ settings }); return ( - + diff --git a/SettingsPage.tsx b/SettingsPage.tsx index f0dba58..58e9b43 100644 --- a/SettingsPage.tsx +++ b/SettingsPage.tsx @@ -122,6 +122,30 @@ export default function SettingsPage() { const today = new Date(); const data: Item[] = [ + { + name: "Start up page", + renderItem: (name: string) => ( +