From 0e71a85cd6e7dbfad767f8be954816d173dab2a6 Mon Sep 17 00:00:00 2001 From: ekzyis Date: Wed, 16 Jul 2025 16:59:14 +0200 Subject: [PATCH] Refactor status transitions in walletsReducer (#2282) --- wallets/client/context/reducer.js | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/wallets/client/context/reducer.js b/wallets/client/context/reducer.js index 9b2d3733..b0cbe09b 100644 --- a/wallets/client/context/reducer.js +++ b/wallets/client/context/reducer.js @@ -27,9 +27,7 @@ export default function reducer (state, action) { .sort((a, b) => a.name.localeCompare(b.name)) return { ...state, - status: statusLocked(state.status) - ? state.status - : walletStatus(wallets), + status: transitionStatus(action, state, wallets.length > 0 ? Status.HAS_WALLETS : Status.NO_WALLETS), wallets, templates } @@ -43,31 +41,32 @@ export default function reducer (state, action) { case WRONG_KEY: return { ...state, - status: Status.PASSPHRASE_REQUIRED + status: transitionStatus(action, state, Status.PASSPHRASE_REQUIRED) } case KEY_MATCH: return { ...state, - status: state.status === Status.LOADING_WALLETS - ? state.status - : walletStatus(state.wallets) + status: transitionStatus(action, state, state.wallets.length > 0 ? Status.HAS_WALLETS : Status.NO_WALLETS) } case NO_KEY: return { ...state, - status: Status.WALLETS_UNAVAILABLE + status: transitionStatus(action, state, Status.WALLETS_UNAVAILABLE) } default: return state } } -function statusLocked (status) { - return [Status.PASSPHRASE_REQUIRED, Status.WALLETS_UNAVAILABLE].includes(status) -} - -function walletStatus (wallets) { - return wallets.length > 0 - ? Status.HAS_WALLETS - : Status.NO_WALLETS +function transitionStatus ({ type }, { status: from }, to) { + switch (type) { + case SET_WALLETS: { + return [Status.PASSPHRASE_REQUIRED, Status.WALLETS_UNAVAILABLE].includes(from) ? from : to + } + case KEY_MATCH: { + return from === Status.LOADING_WALLETS ? from : to + } + default: + return to + } }