From e72fb77070f82368a595fc21b3fa115733b7f62b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Salgado?= Date: Tue, 7 Dec 2021 00:05:44 +0000 Subject: [PATCH] refactor: abstract amount of cassettes from the cassette wizard --- .../src/pages/Maintenance/CashCassettes.js | 12 +++---- .../src/pages/Maintenance/Wizard/Wizard.js | 33 ++++++++++++++++--- .../pages/Maintenance/Wizard/WizardStep.js | 10 ++---- 3 files changed, 36 insertions(+), 19 deletions(-) diff --git a/new-lamassu-admin/src/pages/Maintenance/CashCassettes.js b/new-lamassu-admin/src/pages/Maintenance/CashCassettes.js index 7ec10600..caf6dcf2 100644 --- a/new-lamassu-admin/src/pages/Maintenance/CashCassettes.js +++ b/new-lamassu-admin/src/pages/Maintenance/CashCassettes.js @@ -151,7 +151,10 @@ const CashCassettes = () => { machines ) - const onSave = (id, cashbox, cassette1, cassette2, cassette3, cassette4) => { + const getCashoutSettings = id => fromNamespace(id)(cashout) + const isCashOutDisabled = ({ id }) => !getCashoutSettings(id).active + + const onSave = (id, cashbox, cassettes) => { const oldCashboxCount = cashboxCounts[id] if (cashbox < oldCashboxCount) { createBatch({ @@ -167,15 +170,10 @@ const CashCassettes = () => { action: 'setCassetteBills', deviceId: id, cashbox, - cassette1, - cassette2, - cassette3, - cassette4 + ...cassettes } }) } - const getCashoutSettings = id => fromNamespace(id)(cashout) - const isCashOutDisabled = ({ id }) => !getCashoutSettings(id).active const elements = [ { diff --git a/new-lamassu-admin/src/pages/Maintenance/Wizard/Wizard.js b/new-lamassu-admin/src/pages/Maintenance/Wizard/Wizard.js index 7700533d..8d8d2800 100644 --- a/new-lamassu-admin/src/pages/Maintenance/Wizard/Wizard.js +++ b/new-lamassu-admin/src/pages/Maintenance/Wizard/Wizard.js @@ -12,6 +12,8 @@ const MODAL_WIDTH = 554 const MODAL_HEIGHT = 520 const CASHBOX_DEFAULT_CAPACITY = 500 +const CASSETTE_FIELDS = ['cassette1', 'cassette2', 'cassette3', 'cassette4'] + const Wizard = ({ machine, cashoutSettings, locale, onClose, save, error }) => { const [{ step, config }, setState] = useState({ step: 0, @@ -26,6 +28,17 @@ const Wizard = ({ machine, cashoutSettings, locale, onClose, save, error }) => { const title = `Update counts` const isLastStep = step === LAST_STEP + const buildCassetteObj = cassetteInput => { + return R.reduce( + (acc, value) => { + acc[value] = defaultToZero(cassetteInput[value]) + return acc + }, + {}, + CASSETTE_FIELDS + ) + } + const onContinue = it => { if (isLastStep) { const wasCashboxEmptied = [ @@ -34,12 +47,9 @@ const Wizard = ({ machine, cashoutSettings, locale, onClose, save, error }) => { ].includes('YES') const cashbox = wasCashboxEmptied ? 0 : machine?.cashbox + const cassettes = buildCassetteObj(it) - const { cassette1, cassette2, cassette3, cassette4 } = R.map( - defaultToZero, - it - ) - save(machine.id, cashbox, cassette1, cassette2, cassette3, cassette4) + save(machine.id, cashbox, cassettes) return onClose() } @@ -66,6 +76,18 @@ const Wizard = ({ machine, cashoutSettings, locale, onClose, save, error }) => { })) ) + const makeInitialValues = () => + !R.isEmpty(cashoutSettings) + ? R.reduce( + (acc, value) => { + acc[`cassette${value}`] = '' + return acc + }, + {}, + R.range(1, numberOfCassettes + 1) + ) + : {} + const steps = R.prepend( { type: 'cashbox', @@ -98,6 +120,7 @@ const Wizard = ({ machine, cashoutSettings, locale, onClose, save, error }) => { steps={steps} fiatCurrency={locale.fiatCurrency} onContinue={onContinue} + initialValues={makeInitialValues()} /> )} diff --git a/new-lamassu-admin/src/pages/Maintenance/Wizard/WizardStep.js b/new-lamassu-admin/src/pages/Maintenance/Wizard/WizardStep.js index 8de43f87..d7dcee94 100644 --- a/new-lamassu-admin/src/pages/Maintenance/Wizard/WizardStep.js +++ b/new-lamassu-admin/src/pages/Maintenance/Wizard/WizardStep.js @@ -112,7 +112,8 @@ const WizardStep = ({ lastStep, steps, fiatCurrency, - onContinue + onContinue, + initialValues }) => { const classes = useStyles() @@ -211,12 +212,7 @@ const WizardStep = ({ validateOnBlur={false} validateOnChange={false} onSubmit={onContinue} - initialValues={{ - cassette1: '', - cassette2: '', - cassette3: '', - cassette4: '' - }} + initialValues={initialValues} enableReinitialize validationSchema={steps[step - 1].schema}> {({ values }) => (