commit 5ef91927720395a88fcaaadbc6b364bebb768c09
parent 5de299e258fecb2893b44bca28ab0f1052e23c90
Author: ms <ms@taler.net>
Date: Sat, 8 Jan 2022 20:10:12 +0100
finish addressing state persistence
Diffstat:
1 file changed, 17 insertions(+), 6 deletions(-)
diff --git a/packages/bank/src/pages/home/index.tsx b/packages/bank/src/pages/home/index.tsx
@@ -4,7 +4,7 @@ import { useState, useEffect, StateUpdater } from "preact/hooks";
import { Buffer } from "buffer";
import { useTranslator, Translate } from "../../i18n";
import { QR } from "../../components/QR";
-import { useNotNullLocalStorage } from "../../hooks";
+import { useNotNullLocalStorage, useLocalStorage } from "../../hooks";
/**********************************************
* Type definitions for states and API calls. *
@@ -92,8 +92,14 @@ type BackendStateTypeOpt = BackendStateType | undefined;
function useBackendState(
state?: BackendStateType
): [BackendStateTypeOpt, StateUpdater<BackendStateTypeOpt>] {
- if (state) return useState<BackendStateTypeOpt>(state);
- return useState<BackendStateTypeOpt>();
+
+ const ret = useLocalStorage("backend-state", JSON.stringify(state));
+ const retObj: BackendStateTypeOpt = ret[0] ? JSON.parse(ret[0]) : ret[0];
+ const retSetter: StateUpdater<BackendStateTypeOpt> = function(val) {
+ const newVal = val instanceof Function ? JSON.stringify(val(retObj)) : JSON.stringify(val)
+ ret[1](newVal)
+ }
+ return [retObj, retSetter]
}
/**
@@ -104,10 +110,15 @@ type AccountStateTypeOpt = AccountStateType | undefined;
function useAccountState(
state?: AccountStateType
): [AccountStateTypeOpt, StateUpdater<AccountStateTypeOpt>] {
- if (state) return useState<AccountStateTypeOpt>(state);
- return useState<AccountStateTypeOpt>();
-}
+ const ret = useLocalStorage("account-state", JSON.stringify(state));
+ const retObj: AccountStateTypeOpt = ret[0] ? JSON.parse(ret[0]) : ret[0];
+ const retSetter: StateUpdater<AccountStateTypeOpt> = function(val) {
+ const newVal = val instanceof Function ? JSON.stringify(val(retObj)) : JSON.stringify(val)
+ ret[1](newVal)
+ }
+ return [retObj, retSetter]
+}
/**
* Wrapper providing defaults.