gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-merchant-backoffice] 01/02: finish addressing state persistence


From: gnunet
Subject: [taler-merchant-backoffice] 01/02: finish addressing state persistence
Date: Mon, 10 Jan 2022 19:29:59 +0100

This is an automated email from the git hooks/post-receive script.

ms pushed a commit to branch master
in repository merchant-backoffice.

commit 5ef91927720395a88fcaaadbc6b364bebb768c09
Author: ms <ms@taler.net>
AuthorDate: Sat Jan 8 20:10:12 2022 +0100

    finish addressing state persistence
---
 packages/bank/src/pages/home/index.tsx | 23 +++++++++++++++++------
 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
index 50c8c1d..61cf781 100644
--- 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.

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]