From 5823485ab79f05ef20463a3055329b68006018b2 Mon Sep 17 00:00:00 2001 From: Cesar <26280794+csrapr@users.noreply.github.com> Date: Mon, 21 Dec 2020 21:12:22 +0000 Subject: [PATCH] Feat: warn admin if address is duplicate --- lib/blacklist.js | 5 +--- .../src/pages/Blacklist/Blacklist.js | 27 +++++++++++++++---- .../src/pages/Blacklist/Blacklist.styles.js | 16 ++++++++--- .../src/pages/Blacklist/BlacklistModal.js | 10 ++++--- 4 files changed, 43 insertions(+), 15 deletions(-) diff --git a/lib/blacklist.js b/lib/blacklist.js index 1e1d91d7..2459d8fb 100644 --- a/lib/blacklist.js +++ b/lib/blacklist.js @@ -21,13 +21,10 @@ const deleteFromBlacklist = (cryptoCode, address) => { const insertIntoBlacklist = (cryptoCode, address) => { return db - .any( + .none( 'insert into blacklist(crypto_code, address, created_by_operator) values($1, $2, $3);', [cryptoCode, address, true] ) - .then(() => { - return { cryptoCode, address } - }) } function blocked(address, cryptoCode) { diff --git a/new-lamassu-admin/src/pages/Blacklist/Blacklist.js b/new-lamassu-admin/src/pages/Blacklist/Blacklist.js index f40c8bfc..5f5efde7 100644 --- a/new-lamassu-admin/src/pages/Blacklist/Blacklist.js +++ b/new-lamassu-admin/src/pages/Blacklist/Blacklist.js @@ -73,14 +73,15 @@ const Blacklist = () => { code: 'BTC', display: 'Bitcoin' }) + const [errorMsg, setErrorMsg] = useState(null) + const [deleteEntry] = useMutation(DELETE_ROW, { onError: () => console.error('Error while deleting row'), refetchQueries: () => ['getBlacklistData'] }) const [addEntry] = useMutation(ADD_ROW, { - onError: () => console.error('Error while adding row'), - onCompleted: () => setShowModal(false), + onError: () => console.log('Error while adding row'), refetchQueries: () => ['getBlacklistData'] }) @@ -114,8 +115,20 @@ const Blacklist = () => { deleteEntry({ variables: { cryptoCode, address } }) } - const addToBlacklist = (cryptoCode, address) => { - addEntry({ variables: { cryptoCode, address } }) + const addToBlacklist = async (cryptoCode, address) => { + setErrorMsg(null) + const res = await addEntry({ variables: { cryptoCode, address } }) + if (!res.errors) { + return setShowModal(false) + } + const duplicateKeyError = res.errors.some(e => { + return e.message.includes('duplicate') + }) + if (duplicateKeyError) { + setErrorMsg('This address is already being blocked') + } else { + setErrorMsg('Server error') + } } return ( @@ -169,7 +182,11 @@ const Blacklist = () => { {showModal && ( setShowModal(false)} + onClose={() => { + setErrorMsg(null) + setShowModal(false) + }} + errorMsg={errorMsg} selectedCoin={clickedItem} addToBlacklist={addToBlacklist} /> diff --git a/new-lamassu-admin/src/pages/Blacklist/Blacklist.styles.js b/new-lamassu-admin/src/pages/Blacklist/Blacklist.styles.js index b4374d41..b20c9bee 100644 --- a/new-lamassu-admin/src/pages/Blacklist/Blacklist.styles.js +++ b/new-lamassu-admin/src/pages/Blacklist/Blacklist.styles.js @@ -1,6 +1,11 @@ -import { spacer, fontPrimary, primaryColor, white } from 'src/styling/variables' - -export default { +import { + spacer, + fontPrimary, + primaryColor, + white, + errorColor +} from 'src/styling/variables' +const styles = { grid: { flex: 1, height: '100%' @@ -35,5 +40,10 @@ export default { }, addressRow: { marginLeft: 8 + }, + error: { + color: errorColor } } + +export default styles diff --git a/new-lamassu-admin/src/pages/Blacklist/BlacklistModal.js b/new-lamassu-admin/src/pages/Blacklist/BlacklistModal.js index 1e07df41..9a6858b2 100644 --- a/new-lamassu-admin/src/pages/Blacklist/BlacklistModal.js +++ b/new-lamassu-admin/src/pages/Blacklist/BlacklistModal.js @@ -12,13 +12,16 @@ import { H3 } from 'src/components/typography' import styles from './Blacklist.styles' const useStyles = makeStyles(styles) -const BlackListModal = ({ onClose, selectedCoin, addToBlacklist }) => { +const BlackListModal = ({ + onClose, + selectedCoin, + addToBlacklist, + errorMsg +}) => { const classes = useStyles() - const handleAddToBlacklist = address => { addToBlacklist(selectedCoin.code, address) } - const placeholderAddress = { BTC: '1ADwinnimZKGgQ3dpyfoUZvJh4p1UWSSpD', ETH: '0x71C7656EC7ab88b098defB751B7401B5f6d8976F', @@ -54,6 +57,7 @@ const BlackListModal = ({ onClose, selectedCoin, addToBlacklist }) => { ? `Blacklist ${R.toLower(selectedCoin.display)} address` : ''} + {errorMsg}