From caea8bc051052cce8448c20f26045dffeecc669a Mon Sep 17 00:00:00 2001
From: BruceLane <bruce@batchass.fr>
Date: Fri, 17 Dec 2021 23:59:17 +0100
Subject: [PATCH] darkmode saved in Storage

---
 src/data/dataApi.ts           | 10 +++++++++-
 src/data/user/user.actions.ts | 15 +++++++++------
 2 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/src/data/dataApi.ts b/src/data/dataApi.ts
index 9f338870..5ee3b105 100644
--- a/src/data/dataApi.ts
+++ b/src/data/dataApi.ts
@@ -11,6 +11,7 @@ const locationsUrl = '/assets/data/locations.json';
 const HAS_LOGGED_IN = 'hasLoggedIn';
 const HAS_SEEN_TUTORIAL = 'hasSeenTutorial';
 const USERNAME = 'username';
+const DARKMODE = 'darkMode';
 
 export const getConfData = async () => {
   const response = await Promise.all([
@@ -41,13 +42,16 @@ export const getUserData = async () => {
   const response = await Promise.all([
     Storage.get({ key: HAS_LOGGED_IN }),
     Storage.get({ key: HAS_SEEN_TUTORIAL }),
+    Storage.get({ key: DARKMODE }),
     Storage.get({ key: USERNAME })]);
   const isLoggedin = await response[0].value === 'true';
   const hasSeenTutorial = await response[1].value === 'true';
-  const username = await response[2].value || undefined;
+  const darkMode = await response[2].value === 'true';
+  const username = await response[3].value || undefined;
   const data = {
     isLoggedin,
     hasSeenTutorial,
+    darkMode,
     username
   }
   return data;
@@ -61,6 +65,10 @@ export const setHasSeenTutorialData = async (hasSeenTutorial: boolean) => {
   await Storage.set({ key: HAS_SEEN_TUTORIAL, value: JSON.stringify(hasSeenTutorial) });
 }
 
+export const setDarkModeData = async (darkMode: boolean) => {
+  await Storage.set({ key: DARKMODE, value: JSON.stringify(darkMode) });
+}
+
 export const setUsernameData = async (username?: string) => {
   if (!username) {
     await Storage.remove({ key: USERNAME });
diff --git a/src/data/user/user.actions.ts b/src/data/user/user.actions.ts
index 81d79006..68fb1d9d 100644
--- a/src/data/user/user.actions.ts
+++ b/src/data/user/user.actions.ts
@@ -1,4 +1,4 @@
-import { getUserData, setIsLoggedInData, setUsernameData, setHasSeenTutorialData } from '../dataApi';
+import { getUserData, setIsLoggedInData, setUsernameData, setHasSeenTutorialData, setDarkModeData } from '../dataApi';
 import { ActionType } from '../../util/types';
 import { UserState } from './user.state';
 
@@ -47,12 +47,15 @@ export const setHasSeenTutorial = (hasSeenTutorial: boolean) => async (dispatch:
     type: 'set-has-seen-tutorial',
     hasSeenTutorial
   } as const);
-} 
+}
 
-export const setDarkMode = (darkMode: boolean) => ({
-  type: 'set-dark-mode',
-  darkMode
-} as const);
+export const setDarkMode = (darkMode: boolean) => async (dispatch: React.Dispatch<any>) => {
+  await setDarkModeData(darkMode);
+  return ({
+    type: 'set-dark-mode',
+    darkMode
+  } as const);
+}
 
 export type UserActions =
   | ActionType<typeof setLoading>