diff --git a/new-lamassu-admin/src/pages/Customers/CustomerData.js b/new-lamassu-admin/src/pages/Customers/CustomerData.js
index b605eb07..af232e7f 100644
--- a/new-lamassu-admin/src/pages/Customers/CustomerData.js
+++ b/new-lamassu-admin/src/pages/Customers/CustomerData.js
@@ -77,6 +77,8 @@ const CustomerData = ({
}) => {
const classes = useStyles()
const [listView, setListView] = useState(false)
+ const [previewPhoto, setPreviewPhoto] = useState(null)
+ const [previewCard, setPreviewCard] = useState(null)
const idData = R.path(['idCardData'])(customer)
const rawExpirationDate = R.path(['expirationDate'])(idData)
@@ -213,9 +215,6 @@ const CustomerData = ({
{
title: 'Name',
titleIcon: ,
- authorize: () => {},
- reject: () => {},
- save: () => {},
isAvailable: false,
editable: true
},
@@ -226,7 +225,7 @@ const CustomerData = ({
authorize: () =>
updateCustomer({ sanctionsOverride: OVERRIDE_AUTHORIZED }),
reject: () => updateCustomer({ sanctionsOverride: OVERRIDE_REJECTED }),
- children: {sanctionsDisplay},
+ children: () => {sanctionsDisplay},
isAvailable: !R.isNil(sanctions),
editable: true
},
@@ -238,20 +237,33 @@ const CustomerData = ({
authorize: () =>
updateCustomer({ frontCameraOverride: OVERRIDE_AUTHORIZED }),
reject: () => updateCustomer({ frontCameraOverride: OVERRIDE_REJECTED }),
- save: values =>
- replacePhoto({
+ save: values => {
+ setPreviewPhoto(null)
+ return replacePhoto({
newPhoto: values.frontCamera,
photoType: 'frontCamera'
- }),
+ })
+ },
+ cancel: () => setPreviewPhoto(null),
deleteEditedData: () => deleteEditedData({ frontCamera: null }),
- children: customer.frontCameraPath ? (
-
- ) : null,
+ children: values => {
+ if (values.frontCamera !== previewPhoto) {
+ setPreviewPhoto(values.frontCamera)
+ }
+
+ return customer.frontCameraPath ? (
+
+ ) : null
+ },
hasImage: true,
validationSchema: customerDataSchemas.frontCamera,
initialValues: initialValues.frontCamera,
@@ -266,18 +278,33 @@ const CustomerData = ({
authorize: () =>
updateCustomer({ idCardPhotoOverride: OVERRIDE_AUTHORIZED }),
reject: () => updateCustomer({ idCardPhotoOverride: OVERRIDE_REJECTED }),
- save: values =>
- replacePhoto({
+ save: values => {
+ setPreviewCard(null)
+ return replacePhoto({
newPhoto: values.idCardPhoto,
photoType: 'idCardPhoto'
- }),
+ })
+ },
+ cancel: () => setPreviewCard(null),
deleteEditedData: () => deleteEditedData({ idCardPhoto: null }),
- children: customer.idCardPhotoPath ? (
-
- ) : null,
+ children: values => {
+ if (values.idCardPhoto !== previewCard) {
+ setPreviewCard(values.idCardPhoto)
+ }
+
+ return customer.idCardPhotoPath ? (
+
+ ) : null
+ },
hasImage: true,
validationSchema: customerDataSchemas.idCardPhoto,
initialValues: initialValues.idCardPhoto,
@@ -292,6 +319,7 @@ const CustomerData = ({
authorize: () => updateCustomer({ usSsnOverride: OVERRIDE_AUTHORIZED }),
reject: () => updateCustomer({ usSsnOverride: OVERRIDE_REJECTED }),
save: values => editCustomer(values),
+ children: () => {},
deleteEditedData: () => deleteEditedData({ usSsn: null }),
validationSchema: customerDataSchemas.usSsn,
initialValues: initialValues.usSsn,
@@ -427,6 +455,7 @@ const CustomerData = ({
titleIcon,
fields,
save,
+ cancel,
deleteEditedData,
retrieveAdditionalData,
children,
@@ -453,6 +482,7 @@ const CustomerData = ({
validationSchema={validationSchema}
initialValues={initialValues}
save={save}
+ cancel={cancel}
deleteEditedData={deleteEditedData}
retrieveAdditionalData={retrieveAdditionalData}
editable={editable}>
diff --git a/new-lamassu-admin/src/pages/Customers/components/EditableCard.js b/new-lamassu-admin/src/pages/Customers/components/EditableCard.js
index 1dc71165..3ea7a03f 100644
--- a/new-lamassu-admin/src/pages/Customers/components/EditableCard.js
+++ b/new-lamassu-admin/src/pages/Customers/components/EditableCard.js
@@ -3,7 +3,7 @@ import { makeStyles } from '@material-ui/core/styles'
import classnames from 'classnames'
import { Form, Formik, Field as FormikField } from 'formik'
import * as R from 'ramda'
-import { useState, React } from 'react'
+import { useState, React, useRef } from 'react'
import ErrorMessage from 'src/components/ErrorMessage'
import PromptWhenDirty from 'src/components/PromptWhenDirty'
@@ -132,14 +132,15 @@ const ReadOnlyField = ({ field, value, ...props }) => {
const EditableCard = ({
fields,
- save,
- authorize,
+ save = () => {},
+ cancel = () => {},
+ authorize = () => {},
hasImage,
- reject,
+ reject = () => {},
state,
title,
titleIcon,
- children,
+ children = () => {},
validationSchema,
initialValues,
deleteEditedData,
@@ -149,6 +150,8 @@ const EditableCard = ({
}) => {
const classes = useStyles()
+ const formRef = useRef()
+
const [editing, setEditing] = useState(false)
const [input, setInput] = useState(null)
const [error, setError] = useState(null)
@@ -187,8 +190,9 @@ const EditableCard = ({
)}
- {children}
+ {children(formRef.current?.values ?? {})}
cancel()}
type="reset">
Cancel