merchant-backoffice

ZZZ: Inactive/Deprecated
Log | Files | Refs | Submodules | README

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

finish addressing state persistence

Diffstat:
Mpackages/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 @@ -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.