From e29efd9c93fdd2d72f0259db312cfa07c41f1070 Mon Sep 17 00:00:00 2001 From: Keith Date: Thu, 18 May 2023 17:14:49 +0800 Subject: [PATCH] fix: set default fee rate if fee rate api throws --- .../hooks/useGetCountDownAndFeeRateStats.ts | 50 ++++++++----------- 1 file changed, 22 insertions(+), 28 deletions(-) diff --git a/packages/neuron-ui/src/utils/hooks/useGetCountDownAndFeeRateStats.ts b/packages/neuron-ui/src/utils/hooks/useGetCountDownAndFeeRateStats.ts index a1a97221fa..9caf6cf076 100644 --- a/packages/neuron-ui/src/utils/hooks/useGetCountDownAndFeeRateStats.ts +++ b/packages/neuron-ui/src/utils/hooks/useGetCountDownAndFeeRateStats.ts @@ -1,7 +1,6 @@ import { useState, useEffect, useCallback } from 'react' import { getFeeRateStats } from 'services/chain' -import { AppActions, StateDispatch, useDispatch } from 'states' -import { MEDIUM_FEE_RATE } from 'utils/const' +import { MEDIUM_FEE_RATE, METHOD_NOT_FOUND } from 'utils/const' type CountdownOptions = { seconds?: number @@ -15,34 +14,29 @@ const useGetCountDownAndFeeRateStats = ({ seconds = 30, interval = 1000 }: Count median?: string suggestFeeRate: number }>({ suggestFeeRate: MEDIUM_FEE_RATE }) - const dispatch = useDispatch() - const handleGetFeeRateStatis = useCallback( - (stateDispatch: StateDispatch) => { - getFeeRateStats() - .then(res => { - const { mean, median } = res ?? {} - const suggested = mean && median ? Math.max(1000, Number(mean), Number(median)) : MEDIUM_FEE_RATE + const handleGetFeeRateStatis = useCallback(() => { + getFeeRateStats() + .then(res => { + const { mean, median } = res ?? {} + const suggested = mean && median ? Math.max(1000, Number(mean), Number(median)) : MEDIUM_FEE_RATE - setFeeFatestatsData(states => ({ ...states, ...res, suggestFeeRate: suggested })) - }) - .catch((err: Error & { response?: { status: number } }) => { + setFeeFatestatsData(states => ({ ...states, ...res, suggestFeeRate: suggested })) + }) + .catch((err: Error & { response?: { status: number } }) => { + try { if (err?.response?.status === 404) { - setFeeFatestatsData(states => ({ ...states, suggestFeeRate: MEDIUM_FEE_RATE })) - } else { - stateDispatch({ - type: AppActions.AddNotification, - payload: { - type: 'alert', - timestamp: +new Date(), - content: err.message, - }, - }) + throw new Error('method not found') } - }) - }, - [getFeeRateStats, setFeeFatestatsData] - ) + const errMsg = JSON.parse(err.message) + if (errMsg?.code === METHOD_NOT_FOUND) { + throw new Error('method not found') + } + } catch (error) { + setFeeFatestatsData(states => ({ ...states, suggestFeeRate: MEDIUM_FEE_RATE })) + } + }) + }, []) useEffect(() => { const countInterval = setInterval(() => { @@ -56,9 +50,9 @@ const useGetCountDownAndFeeRateStats = ({ seconds = 30, interval = 1000 }: Count useEffect(() => { if (countDown === seconds) { - handleGetFeeRateStatis(dispatch) + handleGetFeeRateStatis() } - }, [countDown, seconds, dispatch]) + }, [countDown, seconds]) return { countDown, ...feeFatestatsData } }