feat: added an alert to confirm fiat currency changes on locales
This commit is contained in:
parent
192ae0c5fb
commit
8853f1fd20
2 changed files with 71 additions and 5 deletions
|
|
@ -1,13 +1,18 @@
|
||||||
import { useQuery, useMutation } from '@apollo/react-hooks'
|
import { useQuery, useMutation } from '@apollo/react-hooks'
|
||||||
|
import { makeStyles } from '@material-ui/core/styles'
|
||||||
import gql from 'graphql-tag'
|
import gql from 'graphql-tag'
|
||||||
import * as R from 'ramda'
|
import * as R from 'ramda'
|
||||||
import React from 'react'
|
import React, { useState } from 'react'
|
||||||
|
|
||||||
|
import Modal from 'src/components/Modal'
|
||||||
|
import { Link } from 'src/components/buttons'
|
||||||
import { Table as EditableTable } from 'src/components/editableTable'
|
import { Table as EditableTable } from 'src/components/editableTable'
|
||||||
import Section from 'src/components/layout/Section'
|
import Section from 'src/components/layout/Section'
|
||||||
import TitleSection from 'src/components/layout/TitleSection'
|
import TitleSection from 'src/components/layout/TitleSection'
|
||||||
|
import { P } from 'src/components/typography'
|
||||||
import { fromNamespace, toNamespace } from 'src/utils/config'
|
import { fromNamespace, toNamespace } from 'src/utils/config'
|
||||||
|
|
||||||
|
import { styles } from './Locales.styles'
|
||||||
import {
|
import {
|
||||||
mainFields,
|
mainFields,
|
||||||
overrides,
|
overrides,
|
||||||
|
|
@ -17,6 +22,8 @@ import {
|
||||||
overridesDefaults
|
overridesDefaults
|
||||||
} from './helper'
|
} from './helper'
|
||||||
|
|
||||||
|
const useStyles = makeStyles(styles)
|
||||||
|
|
||||||
const GET_DATA = gql`
|
const GET_DATA = gql`
|
||||||
query getData {
|
query getData {
|
||||||
config
|
config
|
||||||
|
|
@ -49,20 +56,62 @@ const SAVE_CONFIG = gql`
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
|
const FiatCurrencyChangeAlert = ({ open, close, save }) => {
|
||||||
|
const classes = useStyles()
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Modal
|
||||||
|
title={'Change fiat currency?'}
|
||||||
|
handleClose={close}
|
||||||
|
width={450}
|
||||||
|
height={310}
|
||||||
|
open={open}>
|
||||||
|
<P>
|
||||||
|
Please note that all values you set that were based on your prior fiat
|
||||||
|
currency are still the same. If you need to adjust these to reflect the
|
||||||
|
new fiat currency (such as minimum transaction amounts, fixed fees, and
|
||||||
|
compliance triggers, for example), please do so now.
|
||||||
|
</P>
|
||||||
|
<P>
|
||||||
|
Also, if you have cash-out enabled, you must define new dispenser bill
|
||||||
|
counts for the new currency for cash-out on the new currency to work.
|
||||||
|
</P>
|
||||||
|
<div className={classes.rightAligned}>
|
||||||
|
<Link onClick={close} color="secondary">
|
||||||
|
Cancel
|
||||||
|
</Link>
|
||||||
|
<Link className={classes.rightLink} onClick={save} color="primary">
|
||||||
|
Save
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
</Modal>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
const Locales = ({ name: SCREEN_KEY }) => {
|
const Locales = ({ name: SCREEN_KEY }) => {
|
||||||
const { data } = useQuery(GET_DATA)
|
const { data } = useQuery(GET_DATA)
|
||||||
const [saveConfig] = useMutation(SAVE_CONFIG, {
|
const [saveConfig] = useMutation(SAVE_CONFIG, {
|
||||||
refetchQueries: () => ['getData']
|
refetchQueries: () => ['getData']
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const [dataToSave, setDataToSave] = useState(null)
|
||||||
|
|
||||||
const config = data?.config && fromNamespace(SCREEN_KEY)(data.config)
|
const config = data?.config && fromNamespace(SCREEN_KEY)(data.config)
|
||||||
|
|
||||||
const locale = config && !R.isEmpty(config) ? config : localeDefaults
|
const locale = config && !R.isEmpty(config) ? config : localeDefaults
|
||||||
const localeOverrides = locale.overrides ?? []
|
const localeOverrides = locale.overrides ?? []
|
||||||
|
|
||||||
const save = it => {
|
const handleSave = it => {
|
||||||
const config = toNamespace(SCREEN_KEY)(it.locale[0])
|
const newConfig = toNamespace(SCREEN_KEY)(it.locale[0])
|
||||||
return saveConfig({ variables: { config } })
|
|
||||||
|
if (newConfig.locale_fiatCurrency !== config.fiatCurrency)
|
||||||
|
setDataToSave(newConfig)
|
||||||
|
else save(newConfig)
|
||||||
|
}
|
||||||
|
|
||||||
|
const save = config => {
|
||||||
|
setDataToSave(null)
|
||||||
|
saveConfig({ variables: { config } })
|
||||||
}
|
}
|
||||||
|
|
||||||
const saveOverrides = it => {
|
const saveOverrides = it => {
|
||||||
|
|
@ -72,6 +121,11 @@ const Locales = ({ name: SCREEN_KEY }) => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
<FiatCurrencyChangeAlert
|
||||||
|
open={dataToSave}
|
||||||
|
close={() => setDataToSave(null)}
|
||||||
|
save={() => dataToSave && save(dataToSave)}
|
||||||
|
/>
|
||||||
<TitleSection title="Locales" />
|
<TitleSection title="Locales" />
|
||||||
<Section>
|
<Section>
|
||||||
<EditableTable
|
<EditableTable
|
||||||
|
|
@ -80,7 +134,7 @@ const Locales = ({ name: SCREEN_KEY }) => {
|
||||||
name="locale"
|
name="locale"
|
||||||
enableEdit
|
enableEdit
|
||||||
initialValues={locale}
|
initialValues={locale}
|
||||||
save={save}
|
save={handleSave}
|
||||||
validationSchema={LocaleSchema}
|
validationSchema={LocaleSchema}
|
||||||
data={R.of(locale)}
|
data={R.of(locale)}
|
||||||
elements={mainFields(data)}
|
elements={mainFields(data)}
|
||||||
|
|
|
||||||
12
new-lamassu-admin/src/pages/Locales/Locales.styles.js
Normal file
12
new-lamassu-admin/src/pages/Locales/Locales.styles.js
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
const styles = {
|
||||||
|
rightAligned: {
|
||||||
|
marginTop: '20px',
|
||||||
|
marginLeft: 'auto',
|
||||||
|
marginBottom: '20px'
|
||||||
|
},
|
||||||
|
rightLink: {
|
||||||
|
marginLeft: '20px'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export { styles }
|
||||||
Loading…
Add table
Add a link
Reference in a new issue