Commit 566da074 authored by Jordan Frankfurt's avatar Jordan Frankfurt Committed by GitHub

feat(risk): cache risk check with ttl (#3965)

parent 31a3840b
import { sendEvent } from 'components/analytics'
import ms from 'ms.macro'
import { useEffect } from 'react'
import { ApplicationModal, setOpenModal } from 'state/application/reducer'
import { useAppDispatch } from 'state/hooks'
......@@ -8,26 +9,34 @@ export default function useAccountRiskCheck(account: string | null | undefined)
useEffect(() => {
if (account) {
const headers = new Headers({ 'Content-Type': 'application/json' })
fetch('https://screening-worker.uniswap.workers.dev', {
method: 'POST',
headers,
body: JSON.stringify({ address: account }),
})
.then((res) => res.json())
.then((data) => {
if (data.block) {
dispatch(setOpenModal(ApplicationModal.BLOCKED_ACCOUNT))
sendEvent({
category: 'Address Screening',
action: 'blocked',
label: account,
const riskCheckLocalStorageKey = `risk-check-${account}`
const now = Date.now()
try {
const storedTime = localStorage.getItem(riskCheckLocalStorageKey)
const checkExpirationTime = storedTime ? parseInt(storedTime) : now - 1
if (checkExpirationTime < Date.now()) {
const headers = new Headers({ 'Content-Type': 'application/json' })
fetch('https://screening-worker.uniswap.workers.dev', {
method: 'POST',
headers,
body: JSON.stringify({ address: account }),
})
.then((res) => res.json())
.then((data) => {
if (data.block) {
dispatch(setOpenModal(ApplicationModal.BLOCKED_ACCOUNT))
sendEvent({
category: 'Address Screening',
action: 'blocked',
label: account,
})
}
})
}
})
.catch(() => {
dispatch(setOpenModal(null))
})
.catch(() => dispatch(setOpenModal(null)))
}
} finally {
localStorage.setItem(riskCheckLocalStorageKey, (now + ms`7 days`).toString())
}
}
}, [account, dispatch])
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment