From 8cf08ed2f301165204a138dc5bcb5b702efec392 Mon Sep 17 00:00:00 2001 From: WhiteMind Date: Fri, 10 Nov 2023 14:36:12 +0800 Subject: [PATCH 1/6] Refactored chart cache from localstroage-based to http-based (#135) * refactor: remove the local caching mechanism for the chart * refactor: remove the unnecessary hook useChartQueryWithCache * refactor: use a safer key for the chart query --- .../Home/AverageBlockTimeChart/index.tsx | 14 ++--- src/pages/Home/HashRateChart/index.tsx | 8 +-- .../activities/AddressBalanceRank.tsx | 3 +- .../activities/AddressCount.tsx | 3 +- .../activities/BalanceDistribution.tsx | 3 +- .../StatisticsChart/activities/CellCount.tsx | 3 +- .../activities/TransactionCount.tsx | 3 +- .../activities/TxFeeHistory.tsx | 3 +- .../block/AverageBlockTime.tsx | 5 +- .../block/BlockTimeDistribution.tsx | 3 +- .../block/EpochTimeDistribution.tsx | 3 +- src/pages/StatisticsChart/common/index.tsx | 14 +++-- .../StatisticsChart/mining/Difficulty.tsx | 3 +- .../mining/DifficultyHashRate.tsx | 3 +- .../mining/DifficultyUncleRateEpoch.tsx | 3 +- src/pages/StatisticsChart/mining/HashRate.tsx | 5 +- .../mining/MinerAddressDistribution.tsx | 3 +- .../mining/MinerVersionDistribution.tsx | 3 +- .../StatisticsChart/mining/UncleRate.tsx | 3 +- .../monetary/AnnualPercentageCompensation.tsx | 3 +- .../monetary/InflationRate.tsx | 3 +- .../StatisticsChart/monetary/Liquidity.tsx | 3 +- .../monetary/SecondaryIssuance.tsx | 3 +- .../StatisticsChart/monetary/TotalSupply.tsx | 3 +- .../nervosDao/CirculationRatio.tsx | 3 +- .../nervosDao/NewDaoDeposit.tsx | 3 +- .../nervosDao/TotalDaoDeposit.tsx | 3 +- src/utils/hook.ts | 53 +------------------ 28 files changed, 45 insertions(+), 120 deletions(-) diff --git a/src/pages/Home/AverageBlockTimeChart/index.tsx b/src/pages/Home/AverageBlockTimeChart/index.tsx index 261c9899b..f338ea72a 100644 --- a/src/pages/Home/AverageBlockTimeChart/index.tsx +++ b/src/pages/Home/AverageBlockTimeChart/index.tsx @@ -3,15 +3,15 @@ import 'echarts/lib/chart/line' import 'echarts/lib/component/title' import echarts from 'echarts/lib/echarts' import { useTranslation } from 'react-i18next' +import { useQuery } from '@tanstack/react-query' import { parseDateNoTime } from '../../../utils/date' import { localeNumberString } from '../../../utils/number' import SmallLoading from '../../../components/Loading/SmallLoading' import { HomeChartLink, ChartLoadingPanel } from './styled' import ChartNoDataImage from '../../../assets/chart_no_data_white.png' -import { useChartQueryWithCache, useIsLGScreen } from '../../../utils/hook' +import { useIsLGScreen } from '../../../utils/hook' import { ChartItem, explorerService } from '../../../services/ExplorerService' import { ReactChartCore } from '../../StatisticsChart/common' -import { AverageBlockTimeCacheKey } from '../../StatisticsChart/block/AverageBlockTime' const useOption = () => { const { t } = useTranslation() @@ -109,10 +109,12 @@ export default memo(() => { const isLG = useIsLGScreen() const parseOption = useOption() - const query = useChartQueryWithCache( - explorerService.api.fetchStatisticAverageBlockTimes, - AverageBlockTimeCacheKey, - 'date', + const query = useQuery( + ['fetchStatisticAverageBlockTimes'], + () => explorerService.api.fetchStatisticAverageBlockTimes(), + { + refetchOnWindowFocus: false, + }, ) const fullStatisticAverageBlockTimes = useMemo(() => query.data ?? [], [query.data]) diff --git a/src/pages/Home/HashRateChart/index.tsx b/src/pages/Home/HashRateChart/index.tsx index e67d068cd..21f3d46b0 100644 --- a/src/pages/Home/HashRateChart/index.tsx +++ b/src/pages/Home/HashRateChart/index.tsx @@ -4,15 +4,15 @@ import 'echarts/lib/chart/line' import 'echarts/lib/component/title' import echarts from 'echarts/lib/echarts' import { useTranslation } from 'react-i18next' +import { useQuery } from '@tanstack/react-query' import { handleAxis } from '../../../utils/chart' import { parseDateNoTime } from '../../../utils/date' import SmallLoading from '../../../components/Loading/SmallLoading' import { HomeChartLink, ChartLoadingPanel } from './styled' import ChartNoDataImage from '../../../assets/chart_no_data_white.png' -import { useChartQueryWithCache, useIsLGScreen } from '../../../utils/hook' +import { useIsLGScreen } from '../../../utils/hook' import { ChartItem, explorerService } from '../../../services/ExplorerService' import { ReactChartCore } from '../../StatisticsChart/common' -import { HashRateCacheKey } from '../../StatisticsChart/mining/HashRate' const useOption = () => { const { t } = useTranslation() @@ -103,7 +103,9 @@ const useOption = () => { } export default memo(() => { const isLG = useIsLGScreen() - const query = useChartQueryWithCache(explorerService.api.fetchStatisticHashRate, HashRateCacheKey, 'date') + const query = useQuery(['fetchStatisticHashRate'], () => explorerService.api.fetchStatisticHashRate(), { + refetchOnWindowFocus: false, + }) const fullStatisticHashRates = useMemo(() => query.data ?? [], [query.data]) const parseOption = useOption() diff --git a/src/pages/StatisticsChart/activities/AddressBalanceRank.tsx b/src/pages/StatisticsChart/activities/AddressBalanceRank.tsx index c50ce3647..488d0e173 100644 --- a/src/pages/StatisticsChart/activities/AddressBalanceRank.tsx +++ b/src/pages/StatisticsChart/activities/AddressBalanceRank.tsx @@ -143,8 +143,7 @@ export const AddressBalanceRankChart = ({ isThumbnail = false }: { isThumbnail?: onFetched={setStatisticAddressBalanceRanks} getEChartOption={getEChartOption} toCSV={toCSV} - cacheKey="AddressBalanceRank" - cacheMode="date" + queryKey="fetchStatisticAddressBalanceRank" /> ) } diff --git a/src/pages/StatisticsChart/activities/AddressCount.tsx b/src/pages/StatisticsChart/activities/AddressCount.tsx index 31e0393d2..90f35e522 100644 --- a/src/pages/StatisticsChart/activities/AddressCount.tsx +++ b/src/pages/StatisticsChart/activities/AddressCount.tsx @@ -108,8 +108,7 @@ export const AddressCountChart = ({ isThumbnail = false }: { isThumbnail?: boole fetchData={explorerService.api.fetchStatisticAddressCount} getEChartOption={useOption} toCSV={toCSV} - cacheKey="AddressCount" - cacheMode="date" + queryKey="fetchStatisticAddressCount" /> ) } diff --git a/src/pages/StatisticsChart/activities/BalanceDistribution.tsx b/src/pages/StatisticsChart/activities/BalanceDistribution.tsx index a003f2a47..f1ac41ba4 100644 --- a/src/pages/StatisticsChart/activities/BalanceDistribution.tsx +++ b/src/pages/StatisticsChart/activities/BalanceDistribution.tsx @@ -187,8 +187,7 @@ export const BalanceDistributionChart = ({ isThumbnail = false }: { isThumbnail? fetchData={explorerService.api.fetchStatisticBalanceDistribution} getEChartOption={useOption} toCSV={toCSV} - cacheKey="BalanceDistribution" - cacheMode="date" + queryKey="fetchStatisticBalanceDistribution" /> ) } diff --git a/src/pages/StatisticsChart/activities/CellCount.tsx b/src/pages/StatisticsChart/activities/CellCount.tsx index d65638888..d42a75093 100644 --- a/src/pages/StatisticsChart/activities/CellCount.tsx +++ b/src/pages/StatisticsChart/activities/CellCount.tsx @@ -194,8 +194,7 @@ export const CellCountChart = ({ isThumbnail = false }: { isThumbnail?: boolean fetchData={explorerService.api.fetchStatisticCellCount} getEChartOption={useOption} toCSV={toCSV} - cacheKey="CellCount" - cacheMode="date" + queryKey="fetchStatisticCellCount" /> ) } diff --git a/src/pages/StatisticsChart/activities/TransactionCount.tsx b/src/pages/StatisticsChart/activities/TransactionCount.tsx index f85e99713..c5f831849 100644 --- a/src/pages/StatisticsChart/activities/TransactionCount.tsx +++ b/src/pages/StatisticsChart/activities/TransactionCount.tsx @@ -106,8 +106,7 @@ export const TransactionCountChart = ({ isThumbnail = false }: { isThumbnail?: b fetchData={explorerService.api.fetchStatisticTransactionCount} getEChartOption={useOption} toCSV={toCSV} - cacheKey="TransactionCount" - cacheMode="date" + queryKey="fetchStatisticTransactionCount" /> ) } diff --git a/src/pages/StatisticsChart/activities/TxFeeHistory.tsx b/src/pages/StatisticsChart/activities/TxFeeHistory.tsx index aa7edaddd..d2c2682c5 100644 --- a/src/pages/StatisticsChart/activities/TxFeeHistory.tsx +++ b/src/pages/StatisticsChart/activities/TxFeeHistory.tsx @@ -112,8 +112,7 @@ export const TxFeeHistoryChart = ({ isThumbnail = false }: { isThumbnail?: boole fetchData={explorerService.api.fetchStatisticTxFeeHistory} getEChartOption={useOption} toCSV={toCSV} - cacheKey="TransactionFee" - cacheMode="date" + queryKey="fetchStatisticTxFeeHistory" /> ) } diff --git a/src/pages/StatisticsChart/block/AverageBlockTime.tsx b/src/pages/StatisticsChart/block/AverageBlockTime.tsx index 1b72c92e6..4baa619dc 100644 --- a/src/pages/StatisticsChart/block/AverageBlockTime.tsx +++ b/src/pages/StatisticsChart/block/AverageBlockTime.tsx @@ -7,8 +7,6 @@ import { ChartItem, explorerService } from '../../../services/ExplorerService' import { useCurrentLanguage } from '../../../utils/i18n' import { ChartColorConfig } from '../../../constants/common' -export const AverageBlockTimeCacheKey = 'AverageBlockTime' - const useOption = ( statisticAverageBlockTimes: ChartItem.AverageBlockTime[], chartColor: ChartColorConfig, @@ -183,8 +181,7 @@ export const AverageBlockTimeChart = ({ isThumbnail = false }: { isThumbnail?: b fetchData={explorerService.api.fetchStatisticAverageBlockTimes} getEChartOption={useOption} toCSV={toCSV} - cacheKey={AverageBlockTimeCacheKey} - cacheMode="date" + queryKey="fetchStatisticAverageBlockTimes" /> ) } diff --git a/src/pages/StatisticsChart/block/BlockTimeDistribution.tsx b/src/pages/StatisticsChart/block/BlockTimeDistribution.tsx index f017e0648..135259e4c 100644 --- a/src/pages/StatisticsChart/block/BlockTimeDistribution.tsx +++ b/src/pages/StatisticsChart/block/BlockTimeDistribution.tsx @@ -104,8 +104,7 @@ export const BlockTimeDistributionChart = ({ isThumbnail = false }: { isThumbnai fetchData={explorerService.api.fetchStatisticBlockTimeDistribution} getEChartOption={useOption} toCSV={toCSV} - cacheKey="BlockTimeDistribution" - cacheMode="date" + queryKey="fetchStatisticBlockTimeDistribution" /> ) } diff --git a/src/pages/StatisticsChart/block/EpochTimeDistribution.tsx b/src/pages/StatisticsChart/block/EpochTimeDistribution.tsx index d51c8afcf..9353ba1f1 100644 --- a/src/pages/StatisticsChart/block/EpochTimeDistribution.tsx +++ b/src/pages/StatisticsChart/block/EpochTimeDistribution.tsx @@ -111,8 +111,7 @@ export const EpochTimeDistributionChart = ({ isThumbnail = false }: { isThumbnai fetchData={explorerService.api.fetchStatisticEpochTimeDistribution} getEChartOption={useOption} toCSV={toCSV} - cacheKey="EpochTimeDistribution" - cacheMode="date" + queryKey="fetchStatisticEpochTimeDistribution" /> ) } diff --git a/src/pages/StatisticsChart/common/index.tsx b/src/pages/StatisticsChart/common/index.tsx index 002b6e05c..0915dfd1c 100644 --- a/src/pages/StatisticsChart/common/index.tsx +++ b/src/pages/StatisticsChart/common/index.tsx @@ -13,6 +13,7 @@ import 'echarts/lib/component/brush' import echarts from 'echarts/lib/echarts' import { EChartOption, ECharts } from 'echarts' import { useTranslation } from 'react-i18next' +import { useQuery } from '@tanstack/react-query' import { LoadingPanel, ChartNoDataPanel, ChartDetailTitle, ChartDetailPanel, ChartNotePanel } from './styled' import Loading from '../../../components/Loading' import ChartNoDataImage from '../../../assets/chart_no_data.png' @@ -20,11 +21,10 @@ import ChartNoDataAggronImage from '../../../assets/chart_no_data_aggron.png' import { isMainnet } from '../../../utils/chain' import SmallLoading from '../../../components/Loading/SmallLoading' import Content from '../../../components/Content' -import { useChartQueryWithCache, useIsMobile, usePrevious, useWindowResize } from '../../../utils/hook' +import { useIsMobile, usePrevious, useWindowResize } from '../../../utils/hook' import { isDeepEqual } from '../../../utils/util' import { HelpTip } from '../../../components/HelpTip' import { ChartColor, ChartColorConfig } from '../../../constants/common' -import { Response } from '../../../services/ExplorerService' const LoadingComp = ({ isThumbnail }: { isThumbnail?: boolean }) => (isThumbnail ? : ) @@ -161,7 +161,7 @@ export interface SmartChartPageProps { note?: string isThumbnail?: boolean chartProps?: Partial> - fetchData: () => Promise[]>> + fetchData: () => Promise onFetched?: (dataList: T[]) => void getEChartOption: ( dataList: T[], @@ -170,8 +170,7 @@ export interface SmartChartPageProps { isThumbnail?: boolean, ) => echarts.EChartOption toCSV: (dataList: T[]) => (string | number)[][] - cacheKey?: string - cacheMode?: 'forever' | 'date' | 'epoch' + queryKey?: string } export function SmartChartPage({ @@ -184,12 +183,11 @@ export function SmartChartPage({ onFetched, getEChartOption, toCSV, - cacheKey, - cacheMode = 'forever', + queryKey, }: SmartChartPageProps): ReactElement { const isMobile = useIsMobile() - const query = useChartQueryWithCache(fetchData, cacheKey, cacheMode) + const query = useQuery(['SmartChartPage', queryKey], () => fetchData(), { refetchOnWindowFocus: false }) const dataList = useMemo(() => query.data ?? [], [query.data]) useEffect(() => { if (onFetched && query.data) { diff --git a/src/pages/StatisticsChart/mining/Difficulty.tsx b/src/pages/StatisticsChart/mining/Difficulty.tsx index da7890285..1c91a506d 100644 --- a/src/pages/StatisticsChart/mining/Difficulty.tsx +++ b/src/pages/StatisticsChart/mining/Difficulty.tsx @@ -108,8 +108,7 @@ export const DifficultyChart = ({ isThumbnail = false }: { isThumbnail?: boolean fetchData={explorerService.api.fetchStatisticDifficulty} getEChartOption={useOption} toCSV={toCSV} - cacheKey="Difficulty" - cacheMode="date" + queryKey="fetchStatisticDifficulty" /> ) } diff --git a/src/pages/StatisticsChart/mining/DifficultyHashRate.tsx b/src/pages/StatisticsChart/mining/DifficultyHashRate.tsx index 40f8532ac..05799bf64 100644 --- a/src/pages/StatisticsChart/mining/DifficultyHashRate.tsx +++ b/src/pages/StatisticsChart/mining/DifficultyHashRate.tsx @@ -201,8 +201,7 @@ export const DifficultyHashRateChart = ({ isThumbnail = false }: { isThumbnail?: fetchData={explorerService.api.fetchStatisticDifficultyHashRate} getEChartOption={useOption} toCSV={toCSV} - cacheKey="DifficultyHashRate" - cacheMode="epoch" + queryKey="fetchStatisticDifficultyHashRate" /> ) } diff --git a/src/pages/StatisticsChart/mining/DifficultyUncleRateEpoch.tsx b/src/pages/StatisticsChart/mining/DifficultyUncleRateEpoch.tsx index 7229f9b0e..a3f6a9373 100644 --- a/src/pages/StatisticsChart/mining/DifficultyUncleRateEpoch.tsx +++ b/src/pages/StatisticsChart/mining/DifficultyUncleRateEpoch.tsx @@ -217,8 +217,7 @@ export const DifficultyUncleRateEpochChart: FC<{ isThumbnail?: boolean }> = ({ i fetchData={explorerService.api.fetchStatisticDifficultyUncleRateEpoch} getEChartOption={useOption} toCSV={toCSV} - cacheKey="DifficultyUncleRateEpoch" - cacheMode="epoch" + queryKey="fetchStatisticDifficultyUncleRateEpoch" /> ) } diff --git a/src/pages/StatisticsChart/mining/HashRate.tsx b/src/pages/StatisticsChart/mining/HashRate.tsx index a0b6d2930..7a580852a 100644 --- a/src/pages/StatisticsChart/mining/HashRate.tsx +++ b/src/pages/StatisticsChart/mining/HashRate.tsx @@ -8,8 +8,6 @@ import { ChartItem, explorerService } from '../../../services/ExplorerService' import { useCurrentLanguage } from '../../../utils/i18n' import { ChartColorConfig } from '../../../constants/common' -export const HashRateCacheKey = 'HashRate' - const useOption = ( statisticHashRates: ChartItem.HashRate[], chartColor: ChartColorConfig, @@ -109,8 +107,7 @@ export const HashRateChart = ({ isThumbnail = false }: { isThumbnail?: boolean } fetchData={explorerService.api.fetchStatisticHashRate} getEChartOption={useOption} toCSV={toCSV} - cacheKey={HashRateCacheKey} - cacheMode="date" + queryKey="fetchStatisticHashRate" /> ) } diff --git a/src/pages/StatisticsChart/mining/MinerAddressDistribution.tsx b/src/pages/StatisticsChart/mining/MinerAddressDistribution.tsx index ce6e70499..d6c30de05 100644 --- a/src/pages/StatisticsChart/mining/MinerAddressDistribution.tsx +++ b/src/pages/StatisticsChart/mining/MinerAddressDistribution.tsx @@ -122,8 +122,7 @@ export const MinerAddressDistributionChart = ({ isThumbnail = false }: { isThumb fetchData={explorerService.api.fetchStatisticMinerAddressDistribution} getEChartOption={getEChartOption} toCSV={toCSV} - cacheKey="MinerAddressDistribution" - cacheMode="date" + queryKey="fetchStatisticMinerAddressDistribution" /> ) } diff --git a/src/pages/StatisticsChart/mining/MinerVersionDistribution.tsx b/src/pages/StatisticsChart/mining/MinerVersionDistribution.tsx index c0e012016..977ab36bf 100644 --- a/src/pages/StatisticsChart/mining/MinerVersionDistribution.tsx +++ b/src/pages/StatisticsChart/mining/MinerVersionDistribution.tsx @@ -121,8 +121,7 @@ export const MinerVersionDistributionChart = ({ isThumbnail = false }: { isThumb fetchData={fetchData} getEChartOption={useOption} toCSV={toCSV} - cacheKey="MinerVersionDistribution" - cacheMode="date" + queryKey="fetchStatisticMinerVersionDistribution" /> ) } diff --git a/src/pages/StatisticsChart/mining/UncleRate.tsx b/src/pages/StatisticsChart/mining/UncleRate.tsx index 8241f77dc..ff3f7abb1 100644 --- a/src/pages/StatisticsChart/mining/UncleRate.tsx +++ b/src/pages/StatisticsChart/mining/UncleRate.tsx @@ -123,8 +123,7 @@ export const UncleRateChart = ({ isThumbnail = false }: { isThumbnail?: boolean fetchData={explorerService.api.fetchStatisticUncleRate} getEChartOption={useOption} toCSV={toCSV} - cacheKey="UncleRate" - cacheMode="date" + queryKey="fetchStatisticUncleRate" /> ) } diff --git a/src/pages/StatisticsChart/monetary/AnnualPercentageCompensation.tsx b/src/pages/StatisticsChart/monetary/AnnualPercentageCompensation.tsx index c74ac19b7..e9b0c30c5 100644 --- a/src/pages/StatisticsChart/monetary/AnnualPercentageCompensation.tsx +++ b/src/pages/StatisticsChart/monetary/AnnualPercentageCompensation.tsx @@ -108,8 +108,7 @@ export const AnnualPercentageCompensationChart = ({ isThumbnail = false }: { isT fetchData={explorerService.api.fetchStatisticAnnualPercentageCompensation} getEChartOption={useOption} toCSV={toCSV} - cacheKey="APC" - cacheMode="forever" + queryKey="fetchStatisticAnnualPercentageCompensation" /> ) } diff --git a/src/pages/StatisticsChart/monetary/InflationRate.tsx b/src/pages/StatisticsChart/monetary/InflationRate.tsx index ca1266fc4..c16c3eea4 100644 --- a/src/pages/StatisticsChart/monetary/InflationRate.tsx +++ b/src/pages/StatisticsChart/monetary/InflationRate.tsx @@ -167,8 +167,7 @@ export const InflationRateChart = ({ isThumbnail = false }: { isThumbnail?: bool fetchData={explorerService.api.fetchStatisticInflationRate} getEChartOption={useOption} toCSV={toCSV} - cacheKey="InflationRate" - cacheMode="forever" + queryKey="fetchStatisticInflationRate" /> ) } diff --git a/src/pages/StatisticsChart/monetary/Liquidity.tsx b/src/pages/StatisticsChart/monetary/Liquidity.tsx index e10e59925..e915cef39 100644 --- a/src/pages/StatisticsChart/monetary/Liquidity.tsx +++ b/src/pages/StatisticsChart/monetary/Liquidity.tsx @@ -197,8 +197,7 @@ export const LiquidityChart = ({ isThumbnail = false }: { isThumbnail?: boolean fetchData={explorerService.api.fetchStatisticLiquidity} getEChartOption={useOption} toCSV={toCSV} - cacheKey="Liquidity" - cacheMode="date" + queryKey="fetchStatisticLiquidity" /> ) } diff --git a/src/pages/StatisticsChart/monetary/SecondaryIssuance.tsx b/src/pages/StatisticsChart/monetary/SecondaryIssuance.tsx index 08b489ca1..fe6206da5 100644 --- a/src/pages/StatisticsChart/monetary/SecondaryIssuance.tsx +++ b/src/pages/StatisticsChart/monetary/SecondaryIssuance.tsx @@ -191,8 +191,7 @@ export const SecondaryIssuanceChart = ({ isThumbnail = false }: { isThumbnail?: fetchData={explorerService.api.fetchStatisticSecondaryIssuance} getEChartOption={useOption} toCSV={toCSV} - cacheKey="SecondaryIssuance" - cacheMode="date" + queryKey="fetchStatisticSecondaryIssuance" /> ) } diff --git a/src/pages/StatisticsChart/monetary/TotalSupply.tsx b/src/pages/StatisticsChart/monetary/TotalSupply.tsx index 344600b62..ddb0773a1 100644 --- a/src/pages/StatisticsChart/monetary/TotalSupply.tsx +++ b/src/pages/StatisticsChart/monetary/TotalSupply.tsx @@ -207,8 +207,7 @@ export const TotalSupplyChart = ({ isThumbnail = false }: { isThumbnail?: boolea fetchData={explorerService.api.fetchStatisticTotalSupply} getEChartOption={useOption} toCSV={toCSV} - cacheKey="TotalSupply" - cacheMode="date" + queryKey="fetchStatisticTotalSupply" /> ) } diff --git a/src/pages/StatisticsChart/nervosDao/CirculationRatio.tsx b/src/pages/StatisticsChart/nervosDao/CirculationRatio.tsx index 50920129f..0979a33c8 100644 --- a/src/pages/StatisticsChart/nervosDao/CirculationRatio.tsx +++ b/src/pages/StatisticsChart/nervosDao/CirculationRatio.tsx @@ -109,8 +109,7 @@ export const CirculationRatioChart = ({ isThumbnail = false }: { isThumbnail?: b fetchData={explorerService.api.fetchStatisticCirculationRatio} getEChartOption={useOption} toCSV={toCSV} - cacheKey="DepositCirculationRatio" - cacheMode="date" + queryKey="fetchStatisticCirculationRatio" /> ) } diff --git a/src/pages/StatisticsChart/nervosDao/NewDaoDeposit.tsx b/src/pages/StatisticsChart/nervosDao/NewDaoDeposit.tsx index 8d908acae..1c470fee3 100644 --- a/src/pages/StatisticsChart/nervosDao/NewDaoDeposit.tsx +++ b/src/pages/StatisticsChart/nervosDao/NewDaoDeposit.tsx @@ -196,8 +196,7 @@ export const NewDaoDepositChart = ({ isThumbnail = false }: { isThumbnail?: bool fetchData={explorerService.api.fetchStatisticNewDaoDeposit} getEChartOption={useOption} toCSV={toCSV} - cacheKey="DailyDeposit" - cacheMode="date" + queryKey="fetchStatisticNewDaoDeposit" /> ) } diff --git a/src/pages/StatisticsChart/nervosDao/TotalDaoDeposit.tsx b/src/pages/StatisticsChart/nervosDao/TotalDaoDeposit.tsx index 641c92a17..a68ed9478 100644 --- a/src/pages/StatisticsChart/nervosDao/TotalDaoDeposit.tsx +++ b/src/pages/StatisticsChart/nervosDao/TotalDaoDeposit.tsx @@ -195,8 +195,7 @@ export const TotalDaoDepositChart = ({ isThumbnail = false }: { isThumbnail?: bo fetchData={explorerService.api.fetchStatisticTotalDaoDeposit} getEChartOption={useOption} toCSV={toCSV} - cacheKey="TotalDeposit" - cacheMode="date" + queryKey="fetchStatisticTotalDaoDeposit" /> ) } diff --git a/src/utils/hook.ts b/src/utils/hook.ts index 7f19c7b89..d03ea95ab 100644 --- a/src/utils/hook.ts +++ b/src/utils/hook.ts @@ -8,24 +8,15 @@ import { systemScripts, } from '@nervosnetwork/ckb-sdk-utils' import { useHistory, useLocation } from 'react-router-dom' -import { useQuery } from '@tanstack/react-query' import { useResizeDetector } from 'react-resize-detector' import { interval, share } from 'rxjs' -import dayjs from 'dayjs' import { deprecatedAddrToNewAddr } from './util' import { startEndEllipsis } from './string' -import { - ListPageParams, - PageParams, - THEORETICAL_EPOCH_TIME, - EPOCHS_PER_HALVING, - ONE_YEAR_MILLISECOND, - ONE_HOUR_MILLISECOND, -} from '../constants/common' +import { ListPageParams, PageParams, THEORETICAL_EPOCH_TIME, EPOCHS_PER_HALVING } from '../constants/common' import { omit } from './object' // TODO: This file depends on higher-level abstractions, so it should not be in the utils folder. It should be moved to `src/hooks/index.ts`. import { useParseDate } from './date' -import { Response, useStatistics } from '../services/ExplorerService' +import { useStatistics } from '../services/ExplorerService' import { cacheService } from '../services/CacheService' /** @@ -509,46 +500,6 @@ export const useDeprecatedAddr = (addr: string) => } }, [addr]) -export function useChartQueryWithCache( - fetchData: () => Promise[]>>, - cacheKey?: string, - cacheMode: 'forever' | 'date' | 'epoch' = 'forever', -) { - return useQuery([fetchData, cacheKey, cacheMode], async () => { - if (cacheKey) { - const dataList = cacheService.get(cacheKey) - if (dataList) return dataList - } - - let dataList = await fetchData() - if ('data' in dataList) { - dataList = dataList.data.map(wrapper => wrapper.attributes) - } - if (cacheKey && dataList.length > 0) { - let expireAt: Date | number - switch (cacheMode) { - case 'epoch': - expireAt = Date.now() + ONE_HOUR_MILLISECOND * 3 - break - case 'date': { - // Chart data will be updated at 08:10(CST) every day - const now = dayjs().utc() - const todayUpdateTime = now.hour(8).minute(11).second(0).millisecond(0) - const nextUpdateTime = now.isBefore(todayUpdateTime) ? todayUpdateTime : todayUpdateTime.add(1, 'day') - expireAt = nextUpdateTime.toDate() - break - } - case 'forever': - default: - expireAt = Date.now() + ONE_YEAR_MILLISECOND * 100 - break - } - cacheService.set(cacheKey, dataList, { expireAt }) - } - return dataList - }) -} - export const useAnimationFrame = (callback: () => void, running: boolean = true) => { const savedCallback = useRef(callback) From b4de47fdc6a2ce474ed091243e920dcdfca89ec8 Mon Sep 17 00:00:00 2001 From: WhiteMind Date: Mon, 13 Nov 2023 09:45:40 +0800 Subject: [PATCH 2/6] Refactor: Cohesive component assets (#143) * refactor: remove unused assets * refactor: move resources used by a single component into the component's folder --- src/assets/blue_mobile_not_found.png | Bin 7871 -> 0 bytes src/assets/blue_not_found.png | Bin 13558 -> 0 bytes src/assets/ckb_dark.png | Bin 1239 -> 0 bytes src/assets/ckb_transfer.png | Bin 374 -> 0 bytes src/assets/copy_blue.png | Bin 413 -> 0 bytes src/assets/copy_green.png | Bin 917 -> 0 bytes src/assets/current_selected.png | Bin 252 -> 0 bytes src/assets/dot_icon1.png | Bin 288 -> 0 bytes src/assets/dot_icon2.png | Bin 276 -> 0 bytes src/assets/dot_icon3.png | Bin 269 -> 0 bytes src/assets/dropdown.png | Bin 276 -> 0 bytes src/assets/home_background.svg | 1 - src/assets/moon.svg | 3 --- src/assets/moon_small.svg | 3 --- src/assets/pagination_blue_left.png | Bin 311 -> 0 bytes src/assets/pagination_blue_right.png | Bin 1126 -> 0 bytes src/assets/pagination_green_left.png | Bin 1056 -> 0 bytes src/assets/pagination_green_right.png | Bin 1078 -> 0 bytes src/assets/pagination_white_left.png | Bin 564 -> 0 bytes src/assets/pagination_white_right.png | Bin 556 -> 0 bytes src/assets/right_grey_arrow.png | Bin 439 -> 0 bytes src/assets/search_filter.png | Bin 427 -> 0 bytes src/assets/select_dropdown.png | Bin 200 -> 0 bytes src/assets/select_dropdown_up.png | Bin 696 -> 0 bytes src/components/Banner/HalvingBanner.tsx | 10 +++++----- .../Banner}/ckb_explorer_banner.svg | 0 .../Banner}/ckb_explorer_banner_phone.svg | 0 .../Banner}/halving_banner.png | Bin .../Banner}/halving_banner_success.png | Bin .../Banner}/halving_banner_success_mobile.png | Bin .../Banner}/halving_success_ani.gif | Bin src/components/Banner/index.module.scss | 4 ++-- src/{assets => components/Banner}/move.svg | 0 .../Card/HashCard}/copy.png | Bin .../Card/HashCard}/download_tx.svg | 0 src/components/Card/HashCard/index.tsx | 4 ++-- .../CsvExport}/export_icon.svg | 0 src/components/CsvExport/index.tsx | 2 +- src/components/Error/index.tsx | 4 ++-- .../Error}/mobile_data_not_found.png | Bin .../Error}/pc_data_not_found.png | Bin src/{assets => components/Footer}/footer_X.svg | 0 .../Footer}/footer_discord.svg | 0 .../Footer}/footer_forum.svg | 0 .../Footer}/footer_medium.svg | 0 .../Footer}/footer_reddit.svg | 0 .../Footer}/footer_telegram.svg | 0 .../Footer}/footer_youtube.svg | 0 src/components/Footer/index.tsx | 14 +++++++------- src/components/Header/LanguageComp/index.tsx | 2 +- .../Header/LanguageComp}/white_drop_up.png | Bin src/components/Header/SearchComp/index.tsx | 2 +- .../Header/SearchComp}/search_white.png | Bin src/{assets => components/Header}/ckb_logo.png | Bin src/components/Header/index.tsx | 2 +- src/components/Pagination/index.tsx | 8 ++++---- .../Pagination}/pagination_black_left.png | Bin .../Pagination}/pagination_black_right.png | Bin .../Pagination}/pagination_grey_left.png | Bin .../Pagination}/pagination_grey_right.png | Bin .../Transaction/TransactionCellArrow/index.tsx | 8 ++++---- .../TransactionCellArrow}/live_cell.png | Bin .../TransactionCellArrow}/live_cell_blue.png | Bin .../TransactionCellArrow}/right_blue_arrow.png | Bin .../TransactionCellArrow}/right_green_arrow.png | Bin src/components/TransactionItem/index.tsx | 4 ++-- .../TransactionItem}/input_arrow_output.png | Bin .../input_arrow_output_down.png | Bin src/{assets => pages/404}/blue_mobile_404.png | Bin src/{assets => pages/404}/blue_pc_404.png | Bin src/pages/404/index.tsx | 8 ++++---- src/{assets => pages/404}/mobile_404.png | Bin src/{assets => pages/404}/pc_404.png | Bin src/pages/Address/AddressComp.tsx | 6 +++--- .../Address}/ckb_token_icon.png | Bin src/{assets => pages/Address}/time_down.svg | 0 src/{assets => pages/Address}/time_up.svg | 0 src/pages/BlockDetail/BlockComp.tsx | 12 ++++++------ .../BlockDetail}/content_blue_drop_down.png | Bin .../BlockDetail}/content_blue_pack_up.png | Bin .../BlockDetail}/content_drop_down.png | Bin .../BlockDetail}/content_pack_up.png | Bin .../BlockDetail}/miner_complete.png | Bin .../BlockDetail}/prev_block.svg | 0 src/{assets => pages/Error}/Mobile_error.png | Bin src/{assets => pages/Error}/error.png | Bin src/pages/Error/index.tsx | 4 ++-- .../ExportTransactions}/block_icon.svg | 0 .../ExportTransactions}/error_icon.svg | 0 src/pages/ExportTransactions/index.tsx | 6 +++--- .../ExportTransactions}/success_icon.svg | 0 src/pages/FeeRateTracker/FeeRateTrackerComp.tsx | 6 +++--- src/{assets => pages/FeeRateTracker}/bike.svg | 0 src/{assets => pages/FeeRateTracker}/car.svg | 0 src/{assets => pages/FeeRateTracker}/rocket.svg | 0 src/{assets => pages/Halving}/X.svg | 0 .../Halving}/block-rewards-cn.png | Bin src/{assets => pages/Halving}/block-rewards.png | Bin src/{assets => pages/Halving}/calendar.svg | 0 .../Halving}/ckb_base_issuance_trend.png | Bin src/{assets => pages/Halving}/halving_bg.png | Bin .../Halving}/halving_success_bg.png | Bin src/pages/Halving/index.tsx | 14 +++++++------- src/pages/Home/index.tsx | 4 ++-- src/{assets => pages/Home}/latest_blocks.png | Bin .../Home}/latest_transactions.png | Bin .../NervosDao/DaoOverview}/dao_balance.png | Bin .../NervosDao/DaoOverview}/dao_down.png | Bin .../NervosDao/DaoOverview}/dao_up.png | Bin src/pages/NervosDao/DaoOverview/index.tsx | 6 +++--- src/pages/Script/ScriptsComp.tsx | 2 +- src/{assets => pages/Script}/info_more_icon.svg | 0 .../StatisticsChart/common}/chart_no_data.png | Bin .../common}/chart_no_data_aggron.png | Bin src/pages/StatisticsChart/common/index.tsx | 4 ++-- .../Transaction/TransactionCell}/clock.svg | 0 .../Transaction/TransactionCell}/cota_cell.svg | 0 .../TransactionCell}/cota_reg_cell.svg | 0 src/pages/Transaction/TransactionCell/index.tsx | 14 +++++++------- .../Transaction/TransactionCell}/m_nft.svg | 0 .../TransactionCell}/m_nft_class.svg | 0 .../TransactionCell}/m_nft_issuer.svg | 0 .../Transaction/TransactionCell}/spore.svg | 0 .../deprecated_addr_off.svg | 0 .../TransactionCellList}/deprecated_addr_on.svg | 0 .../Transaction/TransactionCellList/index.tsx | 6 +++--- .../TransactionCellList}/warning.svg | 0 .../Transaction/TransactionCellScript/index.tsx | 4 ++-- .../TransactionCellScript}/modal_close.png | Bin .../TransactionCellScript}/outer_link_icon.svg | 0 130 files changed, 80 insertions(+), 87 deletions(-) delete mode 100644 src/assets/blue_mobile_not_found.png delete mode 100644 src/assets/blue_not_found.png delete mode 100644 src/assets/ckb_dark.png delete mode 100644 src/assets/ckb_transfer.png delete mode 100644 src/assets/copy_blue.png delete mode 100644 src/assets/copy_green.png delete mode 100644 src/assets/current_selected.png delete mode 100644 src/assets/dot_icon1.png delete mode 100644 src/assets/dot_icon2.png delete mode 100644 src/assets/dot_icon3.png delete mode 100644 src/assets/dropdown.png delete mode 100644 src/assets/home_background.svg delete mode 100644 src/assets/moon.svg delete mode 100644 src/assets/moon_small.svg delete mode 100644 src/assets/pagination_blue_left.png delete mode 100644 src/assets/pagination_blue_right.png delete mode 100644 src/assets/pagination_green_left.png delete mode 100644 src/assets/pagination_green_right.png delete mode 100644 src/assets/pagination_white_left.png delete mode 100644 src/assets/pagination_white_right.png delete mode 100644 src/assets/right_grey_arrow.png delete mode 100644 src/assets/search_filter.png delete mode 100644 src/assets/select_dropdown.png delete mode 100644 src/assets/select_dropdown_up.png rename src/{assets => components/Banner}/ckb_explorer_banner.svg (100%) rename src/{assets => components/Banner}/ckb_explorer_banner_phone.svg (100%) rename src/{assets => components/Banner}/halving_banner.png (100%) rename src/{assets => components/Banner}/halving_banner_success.png (100%) rename src/{assets => components/Banner}/halving_banner_success_mobile.png (100%) rename src/{assets => components/Banner}/halving_success_ani.gif (100%) rename src/{assets => components/Banner}/move.svg (100%) rename src/{assets => components/Card/HashCard}/copy.png (100%) rename src/{assets => components/Card/HashCard}/download_tx.svg (100%) rename src/{assets => components/CsvExport}/export_icon.svg (100%) rename src/{assets => components/Error}/mobile_data_not_found.png (100%) rename src/{assets => components/Error}/pc_data_not_found.png (100%) rename src/{assets => components/Footer}/footer_X.svg (100%) rename src/{assets => components/Footer}/footer_discord.svg (100%) rename src/{assets => components/Footer}/footer_forum.svg (100%) rename src/{assets => components/Footer}/footer_medium.svg (100%) rename src/{assets => components/Footer}/footer_reddit.svg (100%) rename src/{assets => components/Footer}/footer_telegram.svg (100%) rename src/{assets => components/Footer}/footer_youtube.svg (100%) rename src/{assets => components/Header/LanguageComp}/white_drop_up.png (100%) rename src/{assets => components/Header/SearchComp}/search_white.png (100%) rename src/{assets => components/Header}/ckb_logo.png (100%) rename src/{assets => components/Pagination}/pagination_black_left.png (100%) rename src/{assets => components/Pagination}/pagination_black_right.png (100%) rename src/{assets => components/Pagination}/pagination_grey_left.png (100%) rename src/{assets => components/Pagination}/pagination_grey_right.png (100%) rename src/{assets => components/Transaction/TransactionCellArrow}/live_cell.png (100%) rename src/{assets => components/Transaction/TransactionCellArrow}/live_cell_blue.png (100%) rename src/{assets => components/Transaction/TransactionCellArrow}/right_blue_arrow.png (100%) rename src/{assets => components/Transaction/TransactionCellArrow}/right_green_arrow.png (100%) rename src/{assets => components/TransactionItem}/input_arrow_output.png (100%) rename src/{assets => components/TransactionItem}/input_arrow_output_down.png (100%) rename src/{assets => pages/404}/blue_mobile_404.png (100%) rename src/{assets => pages/404}/blue_pc_404.png (100%) rename src/{assets => pages/404}/mobile_404.png (100%) rename src/{assets => pages/404}/pc_404.png (100%) rename src/{assets => pages/Address}/ckb_token_icon.png (100%) rename src/{assets => pages/Address}/time_down.svg (100%) rename src/{assets => pages/Address}/time_up.svg (100%) rename src/{assets => pages/BlockDetail}/content_blue_drop_down.png (100%) rename src/{assets => pages/BlockDetail}/content_blue_pack_up.png (100%) rename src/{assets => pages/BlockDetail}/content_drop_down.png (100%) rename src/{assets => pages/BlockDetail}/content_pack_up.png (100%) rename src/{assets => pages/BlockDetail}/miner_complete.png (100%) rename src/{assets => pages/BlockDetail}/prev_block.svg (100%) rename src/{assets => pages/Error}/Mobile_error.png (100%) rename src/{assets => pages/Error}/error.png (100%) rename src/{assets => pages/ExportTransactions}/block_icon.svg (100%) rename src/{assets => pages/ExportTransactions}/error_icon.svg (100%) rename src/{assets => pages/ExportTransactions}/success_icon.svg (100%) rename src/{assets => pages/FeeRateTracker}/bike.svg (100%) rename src/{assets => pages/FeeRateTracker}/car.svg (100%) rename src/{assets => pages/FeeRateTracker}/rocket.svg (100%) rename src/{assets => pages/Halving}/X.svg (100%) rename src/{assets => pages/Halving}/block-rewards-cn.png (100%) rename src/{assets => pages/Halving}/block-rewards.png (100%) rename src/{assets => pages/Halving}/calendar.svg (100%) rename src/{assets => pages/Halving}/ckb_base_issuance_trend.png (100%) rename src/{assets => pages/Halving}/halving_bg.png (100%) rename src/{assets => pages/Halving}/halving_success_bg.png (100%) rename src/{assets => pages/Home}/latest_blocks.png (100%) rename src/{assets => pages/Home}/latest_transactions.png (100%) rename src/{assets => pages/NervosDao/DaoOverview}/dao_balance.png (100%) rename src/{assets => pages/NervosDao/DaoOverview}/dao_down.png (100%) rename src/{assets => pages/NervosDao/DaoOverview}/dao_up.png (100%) rename src/{assets => pages/Script}/info_more_icon.svg (100%) rename src/{assets => pages/StatisticsChart/common}/chart_no_data.png (100%) rename src/{assets => pages/StatisticsChart/common}/chart_no_data_aggron.png (100%) rename src/{assets => pages/Transaction/TransactionCell}/clock.svg (100%) rename src/{assets => pages/Transaction/TransactionCell}/cota_cell.svg (100%) rename src/{assets => pages/Transaction/TransactionCell}/cota_reg_cell.svg (100%) rename src/{assets => pages/Transaction/TransactionCell}/m_nft.svg (100%) rename src/{assets => pages/Transaction/TransactionCell}/m_nft_class.svg (100%) rename src/{assets => pages/Transaction/TransactionCell}/m_nft_issuer.svg (100%) rename src/{assets => pages/Transaction/TransactionCell}/spore.svg (100%) rename src/{assets => pages/Transaction/TransactionCellList}/deprecated_addr_off.svg (100%) rename src/{assets => pages/Transaction/TransactionCellList}/deprecated_addr_on.svg (100%) rename src/{assets => pages/Transaction/TransactionCellList}/warning.svg (100%) rename src/{assets => pages/Transaction/TransactionCellScript}/modal_close.png (100%) rename src/{assets => pages/Transaction/TransactionCellScript}/outer_link_icon.svg (100%) diff --git a/src/assets/blue_mobile_not_found.png b/src/assets/blue_mobile_not_found.png deleted file mode 100644 index 12a4a41cd8646c07e44ce633ab2f8dfc31e23724..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7871 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 diff --git a/src/assets/ckb_transfer.png b/src/assets/ckb_transfer.png deleted file mode 100644 index 9706e8a1cc7f752ac090bd8280478ee66b63bd44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^xNn{1`8HkKR4HaQ0^XfaVq7pPrfTaY;X^`~IbZV!k_fT8z>rnen8BA1Kn=#e1Za zt3z1P@!^*>ihk1@D{MKYd+Terx9_x+xw3u18vgxiXVfj9t-Ww|?~7f6atX8CEWW<3 z7n9Pt^L7(&Yjb2uNTu}7!{=4@{(90oSzqPb=Ih}sQnR}P3M`MYNNInVDgThA?_RTz z#jbM6hgS;}>w7;eoyGGaUGU}pKR@>*7Z{woQJc!-zyG_Ool|SQi|+4v;@kLnA1<&+ RO9Fb5!PC{xWt~$(6978fq$2R!VDyTcU=Dsq*&4&eH|GXHuiJ>Nn{1`8Hjs{JM{i>pA_ec|NW1RG2M(Y)qpD}tRPb2O8oVl?J3uqJx=8G zJ((EvEpiHgO^wZdYX7CD zX4=ZgUq0vWB)7h6D`&f+_Hg~gg o;%liL)e6>`@4fHFRPx&Pf0{UR9Fe^SxalwP!v9?V=HQFL1^9BR(Dbus1L-Qx~RAiMEwC>xTy~iL4SmZ zEm)}w7ySnoT!_UNxDvt2z=$gy>&6xaN~b5iuNIUxk`#QTV0~RpbH%Cfwgh2Ke?0Ffm z)05*MTvgsSfw^*$P8hR69+cSIBxYfyMw4G()9lhWs{Z*QrxTTXx9_5%uKhIHf0BAS zI)gDATq&j@HpT%r1OcQ*N>fx@`z@!MDmx21XsS43k{kE0J^|`*un%S`D=FXs16YO) zry~9K*{zZSg*L~b3;Pb! z-9wkC;3R{WUYM!V0Ljyi?CGcL1E&%VQSfpK%ja7beG-r;ojTt;M329JP;(A5hD4W{ zBhjbl)laEKQ%IqN-~t0$2TU<6>$#qyR3l3e%0-`K#4w#Y);%E2ktK-brcW}esZ+fj zUD6a;7PzHBr_5*G@$Lh3``{V#k>LYkneKdkMsF9t_~*<66LaS_C{w)oxfRtdjuc|> z07f6%rV_I~U{XAl7?vq`SDC=Fl;-)Yb>vvAA$Kmme;C^*k4AOI@)$G;=6_;IW+~W5 z%`r{Kf?zn7n;}lu%$Tscx|EuZnV`0GO(kXy+^V`tOw%!ws4S&7!SoE^^Xw zoU*!U10ehu%G4GTE$>0F-^y0DFK$!mbw2&_Hp(i6S^j( zfP)-E2mievNf~@cx1nQUI>jU!HpM_DXqd6N;E51T2{t!%9D>;}W*8`l%>)~uDbN;M z7Nt`fzT<5XSlhys0TrD>PL-u^WXa@OvFXdh)UCex8%ZYEz}@rSCighix8n7$-4JrN re=G>0Y(E%4l##OjiV-rIe#!g=d6ytq1|8~G00000NkvXXu0mjfn0Tc) diff --git a/src/assets/current_selected.png b/src/assets/current_selected.png deleted file mode 100644 index f9336e5c47be928e4f3825ca384e6dda93be361e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 252 zcmVPx#wn;=mR45gVl06QBFc^lZkeJBAEpT=A6i&tya0$5p$1pg05NB8K;D*t})ThQa zq+e-i@}%Ycq5M>3iJ`SFi5x&dAB_{!lvI6;x#X;^) z4C~IxyaaOO0(?STS>~N{FYsZRe@43Uh&n3oLSTn{C?9f5uj+7r;B5V#N}iG7N*NatXqSe6`UIwJt7Pm7}^zEv{y1b zGg{%agO4ZR0mq}R0~I_v3h!7frYA09Xx_lov|8tYLgNF&0uBQSg~G-;oG0#Z^01z` z!_>x-lE>7{WF+3&thk_Io%q=&3@LdGyH;Pg)ALN(QRQsojD?M2VNHuxD0YgSYigQy fAYui}aV7?rGNHT0=Un4~u43?X^>bP0l+XkKA^T;2 diff --git a/src/assets/dot_icon2.png b/src/assets/dot_icon2.png deleted file mode 100644 index a82ecef33a5b88f3da26935dcb1b5b566c7a40b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^(jd&j3?%D+y-WjAEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaOO0(?ST-3xp&Ph8EtbUW+h)vOa&fou>uc`fI}bs*!p?o~ygO3soXzhH)U zeDxt`7Ig%t?mW#46s-4jaSV~ToSeYGG&RKWq6jOSM!@troGgz5?AT|R7cXOJ$+i^c z;&HG^lgNLTBCuWf+}xW74jfSFe86RButB-Pc)78GhEk!rmO+J5VY-z;ic+z#gwn*F zj69Q0#4s|&nC#6^D_?Z0`!lvI6;x#X;^) z4C~IxyaaM20(?ST-3xq58v9Bb`x_=r0+MCT{iTf)N*em!vuu?Gs$nk)@(X5o*TT0w zB-qfr(E%vb;OXKRB5^r6fq^Mlyim}bnN7n$NS~caQDZ*u8Et*>=7OuI7dkK=NpAXh zs@vgCiN$uC#>U1-nS-KkVccQ49Y=J{6FA(TsTo)(70XK83EcVUL<}QaN?ax5t~J(i zi!TMfbu9~B$hd3v#hR99@n0@DaBF{=(9%{cXmjV_Mus#-h8LL)U-)MUT>`p=!PC{x JWt~$(699wHTc`j4 diff --git a/src/assets/dropdown.png b/src/assets/dropdown.png deleted file mode 100644 index 29cbced62d3af85b2003ae17d22563cff76eae67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276 zcmV+v0qg#WP)Px#&PhZ;R45gVP`eGnFcfqE$qEbtZEBbU3hHdZ1lfa@J*d+%19XuSwy*n$mGRBmEQ7jHc$}Ut3zhY<6(xI1@DRrap1z9-ZU^@?Dc~TEl{(6%Z)~!1> zHkdkR+yxcFRY+5M13KO;M1F=d@4u&AC|++UEL*{#{oeM>VBaw}Y@LZu84KdyhssXQ zY0XP)fJeTW!I@cyUjb=mguJB*!F0g30zTd)bndD&Gn!#o0(T)yZ8Zu^2{504C-4G} aQ@$R5Mbz!;v=A5o0000ArtboardCreated with Sketch. \ No newline at end of file diff --git a/src/assets/moon.svg b/src/assets/moon.svg deleted file mode 100644 index 44f6297c2..000000000 --- a/src/assets/moon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/assets/moon_small.svg b/src/assets/moon_small.svg deleted file mode 100644 index 57ebe8c40..000000000 --- a/src/assets/moon_small.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/assets/pagination_blue_left.png b/src/assets/pagination_blue_left.png deleted file mode 100644 index 89c888ff39e836f3a6704e82a4bdd80a8c486784..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^VnD3I!VDzqHLkA%QY`6?zK#qG8~eHcB(ehejKx9j zP7LeL$-D$|6a#!hT$|d?C06fEtl5_YMj1^nSE(!7r zX8gDOU7gTz%?QUk7D;iQK;gNbE{-7*my;738n=~LOm+?6Iaekk(q!1o!aCh~=9*3p z)xf4Et^l>&3m0(sR4iJsfO*PEMGcKk1OE!9DJNS}<}F$f!7xQuO=AU@asI*u0zMT+ zU6n!xpCtsJG2RSf<>5Gd_Tjt?5s?;cr)xbq8aIq~uuM`8kZFIDA#%Rq%+>^lPc_WU x(;O04II)On2ndQ9DYjZRD<4u}3u8-RU=Y+0i~ML9!wz&PgQu&X%Q~loCIFYfYC8Y` diff --git a/src/assets/pagination_blue_right.png b/src/assets/pagination_blue_right.png deleted file mode 100644 index 6884b052937d2e70be5c50f0bec010a732a5116f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1126 zcmV-s1eyDZP)Px(AW1|)R7ef2RzYY~R}_8s&;J^W6{&@GQ96wqg@TLPRb1%IESf5~C@6w%W)fQw zB`ypuGLfg5k)mCclokug#7z+`wxEb^W~P)zT(pHk1%sf`jao`T)Fk$Q|MT2GdC&i5 z<|i@rLGte0d+xdS-FM%APl)D`AE+uz#|lSlR(Q^vqF2`6(+Yd;E!IA>HSu4D+6Zhd z6l)`vBJRTSepz1`2T(JBjVaIDVf1mdQML$->XFypYHt{<71|o$^#>cQEU<>hLZ~-P zogxH@KBdG<9ZOox8P>6HyyP4%u62#;Y(c}l~ zr$iVYW?0Ihk4J{GQOeD3%}ZFPl)BjfQDv;0?TI^B;J87rh)7ITO1U*`O9X4jLa}~Z zsjyQCQi)*h45SpLK}72-rR+ot7~%f~YZTVhaV|_$WGQbfyX!xA#yYS}faUEuyEPFC zKQ5H&!iM#amUCZO*8lY*U#vdDUVph55=SVp3T<-)tN(2w2SRxWz^ErsnunEg?%gCO zQ#vek1`F*#H3C$_Yv*9VY(xa?mg;0V?Kz&5nSf$hdz$4m68Q! z5OUs1c7GV!b<5VH8C;)HgPi9Zm$Z%RX8E;F%xZVL9z( zQ!Qz*L683eb*mwh&quB;vy^q07dQu;#EI!-xrMp6eEl5_M9r^iU<-KfK(*`n^wS4y zz;QZ;Qhv&^9wrSm(?RseFdHb9+FCijrBMluWIf9Oo&|6h%PDf#j+8b>72x0T;i4!0 z#uk6bN^J28DL2o?0dd(y^8iQ+3u#$w9B5=N75+Mm;x!0V7^wb*t7?PcBKj%q(r$ET zV(JDvk3a{9Z!LfN&%HCca2m^Bk7X`(pO%?Pt$UT(Y#%%E7GnAuK}-!1;E8aYo$a=B zzCaeS21d<9;t~Q_S6rj9a#G{wo7)m=2X5VWMlUPMJj>m+?>UmMb8q71kHU*UEdjyHDi^xVaOODu6Ii59F@hcPS zAfL-$Kk|d%G7gRP9aQ9ed#02*uw>#Wdwd3!P(LF3l{z3cAV}k_uq5LAK&2X8rIyPO0@B1IM3uNp3@jMBh3l<*^_!E~0h7UBPlYBM61z$Ma${Xeqy60D^Cqg5x?FMF0Q*07*qoM6N<$f~l+##Q*>R diff --git a/src/assets/pagination_green_left.png b/src/assets/pagination_green_left.png deleted file mode 100644 index 24af7957da87b65f4eb5b272bb307547c8edfad5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1056 zcmV+*1mF9KP)Px&+DSw~R7ef&R$oY@RTRJH&X|8mVF`3!tS6(`dI+1D&~L|e7d0~QLFr**V;@qM z+A?Qg7lajRA8Mv8Y%K-*^JL&ikh{e$MY=QUs5=-D)?<`GK2)acGLAEIPv;KY&-;yk zzWK(dpn>6@^Sk%_e)rG0=YEX+|I>EBk27vW1Px*qNAGZIH^oC&0NG^*cn`Vjr8&>Q zP08VQN|Zld&N{o87^j(^L)nR}6oj}+*3ktz6Jr${i-{?Q*kKVyTvdM2D`;K1e(az0 z)>lOCQDm|O2H#cj(msV1bq1$a!u31b;x>^qD56{oFj@Ct{fm*udv+A=Sio4gc0#bs zEh0FsNMs8D*IT`T*M=ULczJC~b?&6bJa5 zyZGrlzTgcLJHXft${R3*$TJ;PA5j_x^e#HgHTt*4Jb@J*Kgizq4E(=*T9#S=bArgb z^gts1$pxitv)+rp>-b^z9)Z(|vFg;$)--L2p$8KAJXThA&OLEqL&xoG%Nd+m`QUge zy&2m}&ZcY8b;c>V6gOAUa`*j)bUID96YDLr0{FPjTi+Xjo~#8g(8&p$Tn;yitoR0z zRqJsa;A+$t9MmzVHkS`XHY;W=$lZgd;wgyw7HuSB4+5;6*sOEPCvL>J~bT&-Hl9q(+w7o;Q|4kLb8l+sq<)7RFNe z8VY<}C!zdbcXQr8;~Drt#|yR1dq6}O^9K8=h+WcyNw_vGMARP-`E|Td+gyPjV8p}c z5XCrEPxDEo(wt%(&c?ifDSfP+y{~`_G8W%`R$w+lUkMc^38gOs{_31J@S%y>80Hq` zkE1&OHKp$<0QQ&Jhg9B$7-@>X^QMW}7zeIE#rYHAM>9J}Z?Lt5knnh|_u)Rf5@IVL zg=7)jP9<;AZ9k!eWlJJd1l=!0o_Qmw zGZe8L7{0CiBMC^7s4wsZxOp3;?4}~675%2{BMan2o(@DyO4w8M#17M`zJ*m)=as;J azx@|6H&yH=^eO`Y0000Px&@JU2LR7efwR!wMBR}?R(CI(IXT}Vf4-6#es zu~r)=7F!o-Efk#i7eNyj5kubnZY&U?pmHTUJc zm!HYZti)N&x#zp*eBV9y_W``?Ka>TO{c&_EB;xf7V1eeM<{RE!cV%BLR*}gVkDma7 zJqFQNuU^5g<$VVh%f4K!DFA>oB@q!!0nj@F(WbQ$%hs9#gs=+`2PF{!M%5TrVYXokdw?D1*-qPlim zr#tX*-4OyJx+2y*J!K@XakJQ#jd(#T{P6ScS(}nJd>m&~0TC~@EhZ9|xROPV{2tBY zTGKuM>!%KURM%VsXK(Mkx+jICE=7ckj=u8LV5(>7Z%00I;G?=@Rv@E;bXNU0cCUrE zZmq;uiMRCjwrcO1CQO)DUy%cA@Cii0S9VY#|TDyplxeLG`T+}fV7fJiEfHPrzb zM_6chY7w3*s0JgxomZ^HvYnBDNGgvteF_Gh5(m*jl0sB!BmU4yiAg&=5{aa-J-*O6 z6`_Xb=RX-r0GdHYTUj*xjl`tQxB{72*}wnelx|$*N~TFnSXA&(q$E_2h^))L_{;Ve z=nu~#gZR|LY%2$oo-UkHw6VQ--OG%p$VwC`Y4`{7@)sfCZ7a@0|7_sdy&D3{sRBv5 z?Dz1b=Lza%{}YMv8jPk_{$c6AyKs^xs+R>oeiF{r>d${ zh=tC2io_K%5WC+BM4Rm+$NMgqtGa99j=u$-l|ZoXfM)>pGfckPO3qiupZR&7nqL-d zdnoaY1>Ria@x*1GmQqO~EKf@$&t0&l)BD9UJ8t#Tw8cZD(+lz1&9#Lhp67>X!)OoD zge%}XXf995HRn^x)6!DqYuMU|XxK!DoCyg8ZtX8MQu<}inQ9|JY~+uH?`@dFNh`28 z8eYw>yjW0=%;ovkIdN;Gw4qgEV_9{q4uJ>y!khWnp8_DajAP;?e_pOmpD#uVTW zu5Wp#9A*mhFp2}DsM?B~{!mAH>bDUi1R9AHy=HPVFXnCs$wLLSs))bdcCk5PM!2>$ z2>x}}&9|T^J!p@_JNa&Rb*Fdx13RAHGX<8%nhXA?w{aDd wc;o!k;}89i1>g87ymPREx=hjWqu-a_*V{QrVrbr=0{{R307*qoM6N<$f^UKZHUIzs diff --git a/src/assets/pagination_white_left.png b/src/assets/pagination_white_left.png deleted file mode 100644 index 25d398bff017532d6ba90ea5d565afc91716baff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 564 zcmV-40?Yl0P)Px$?ny*JR7ef&mrE!_Q5eVP8st$P$wo@D@F-bHEM#FN7G$q%h_bb?7{!`}jbdRn zWkWW07Gxo%5G5-qS)f5)7*+T=M6Qz(DQ{ff3P9XN9SA+aPKJ3a2`+$rf z1=Hh&q%U0LIsuZOjxF#FYK2mGJ&+3ve3@EY3U38+Z-LK>z^WOjhn@}iC;7M-?i;96=*uuTBrlG{ zz&BA(h#C77DkCugl!ub01Nk|sjmkv*7V{R9Yicc#nE1DA(qi&Jtt(2CA%O3O(Hr?- zlqNj@ZIAC*lqPMM+#26Rr87~QGyt@1AxqR{TS#z~fPQZi)J)1S+CgT>w{guR+d*`K ztLz}sOya<@9i@%II`N3fw0W<{)yqJ;7#;wCjUu(R>!Ds}x`Q?15!e7SU&s!`U>$&g zdZpA)#P#6wjK4cU(PhM-j=l->h~_-cOSy3VUe7n}ft?Q_mLF&U0000Px$=1D|BR7efgmOCg$VHn39^yN|?l0{M`my$`L#9$Hw*$oDg$)XG>cEunum<$S0 zRz;KyAF<3zN3;<9GIu){&SE#c>nG^uqvEWi}Q{;y-$p*G2WGkOg7l$&*05)gA zrM#x72x4L&z{Z7a<$LP7kS6^A&9h<0D@|)ilP-YfDYxU3raPobGr$+yA+Co)n$!Tj z^O#IB``e{ehJeb@g~w!(SwaPuivbm(eUHhGoTJXbbJ3w=@i$UY=Y|^_%SoxCJ4Z65#CGI<&U`WJ4FT@~WMFo@({zM@58KqZHV;sv3JxG0 zO~*hx-O^NR;Rzs1HZ`u#$)#F&63C_pzQ?Rk1veK1F)s->HW=in;jzJyLtmf|v!BNX uZ2--8j=2p-f~?ww0FF?&Rl5fNvi}8wR-zB9hMnF30000Px$aY;l$R7eeDU>Htd$BrG6TefV`A;nKjq$tLx7G(MF-@o_&|Nnpg)~#E0@u@|Y zV?^eV%Z6DF)UOUT;|&uNlasf%_hmw6QXB$DjvV0y`5eh|kewp`{{7pxefxGjnmfS8 z#^y64BjYM87K!}%^Jg!i=%6?RKo_|yR%(TvRzghGNUX#i$1Fb6aN6Jafkk3_#= zVPSFh^z^)hBnD8nj0Tv+3$@BpsZ4$sl=!ioR$nt2Q z-G6D44S~h41h51I)ejn2900c*Bu8}zkYYL29YCt(RCNG3mQ&3ENS%G}U;vjb? zhIQv;UIIDl0X`wF?gc(TCP7fwtHlOX#8VRF7tG-5*zi=1Z`PT#?E#iK=JG&exjbDQ zLo80ey|OUqu!8{G19>CORw+4#z}8hSd~}yFS)FllQ4r){*|aD)G%z@Xl|LXbwDkpZ zLW6sYvt16zWe(R)};qoWu7d%2MiSk22WQ%mvv4FO#pNR#Y8Wy+M_FD?9lf=nere!&e4z5=1eK%T#+i(?4Kb=^}N zc^MRWoG`pmK?wi= diff --git a/src/assets/select_dropdown_up.png b/src/assets/select_dropdown_up.png deleted file mode 100644 index 67d3eabfbe1ff6f4cfde03e1721ef691af27832f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 696 zcmeAS@N?(olHy`uVBq!ia0vp^azM<_!3HEh@2Z~zq*&4&eH|GXHuiJ>Nn{1`6_P!I zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4NxK=HNrE^*Ox&H$mU>R zViaOv2C^7|kfA-3fd$NFU;vr~1k4K<5wZ)I;IeWHnBi=Gkiu4(<(fc4A~QoGN+NuH ztdjF{^%7I^lT!66atlBT7;Gx6fXv*~l0=1y+?>2(s|s5sunH?68zii+qySb@l5MLL z;TxdfoL`ixV5(=LXP{)qrJ$f-QP|K%!RuMVYBUn?dH=8QOqVqKHB5vC#)v zj^r4KPr;%<|{Lo5XMp7rKyP~dUBXqI=zvO7rpV3@>i zV-ew=w)o#7vq~!ND>9vr+TF%pJZpkM!@b{6bJCM}te=;??USloaIvXCbdFVgA8#Hu%RQkgx`Y`eb`<71i5B(XU^#^4yDAgU7y{J=nkof}3^Tv!L coin#Huk`JlIdenfeo(}Ey85}Sb4q9e07R9^2><{9 diff --git a/src/components/Banner/HalvingBanner.tsx b/src/components/Banner/HalvingBanner.tsx index bc58cc75a..af6093662 100644 --- a/src/components/Banner/HalvingBanner.tsx +++ b/src/components/Banner/HalvingBanner.tsx @@ -1,12 +1,12 @@ import classnames from 'classnames' import { useTranslation } from 'react-i18next' import styles from './index.module.scss' -import halvingBanner from '../../assets/halving_banner.png' -import halvingBannerSuccess from '../../assets/halving_banner_success.png' -import halvingBannerSuccessMobile from '../../assets/halving_banner_success_mobile.png' -import { ReactComponent as MoveIcon } from '../../assets/move.svg' +import halvingBanner from './halving_banner.png' +import halvingBannerSuccess from './halving_banner_success.png' +import halvingBannerSuccessMobile from './halving_banner_success_mobile.png' +import { ReactComponent as MoveIcon } from './move.svg' import LoadingWhiteImage from '../../assets/loading_white.gif' -import halvingSuccessAni from '../../assets/halving_success_ani.gif' +import halvingSuccessAni from './halving_success_ani.gif' import SimpleButton from '../SimpleButton' import { useCountdown, useHalving, useIsMobile } from '../../utils/hook' diff --git a/src/assets/ckb_explorer_banner.svg b/src/components/Banner/ckb_explorer_banner.svg similarity index 100% rename from src/assets/ckb_explorer_banner.svg rename to src/components/Banner/ckb_explorer_banner.svg diff --git a/src/assets/ckb_explorer_banner_phone.svg b/src/components/Banner/ckb_explorer_banner_phone.svg similarity index 100% rename from src/assets/ckb_explorer_banner_phone.svg rename to src/components/Banner/ckb_explorer_banner_phone.svg diff --git a/src/assets/halving_banner.png b/src/components/Banner/halving_banner.png similarity index 100% rename from src/assets/halving_banner.png rename to src/components/Banner/halving_banner.png diff --git a/src/assets/halving_banner_success.png b/src/components/Banner/halving_banner_success.png similarity index 100% rename from src/assets/halving_banner_success.png rename to src/components/Banner/halving_banner_success.png diff --git a/src/assets/halving_banner_success_mobile.png b/src/components/Banner/halving_banner_success_mobile.png similarity index 100% rename from src/assets/halving_banner_success_mobile.png rename to src/components/Banner/halving_banner_success_mobile.png diff --git a/src/assets/halving_success_ani.gif b/src/components/Banner/halving_success_ani.gif similarity index 100% rename from src/assets/halving_success_ani.gif rename to src/components/Banner/halving_success_ani.gif diff --git a/src/components/Banner/index.module.scss b/src/components/Banner/index.module.scss index 2703ae03e..67da15ed9 100644 --- a/src/components/Banner/index.module.scss +++ b/src/components/Banner/index.module.scss @@ -5,13 +5,13 @@ $backgroudColor: #232323; background-color: $backgroudColor; height: 200px; position: relative; - background-image: url('../../assets/ckb_explorer_banner.svg'); + background-image: url('./ckb_explorer_banner.svg'); background-repeat: no-repeat; background-position: center center; background-size: auto 100%; @media (width <= 750px) { - background-image: url('../../assets/ckb_explorer_banner_phone.svg'); + background-image: url('./ckb_explorer_banner_phone.svg'); } } diff --git a/src/assets/move.svg b/src/components/Banner/move.svg similarity index 100% rename from src/assets/move.svg rename to src/components/Banner/move.svg diff --git a/src/assets/copy.png b/src/components/Card/HashCard/copy.png similarity index 100% rename from src/assets/copy.png rename to src/components/Card/HashCard/copy.png diff --git a/src/assets/download_tx.svg b/src/components/Card/HashCard/download_tx.svg similarity index 100% rename from src/assets/download_tx.svg rename to src/components/Card/HashCard/download_tx.svg diff --git a/src/components/Card/HashCard/index.tsx b/src/components/Card/HashCard/index.tsx index 0059ffe33..60482486c 100644 --- a/src/components/Card/HashCard/index.tsx +++ b/src/components/Card/HashCard/index.tsx @@ -3,13 +3,13 @@ import { Link } from 'react-router-dom' import { Radio, Tooltip } from 'antd' import { useTranslation } from 'react-i18next' import { LayoutLiteProfessional } from '../../../constants/common' -import CopyIcon from '../../../assets/copy.png' +import CopyIcon from './copy.png' import { explorerService } from '../../../services/ExplorerService' import SmallLoading from '../../Loading/SmallLoading' import { useIsMobile, useNewAddr, useDeprecatedAddr, useSearchParams, useUpdateSearchParams } from '../../../utils/hook' import SimpleButton from '../../SimpleButton' import { ReactComponent as OpenInNew } from '../../../assets/open_in_new.svg' -import { ReactComponent as DownloadIcon } from '../../../assets/download_tx.svg' +import { ReactComponent as DownloadIcon } from './download_tx.svg' import { HashCardPanel, LoadingPanel } from './styled' import styles from './styles.module.scss' import AddressText from '../../AddressText' diff --git a/src/assets/export_icon.svg b/src/components/CsvExport/export_icon.svg similarity index 100% rename from src/assets/export_icon.svg rename to src/components/CsvExport/export_icon.svg diff --git a/src/components/CsvExport/index.tsx b/src/components/CsvExport/index.tsx index 33fe91452..01625ee9f 100644 --- a/src/components/CsvExport/index.tsx +++ b/src/components/CsvExport/index.tsx @@ -1,7 +1,7 @@ import { Link } from 'react-router-dom' import { useTranslation } from 'react-i18next' import styles from './styles.module.scss' -import { ReactComponent as ExportIcon } from '../../assets/export_icon.svg' +import { ReactComponent as ExportIcon } from './export_icon.svg' import { SupportedExportTransactionType } from '../../services/ExplorerService' export function CsvExport({ type, id }: { type: SupportedExportTransactionType; id?: string }) { diff --git a/src/components/Error/index.tsx b/src/components/Error/index.tsx index b62c2598e..7c5986a0e 100644 --- a/src/components/Error/index.tsx +++ b/src/components/Error/index.tsx @@ -1,5 +1,5 @@ -import PCDataNotFoundImage from '../../assets/pc_data_not_found.png' -import MobileDataNotFoundImage from '../../assets/mobile_data_not_found.png' +import PCDataNotFoundImage from './pc_data_not_found.png' +import MobileDataNotFoundImage from './mobile_data_not_found.png' import { useIsMobile } from '../../utils/hook' import { ErrorPanel } from './styled' diff --git a/src/assets/mobile_data_not_found.png b/src/components/Error/mobile_data_not_found.png similarity index 100% rename from src/assets/mobile_data_not_found.png rename to src/components/Error/mobile_data_not_found.png diff --git a/src/assets/pc_data_not_found.png b/src/components/Error/pc_data_not_found.png similarity index 100% rename from src/assets/pc_data_not_found.png rename to src/components/Error/pc_data_not_found.png diff --git a/src/assets/footer_X.svg b/src/components/Footer/footer_X.svg similarity index 100% rename from src/assets/footer_X.svg rename to src/components/Footer/footer_X.svg diff --git a/src/assets/footer_discord.svg b/src/components/Footer/footer_discord.svg similarity index 100% rename from src/assets/footer_discord.svg rename to src/components/Footer/footer_discord.svg diff --git a/src/assets/footer_forum.svg b/src/components/Footer/footer_forum.svg similarity index 100% rename from src/assets/footer_forum.svg rename to src/components/Footer/footer_forum.svg diff --git a/src/assets/footer_medium.svg b/src/components/Footer/footer_medium.svg similarity index 100% rename from src/assets/footer_medium.svg rename to src/components/Footer/footer_medium.svg diff --git a/src/assets/footer_reddit.svg b/src/components/Footer/footer_reddit.svg similarity index 100% rename from src/assets/footer_reddit.svg rename to src/components/Footer/footer_reddit.svg diff --git a/src/assets/footer_telegram.svg b/src/components/Footer/footer_telegram.svg similarity index 100% rename from src/assets/footer_telegram.svg rename to src/components/Footer/footer_telegram.svg diff --git a/src/assets/footer_youtube.svg b/src/components/Footer/footer_youtube.svg similarity index 100% rename from src/assets/footer_youtube.svg rename to src/components/Footer/footer_youtube.svg diff --git a/src/components/Footer/index.tsx b/src/components/Footer/index.tsx index d6944fdc2..814eac3ba 100644 --- a/src/components/Footer/index.tsx +++ b/src/components/Footer/index.tsx @@ -1,12 +1,12 @@ import { ReactNode, memo, useMemo } from 'react' import { useTranslation } from 'react-i18next' -import { ReactComponent as XIcon } from '../../assets/footer_X.svg' -import { ReactComponent as MediumIcon } from '../../assets/footer_medium.svg' -import { ReactComponent as TelegramIcon } from '../../assets/footer_telegram.svg' -import { ReactComponent as RedditIcon } from '../../assets/footer_reddit.svg' -import { ReactComponent as YoutubeIcon } from '../../assets/footer_youtube.svg' -import { ReactComponent as ForumIcon } from '../../assets/footer_forum.svg' -import { ReactComponent as Discord } from '../../assets/footer_discord.svg' +import { ReactComponent as XIcon } from './footer_X.svg' +import { ReactComponent as MediumIcon } from './footer_medium.svg' +import { ReactComponent as TelegramIcon } from './footer_telegram.svg' +import { ReactComponent as RedditIcon } from './footer_reddit.svg' +import { ReactComponent as YoutubeIcon } from './footer_youtube.svg' +import { ReactComponent as ForumIcon } from './footer_forum.svg' +import { ReactComponent as Discord } from './footer_discord.svg' import { getCurrentYear } from '../../utils/date' import { FooterMenuPanel, FooterItemPanel, FooterImageItemPanel, FooterPanel } from './styled' import { useIsMobile } from '../../utils/hook' diff --git a/src/components/Header/LanguageComp/index.tsx b/src/components/Header/LanguageComp/index.tsx index 22fbc17f9..3fc149677 100644 --- a/src/components/Header/LanguageComp/index.tsx +++ b/src/components/Header/LanguageComp/index.tsx @@ -2,7 +2,7 @@ import { useState, useLayoutEffect, FC } from 'react' import { HeaderLanguagePanel, MobileSubMenuPanel } from './styled' import SimpleButton from '../../SimpleButton' import WhiteDropdownIcon from '../../../assets/white_dropdown.png' -import WhiteDropUpIcon from '../../../assets/white_drop_up.png' +import WhiteDropUpIcon from './white_drop_up.png' import BlueDropUpIcon from '../../../assets/blue_drop_up.png' import GreenDropUpIcon from '../../../assets/green_drop_up.png' import { isMainnet } from '../../../utils/chain' diff --git a/src/assets/white_drop_up.png b/src/components/Header/LanguageComp/white_drop_up.png similarity index 100% rename from src/assets/white_drop_up.png rename to src/components/Header/LanguageComp/white_drop_up.png diff --git a/src/components/Header/SearchComp/index.tsx b/src/components/Header/SearchComp/index.tsx index 5b0a4c623..ee6f0d35a 100644 --- a/src/components/Header/SearchComp/index.tsx +++ b/src/components/Header/SearchComp/index.tsx @@ -1,6 +1,6 @@ import { FC, memo, useCallback } from 'react' import Search from '../../Search' -import SearchLogo from '../../../assets/search_white.png' +import SearchLogo from './search_white.png' import { HeaderSearchPanel, HeaderSearchBarPanel } from './styled' export const SearchComp: FC<{ diff --git a/src/assets/search_white.png b/src/components/Header/SearchComp/search_white.png similarity index 100% rename from src/assets/search_white.png rename to src/components/Header/SearchComp/search_white.png diff --git a/src/assets/ckb_logo.png b/src/components/Header/ckb_logo.png similarity index 100% rename from src/assets/ckb_logo.png rename to src/components/Header/ckb_logo.png diff --git a/src/components/Header/index.tsx b/src/components/Header/index.tsx index fc7c95ca6..fc4e40155 100644 --- a/src/components/Header/index.tsx +++ b/src/components/Header/index.tsx @@ -2,7 +2,7 @@ import { FC, ReactNode, useEffect, useRef, useState } from 'react' import { useLocation } from 'react-router' import classNames from 'classnames' import { createBrowserHistory } from 'history' -import LogoIcon from '../../assets/ckb_logo.png' +import LogoIcon from './ckb_logo.png' import { HeaderPanel, HeaderEmptyPanel, HeaderMobileMenuPanel, HeaderLogoPanel } from './styled' import MenusComp from './MenusComp' import { SearchComp } from './SearchComp' diff --git a/src/components/Pagination/index.tsx b/src/components/Pagination/index.tsx index e828f5e55..39b2ac84d 100644 --- a/src/components/Pagination/index.tsx +++ b/src/components/Pagination/index.tsx @@ -1,10 +1,10 @@ import { useState } from 'react' import { useTranslation } from 'react-i18next' import { PaginationLeftItem, PaginationRightItem, PaginationPanel } from './styled' -import LeftBlack from '../../assets/pagination_black_left.png' -import RightBlack from '../../assets/pagination_black_right.png' -import LeftGrey from '../../assets/pagination_grey_left.png' -import RightGrey from '../../assets/pagination_grey_right.png' +import LeftBlack from './pagination_black_left.png' +import RightBlack from './pagination_black_right.png' +import LeftGrey from './pagination_grey_left.png' +import RightGrey from './pagination_grey_right.png' import { useIsMobile } from '../../utils/hook' import SimpleButton from '../SimpleButton' import { HelpTip } from '../HelpTip' diff --git a/src/assets/pagination_black_left.png b/src/components/Pagination/pagination_black_left.png similarity index 100% rename from src/assets/pagination_black_left.png rename to src/components/Pagination/pagination_black_left.png diff --git a/src/assets/pagination_black_right.png b/src/components/Pagination/pagination_black_right.png similarity index 100% rename from src/assets/pagination_black_right.png rename to src/components/Pagination/pagination_black_right.png diff --git a/src/assets/pagination_grey_left.png b/src/components/Pagination/pagination_grey_left.png similarity index 100% rename from src/assets/pagination_grey_left.png rename to src/components/Pagination/pagination_grey_left.png diff --git a/src/assets/pagination_grey_right.png b/src/components/Pagination/pagination_grey_right.png similarity index 100% rename from src/assets/pagination_grey_right.png rename to src/components/Pagination/pagination_grey_right.png diff --git a/src/components/Transaction/TransactionCellArrow/index.tsx b/src/components/Transaction/TransactionCellArrow/index.tsx index 47fd63e41..589ff7261 100644 --- a/src/components/Transaction/TransactionCellArrow/index.tsx +++ b/src/components/Transaction/TransactionCellArrow/index.tsx @@ -2,10 +2,10 @@ import { Link } from 'react-router-dom' import { Tooltip } from 'antd' import { useTranslation } from 'react-i18next' import { CellType } from '../../../constants/common' -import RightGreenArrow from '../../../assets/right_green_arrow.png' -import RightBlueArrow from '../../../assets/right_blue_arrow.png' -import LiveCellIcon from '../../../assets/live_cell.png' -import LiveCellBlueIcon from '../../../assets/live_cell_blue.png' +import RightGreenArrow from './right_green_arrow.png' +import RightBlueArrow from './right_blue_arrow.png' +import LiveCellIcon from './live_cell.png' +import LiveCellBlueIcon from './live_cell_blue.png' import { isMainnet } from '../../../utils/chain' import { RightArrowImage, LeftArrowImage } from './styled' import { Cell } from '../../../models/Cell' diff --git a/src/assets/live_cell.png b/src/components/Transaction/TransactionCellArrow/live_cell.png similarity index 100% rename from src/assets/live_cell.png rename to src/components/Transaction/TransactionCellArrow/live_cell.png diff --git a/src/assets/live_cell_blue.png b/src/components/Transaction/TransactionCellArrow/live_cell_blue.png similarity index 100% rename from src/assets/live_cell_blue.png rename to src/components/Transaction/TransactionCellArrow/live_cell_blue.png diff --git a/src/assets/right_blue_arrow.png b/src/components/Transaction/TransactionCellArrow/right_blue_arrow.png similarity index 100% rename from src/assets/right_blue_arrow.png rename to src/components/Transaction/TransactionCellArrow/right_blue_arrow.png diff --git a/src/assets/right_green_arrow.png b/src/components/Transaction/TransactionCellArrow/right_green_arrow.png similarity index 100% rename from src/assets/right_green_arrow.png rename to src/components/Transaction/TransactionCellArrow/right_green_arrow.png diff --git a/src/components/TransactionItem/index.tsx b/src/components/TransactionItem/index.tsx index aedcc2514..6448d9a5b 100644 --- a/src/components/TransactionItem/index.tsx +++ b/src/components/TransactionItem/index.tsx @@ -1,7 +1,7 @@ import { ReactNode, useEffect, useRef } from 'react' import { useTranslation } from 'react-i18next' -import RightArrowIcon from '../../assets/input_arrow_output.png' -import DownArrowIcon from '../../assets/input_arrow_output_down.png' +import RightArrowIcon from './input_arrow_output.png' +import DownArrowIcon from './input_arrow_output_down.png' import { localeNumberString } from '../../utils/number' import TransactionCell from './TransactionItemCell' import TransactionCellList from './TransactionItemCellList' diff --git a/src/assets/input_arrow_output.png b/src/components/TransactionItem/input_arrow_output.png similarity index 100% rename from src/assets/input_arrow_output.png rename to src/components/TransactionItem/input_arrow_output.png diff --git a/src/assets/input_arrow_output_down.png b/src/components/TransactionItem/input_arrow_output_down.png similarity index 100% rename from src/assets/input_arrow_output_down.png rename to src/components/TransactionItem/input_arrow_output_down.png diff --git a/src/assets/blue_mobile_404.png b/src/pages/404/blue_mobile_404.png similarity index 100% rename from src/assets/blue_mobile_404.png rename to src/pages/404/blue_mobile_404.png diff --git a/src/assets/blue_pc_404.png b/src/pages/404/blue_pc_404.png similarity index 100% rename from src/assets/blue_pc_404.png rename to src/pages/404/blue_pc_404.png diff --git a/src/pages/404/index.tsx b/src/pages/404/index.tsx index 42d9a84f8..ef5f8219e 100644 --- a/src/pages/404/index.tsx +++ b/src/pages/404/index.tsx @@ -1,7 +1,7 @@ -import PC404mage from '../../assets/pc_404.png' -import Mobile404Image from '../../assets/mobile_404.png' -import PCBlue404Image from '../../assets/blue_pc_404.png' -import MobileBlue404Image from '../../assets/blue_mobile_404.png' +import PC404mage from './pc_404.png' +import Mobile404Image from './mobile_404.png' +import PCBlue404Image from './blue_pc_404.png' +import MobileBlue404Image from './blue_mobile_404.png' import { useIsMobile } from '../../utils/hook' import { isMainnet } from '../../utils/chain' import styles from './index.module.scss' diff --git a/src/assets/mobile_404.png b/src/pages/404/mobile_404.png similarity index 100% rename from src/assets/mobile_404.png rename to src/pages/404/mobile_404.png diff --git a/src/assets/pc_404.png b/src/pages/404/pc_404.png similarity index 100% rename from src/assets/pc_404.png rename to src/pages/404/pc_404.png diff --git a/src/pages/Address/AddressComp.tsx b/src/pages/Address/AddressComp.tsx index 63d1d0b64..3afe3f739 100644 --- a/src/pages/Address/AddressComp.tsx +++ b/src/pages/Address/AddressComp.tsx @@ -20,10 +20,10 @@ import { } from './styled' import DecimalCapacity from '../../components/DecimalCapacity' import TitleCard from '../../components/Card/TitleCard' -import CKBTokenIcon from '../../assets/ckb_token_icon.png' +import CKBTokenIcon from './ckb_token_icon.png' import SUDTTokenIcon from '../../assets/sudt_token.png' -import { ReactComponent as TimeDownIcon } from '../../assets/time_down.svg' -import { ReactComponent as TimeUpIcon } from '../../assets/time_up.svg' +import { ReactComponent as TimeDownIcon } from './time_down.svg' +import { ReactComponent as TimeUpIcon } from './time_up.svg' import { sliceNftName } from '../../utils/string' import { OrderByType, diff --git a/src/assets/ckb_token_icon.png b/src/pages/Address/ckb_token_icon.png similarity index 100% rename from src/assets/ckb_token_icon.png rename to src/pages/Address/ckb_token_icon.png diff --git a/src/assets/time_down.svg b/src/pages/Address/time_down.svg similarity index 100% rename from src/assets/time_down.svg rename to src/pages/Address/time_down.svg diff --git a/src/assets/time_up.svg b/src/pages/Address/time_up.svg similarity index 100% rename from src/assets/time_up.svg rename to src/pages/Address/time_up.svg diff --git a/src/pages/BlockDetail/BlockComp.tsx b/src/pages/BlockDetail/BlockComp.tsx index 1d0c9e361..a78a3dfb5 100644 --- a/src/pages/BlockDetail/BlockComp.tsx +++ b/src/pages/BlockDetail/BlockComp.tsx @@ -4,10 +4,10 @@ import BigNumber from 'bignumber.js' import { Tooltip } from 'antd' import { Trans, useTranslation } from 'react-i18next' import Pagination from '../../components/Pagination' -import DropDownIcon from '../../assets/content_drop_down.png' -import PackUpIcon from '../../assets/content_pack_up.png' -import DropDownBlueIcon from '../../assets/content_blue_drop_down.png' -import PackUpBlueIcon from '../../assets/content_blue_pack_up.png' +import DropDownIcon from './content_drop_down.png' +import PackUpIcon from './content_pack_up.png' +import DropDownBlueIcon from './content_blue_drop_down.png' +import PackUpBlueIcon from './content_blue_pack_up.png' import OverviewCard, { OverviewItemData } from '../../components/Card/OverviewCard' import TransactionItem from '../../components/TransactionItem/index' import { parseSimpleDate } from '../../utils/date' @@ -26,8 +26,8 @@ import { } from './styled' import HelpIcon from '../../assets/qa_help.png' import MoreIcon from '../../assets/more.png' -import MinerRewardIcon from '../../assets/miner_complete.png' -import { ReactComponent as LeftArrow } from '../../assets/prev_block.svg' +import MinerRewardIcon from './miner_complete.png' +import { ReactComponent as LeftArrow } from './prev_block.svg' import { isMainnet } from '../../utils/chain' import DecimalCapacity from '../../components/DecimalCapacity' import { DELAY_BLOCK_NUMBER } from '../../constants/common' diff --git a/src/assets/content_blue_drop_down.png b/src/pages/BlockDetail/content_blue_drop_down.png similarity index 100% rename from src/assets/content_blue_drop_down.png rename to src/pages/BlockDetail/content_blue_drop_down.png diff --git a/src/assets/content_blue_pack_up.png b/src/pages/BlockDetail/content_blue_pack_up.png similarity index 100% rename from src/assets/content_blue_pack_up.png rename to src/pages/BlockDetail/content_blue_pack_up.png diff --git a/src/assets/content_drop_down.png b/src/pages/BlockDetail/content_drop_down.png similarity index 100% rename from src/assets/content_drop_down.png rename to src/pages/BlockDetail/content_drop_down.png diff --git a/src/assets/content_pack_up.png b/src/pages/BlockDetail/content_pack_up.png similarity index 100% rename from src/assets/content_pack_up.png rename to src/pages/BlockDetail/content_pack_up.png diff --git a/src/assets/miner_complete.png b/src/pages/BlockDetail/miner_complete.png similarity index 100% rename from src/assets/miner_complete.png rename to src/pages/BlockDetail/miner_complete.png diff --git a/src/assets/prev_block.svg b/src/pages/BlockDetail/prev_block.svg similarity index 100% rename from src/assets/prev_block.svg rename to src/pages/BlockDetail/prev_block.svg diff --git a/src/assets/Mobile_error.png b/src/pages/Error/Mobile_error.png similarity index 100% rename from src/assets/Mobile_error.png rename to src/pages/Error/Mobile_error.png diff --git a/src/assets/error.png b/src/pages/Error/error.png similarity index 100% rename from src/assets/error.png rename to src/pages/Error/error.png diff --git a/src/pages/Error/index.tsx b/src/pages/Error/index.tsx index fd5e38ec2..67671668f 100644 --- a/src/pages/Error/index.tsx +++ b/src/pages/Error/index.tsx @@ -1,7 +1,7 @@ import { useTranslation } from 'react-i18next' import Content from '../../components/Content' -import PCErrorImage from '../../assets/error.png' -import MobileErrorImage from '../../assets/Mobile_error.png' +import PCErrorImage from './error.png' +import MobileErrorImage from './Mobile_error.png' import { useIsMobile } from '../../utils/hook' import styles from './index.module.scss' diff --git a/src/assets/block_icon.svg b/src/pages/ExportTransactions/block_icon.svg similarity index 100% rename from src/assets/block_icon.svg rename to src/pages/ExportTransactions/block_icon.svg diff --git a/src/assets/error_icon.svg b/src/pages/ExportTransactions/error_icon.svg similarity index 100% rename from src/assets/error_icon.svg rename to src/pages/ExportTransactions/error_icon.svg diff --git a/src/pages/ExportTransactions/index.tsx b/src/pages/ExportTransactions/index.tsx index ad4986544..319fe3baf 100644 --- a/src/pages/ExportTransactions/index.tsx +++ b/src/pages/ExportTransactions/index.tsx @@ -11,9 +11,9 @@ import Content from '../../components/Content' import styles from './styles.module.scss' import 'dayjs/locale/es-us' import 'dayjs/locale/zh-cn' -import { ReactComponent as BlockIcon } from '../../assets/block_icon.svg' -import { ReactComponent as ErrorIcon } from '../../assets/error_icon.svg' -import { ReactComponent as SuccessIcon } from '../../assets/success_icon.svg' +import { ReactComponent as BlockIcon } from './block_icon.svg' +import { ReactComponent as ErrorIcon } from './error_icon.svg' +import { ReactComponent as SuccessIcon } from './success_icon.svg' import { omit } from '../../utils/object' import { SupportedExportTransactionType, explorerService } from '../../services/ExplorerService' diff --git a/src/assets/success_icon.svg b/src/pages/ExportTransactions/success_icon.svg similarity index 100% rename from src/assets/success_icon.svg rename to src/pages/ExportTransactions/success_icon.svg diff --git a/src/pages/FeeRateTracker/FeeRateTrackerComp.tsx b/src/pages/FeeRateTracker/FeeRateTrackerComp.tsx index ffb8f0f1e..da9e84933 100644 --- a/src/pages/FeeRateTracker/FeeRateTrackerComp.tsx +++ b/src/pages/FeeRateTracker/FeeRateTrackerComp.tsx @@ -5,9 +5,9 @@ import classNames from 'classnames' import { useTranslation } from 'react-i18next' import styles from './styles.module.scss' import { ReactChartCore } from '../StatisticsChart/common' -import { ReactComponent as BikeIcon } from '../../assets/bike.svg' -import { ReactComponent as CarIcon } from '../../assets/car.svg' -import { ReactComponent as RocketIcon } from '../../assets/rocket.svg' +import { ReactComponent as BikeIcon } from './bike.svg' +import { ReactComponent as CarIcon } from './car.svg' +import { ReactComponent as RocketIcon } from './rocket.svg' import { ChartColor } from '../../constants/common' import { useCurrentLanguage } from '../../utils/i18n' import type { FeeRateTracker } from '../../services/ExplorerService/fetcher' diff --git a/src/assets/bike.svg b/src/pages/FeeRateTracker/bike.svg similarity index 100% rename from src/assets/bike.svg rename to src/pages/FeeRateTracker/bike.svg diff --git a/src/assets/car.svg b/src/pages/FeeRateTracker/car.svg similarity index 100% rename from src/assets/car.svg rename to src/pages/FeeRateTracker/car.svg diff --git a/src/assets/rocket.svg b/src/pages/FeeRateTracker/rocket.svg similarity index 100% rename from src/assets/rocket.svg rename to src/pages/FeeRateTracker/rocket.svg diff --git a/src/assets/X.svg b/src/pages/Halving/X.svg similarity index 100% rename from src/assets/X.svg rename to src/pages/Halving/X.svg diff --git a/src/assets/block-rewards-cn.png b/src/pages/Halving/block-rewards-cn.png similarity index 100% rename from src/assets/block-rewards-cn.png rename to src/pages/Halving/block-rewards-cn.png diff --git a/src/assets/block-rewards.png b/src/pages/Halving/block-rewards.png similarity index 100% rename from src/assets/block-rewards.png rename to src/pages/Halving/block-rewards.png diff --git a/src/assets/calendar.svg b/src/pages/Halving/calendar.svg similarity index 100% rename from src/assets/calendar.svg rename to src/pages/Halving/calendar.svg diff --git a/src/assets/ckb_base_issuance_trend.png b/src/pages/Halving/ckb_base_issuance_trend.png similarity index 100% rename from src/assets/ckb_base_issuance_trend.png rename to src/pages/Halving/ckb_base_issuance_trend.png diff --git a/src/assets/halving_bg.png b/src/pages/Halving/halving_bg.png similarity index 100% rename from src/assets/halving_bg.png rename to src/pages/Halving/halving_bg.png diff --git a/src/assets/halving_success_bg.png b/src/pages/Halving/halving_success_bg.png similarity index 100% rename from src/assets/halving_success_bg.png rename to src/pages/Halving/halving_success_bg.png diff --git a/src/pages/Halving/index.tsx b/src/pages/Halving/index.tsx index 7cad229a4..26c9784dd 100644 --- a/src/pages/Halving/index.tsx +++ b/src/pages/Halving/index.tsx @@ -3,13 +3,13 @@ import BigNumber from 'bignumber.js' import classnames from 'classnames' import { useTranslation } from 'react-i18next' import Content from '../../components/Content' -import baseIssuance from '../../assets/ckb_base_issuance_trend.png' -import blockRewards from '../../assets/block-rewards.png' -import blockRewardsCN from '../../assets/block-rewards-cn.png' -import halvingBg from '../../assets/halving_bg.png' -import halvingSuccessBg from '../../assets/halving_success_bg.png' -import { ReactComponent as CalendarIcon } from '../../assets/calendar.svg' -import { ReactComponent as XIcon } from '../../assets/X.svg' +import baseIssuance from './ckb_base_issuance_trend.png' +import blockRewards from './block-rewards.png' +import blockRewardsCN from './block-rewards-cn.png' +import halvingBg from './halving_bg.png' +import halvingSuccessBg from './halving_success_bg.png' +import { ReactComponent as CalendarIcon } from './calendar.svg' +import { ReactComponent as XIcon } from './X.svg' import { ReactComponent as WarningCircle } from '../../assets/warning_circle.svg' import { HalvingTable } from './HalvingTable' import { HalvingInfo } from './HalvingInfo' diff --git a/src/pages/Home/index.tsx b/src/pages/Home/index.tsx index 00e14ce74..938c83d2d 100644 --- a/src/pages/Home/index.tsx +++ b/src/pages/Home/index.tsx @@ -18,8 +18,8 @@ import { BLOCK_POLLING_TIME, ListPageParams, DELAY_BLOCK_NUMBER } from '../../co import { localeNumberString, handleHashRate, handleDifficulty } from '../../utils/number' import { handleBigNumber } from '../../utils/string' import { isMainnet } from '../../utils/chain' -import LatestBlocksIcon from '../../assets/latest_blocks.png' -import LatestTransactionsIcon from '../../assets/latest_transactions.png' +import LatestBlocksIcon from './latest_blocks.png' +import LatestTransactionsIcon from './latest_transactions.png' import { BlockCardItem, TransactionCardItem } from './TableCard' import Loading from '../../components/Loading/SmallLoading' import { useElementIntersecting, useIsLGScreen, useIsMobile } from '../../utils/hook' diff --git a/src/assets/latest_blocks.png b/src/pages/Home/latest_blocks.png similarity index 100% rename from src/assets/latest_blocks.png rename to src/pages/Home/latest_blocks.png diff --git a/src/assets/latest_transactions.png b/src/pages/Home/latest_transactions.png similarity index 100% rename from src/assets/latest_transactions.png rename to src/pages/Home/latest_transactions.png diff --git a/src/assets/dao_balance.png b/src/pages/NervosDao/DaoOverview/dao_balance.png similarity index 100% rename from src/assets/dao_balance.png rename to src/pages/NervosDao/DaoOverview/dao_balance.png diff --git a/src/assets/dao_down.png b/src/pages/NervosDao/DaoOverview/dao_down.png similarity index 100% rename from src/assets/dao_down.png rename to src/pages/NervosDao/DaoOverview/dao_down.png diff --git a/src/assets/dao_up.png b/src/pages/NervosDao/DaoOverview/dao_up.png similarity index 100% rename from src/assets/dao_up.png rename to src/pages/NervosDao/DaoOverview/dao_up.png diff --git a/src/pages/NervosDao/DaoOverview/index.tsx b/src/pages/NervosDao/DaoOverview/index.tsx index 546c161cf..fda5ed3b3 100644 --- a/src/pages/NervosDao/DaoOverview/index.tsx +++ b/src/pages/NervosDao/DaoOverview/index.tsx @@ -17,9 +17,9 @@ import { DaoOverviewPieChartPanel, DaoOverviewPieItemsPanel, } from './styled' -import DaoUpIcon from '../../../assets/dao_up.png' -import DaoDownIcon from '../../../assets/dao_down.png' -import DaoBalanceIcon from '../../../assets/dao_balance.png' +import DaoUpIcon from './dao_up.png' +import DaoDownIcon from './dao_down.png' +import DaoBalanceIcon from './dao_balance.png' import { handleBigNumber, handleBigNumberFloor } from '../../../utils/string' import { localeNumberString } from '../../../utils/number' import { shannonToCkbDecimal, shannonToCkb } from '../../../utils/util' diff --git a/src/pages/Script/ScriptsComp.tsx b/src/pages/Script/ScriptsComp.tsx index ec0720bf9..a1224b8b3 100644 --- a/src/pages/Script/ScriptsComp.tsx +++ b/src/pages/Script/ScriptsComp.tsx @@ -18,7 +18,7 @@ import styles from './styles.module.scss' import { QueryResult } from '../../components/QueryResult' import AddressText from '../../components/AddressText' import { ReactComponent as CopyIcon } from '../../assets/copy_icon.svg' -import { ReactComponent as InfoMoreIcon } from '../../assets/info_more_icon.svg' +import { ReactComponent as InfoMoreIcon } from './info_more_icon.svg' import { useSetToast } from '../../components/Toast' import { CellBasicInfo, transformToTransaction } from '../../utils/transformer' diff --git a/src/assets/info_more_icon.svg b/src/pages/Script/info_more_icon.svg similarity index 100% rename from src/assets/info_more_icon.svg rename to src/pages/Script/info_more_icon.svg diff --git a/src/assets/chart_no_data.png b/src/pages/StatisticsChart/common/chart_no_data.png similarity index 100% rename from src/assets/chart_no_data.png rename to src/pages/StatisticsChart/common/chart_no_data.png diff --git a/src/assets/chart_no_data_aggron.png b/src/pages/StatisticsChart/common/chart_no_data_aggron.png similarity index 100% rename from src/assets/chart_no_data_aggron.png rename to src/pages/StatisticsChart/common/chart_no_data_aggron.png diff --git a/src/pages/StatisticsChart/common/index.tsx b/src/pages/StatisticsChart/common/index.tsx index 0915dfd1c..e20c2da52 100644 --- a/src/pages/StatisticsChart/common/index.tsx +++ b/src/pages/StatisticsChart/common/index.tsx @@ -16,8 +16,8 @@ import { useTranslation } from 'react-i18next' import { useQuery } from '@tanstack/react-query' import { LoadingPanel, ChartNoDataPanel, ChartDetailTitle, ChartDetailPanel, ChartNotePanel } from './styled' import Loading from '../../../components/Loading' -import ChartNoDataImage from '../../../assets/chart_no_data.png' -import ChartNoDataAggronImage from '../../../assets/chart_no_data_aggron.png' +import ChartNoDataImage from './chart_no_data.png' +import ChartNoDataAggronImage from './chart_no_data_aggron.png' import { isMainnet } from '../../../utils/chain' import SmallLoading from '../../../components/Loading/SmallLoading' import Content from '../../../components/Content' diff --git a/src/assets/clock.svg b/src/pages/Transaction/TransactionCell/clock.svg similarity index 100% rename from src/assets/clock.svg rename to src/pages/Transaction/TransactionCell/clock.svg diff --git a/src/assets/cota_cell.svg b/src/pages/Transaction/TransactionCell/cota_cell.svg similarity index 100% rename from src/assets/cota_cell.svg rename to src/pages/Transaction/TransactionCell/cota_cell.svg diff --git a/src/assets/cota_reg_cell.svg b/src/pages/Transaction/TransactionCell/cota_reg_cell.svg similarity index 100% rename from src/assets/cota_reg_cell.svg rename to src/pages/Transaction/TransactionCell/cota_reg_cell.svg diff --git a/src/pages/Transaction/TransactionCell/index.tsx b/src/pages/Transaction/TransactionCell/index.tsx index 735516ebc..4df3ae328 100644 --- a/src/pages/Transaction/TransactionCell/index.tsx +++ b/src/pages/Transaction/TransactionCell/index.tsx @@ -24,13 +24,13 @@ import DecimalCapacity from '../../../components/DecimalCapacity' import NervosDAODepositIcon from '../../../assets/nervos_dao_cell.png' import NervosDAOWithdrawingIcon from '../../../assets/nervos_dao_withdrawing.png' import UDTTokenIcon from '../../../assets/udt_token.png' -import NFTIssuerIcon from '../../../assets/m_nft_issuer.svg' -import NFTClassIcon from '../../../assets/m_nft_class.svg' -import NFTTokenIcon from '../../../assets/m_nft.svg' -import CoTACellIcon from '../../../assets/cota_cell.svg' -import CoTARegCellIcon from '../../../assets/cota_reg_cell.svg' -import SporeCellIcon from '../../../assets/spore.svg' -import { ReactComponent as LockTimeIcon } from '../../../assets/clock.svg' +import NFTIssuerIcon from './m_nft_issuer.svg' +import NFTClassIcon from './m_nft_class.svg' +import NFTTokenIcon from './m_nft.svg' +import CoTACellIcon from './cota_cell.svg' +import CoTARegCellIcon from './cota_reg_cell.svg' +import SporeCellIcon from './spore.svg' +import { ReactComponent as LockTimeIcon } from './clock.svg' import { ReactComponent as BitAccountIcon } from '../../../assets/bit_account.svg' import TransactionCellScript from '../TransactionCellScript' import SimpleModal from '../../../components/Modal' diff --git a/src/assets/m_nft.svg b/src/pages/Transaction/TransactionCell/m_nft.svg similarity index 100% rename from src/assets/m_nft.svg rename to src/pages/Transaction/TransactionCell/m_nft.svg diff --git a/src/assets/m_nft_class.svg b/src/pages/Transaction/TransactionCell/m_nft_class.svg similarity index 100% rename from src/assets/m_nft_class.svg rename to src/pages/Transaction/TransactionCell/m_nft_class.svg diff --git a/src/assets/m_nft_issuer.svg b/src/pages/Transaction/TransactionCell/m_nft_issuer.svg similarity index 100% rename from src/assets/m_nft_issuer.svg rename to src/pages/Transaction/TransactionCell/m_nft_issuer.svg diff --git a/src/assets/spore.svg b/src/pages/Transaction/TransactionCell/spore.svg similarity index 100% rename from src/assets/spore.svg rename to src/pages/Transaction/TransactionCell/spore.svg diff --git a/src/assets/deprecated_addr_off.svg b/src/pages/Transaction/TransactionCellList/deprecated_addr_off.svg similarity index 100% rename from src/assets/deprecated_addr_off.svg rename to src/pages/Transaction/TransactionCellList/deprecated_addr_off.svg diff --git a/src/assets/deprecated_addr_on.svg b/src/pages/Transaction/TransactionCellList/deprecated_addr_on.svg similarity index 100% rename from src/assets/deprecated_addr_on.svg rename to src/pages/Transaction/TransactionCellList/deprecated_addr_on.svg diff --git a/src/pages/Transaction/TransactionCellList/index.tsx b/src/pages/Transaction/TransactionCellList/index.tsx index 0a49a8243..71f9b174f 100644 --- a/src/pages/Transaction/TransactionCellList/index.tsx +++ b/src/pages/Transaction/TransactionCellList/index.tsx @@ -5,9 +5,9 @@ import { CellType, PAGE_CELL_COUNT } from '../../../constants/common' import TransactionCell from '../TransactionCell' import { TransactionCellListPanel, TransactionCellListTitlePanel, TransactionCellsPanel } from './styled' import SmallLoading from '../../../components/Loading/SmallLoading' -import { ReactComponent as DeprecatedAddrOn } from '../../../assets/deprecated_addr_on.svg' -import { ReactComponent as DeprecatedAddrOff } from '../../../assets/deprecated_addr_off.svg' -import { ReactComponent as Warning } from '../../../assets/warning.svg' +import { ReactComponent as DeprecatedAddrOn } from './deprecated_addr_on.svg' +import { ReactComponent as DeprecatedAddrOff } from './deprecated_addr_off.svg' +import { ReactComponent as Warning } from './warning.svg' import styles from './styles.module.scss' import { Cell } from '../../../models/Cell' import { useIsDeprecatedAddressesDisplayed } from '../../../services/AppSettings/hooks' diff --git a/src/assets/warning.svg b/src/pages/Transaction/TransactionCellList/warning.svg similarity index 100% rename from src/assets/warning.svg rename to src/pages/Transaction/TransactionCellList/warning.svg diff --git a/src/pages/Transaction/TransactionCellScript/index.tsx b/src/pages/Transaction/TransactionCellScript/index.tsx index 6d09df3f9..0f37d4ba5 100644 --- a/src/pages/Transaction/TransactionCellScript/index.tsx +++ b/src/pages/Transaction/TransactionCellScript/index.tsx @@ -18,12 +18,12 @@ import { TransactionDetailScriptButton, } from './styled' import SmallLoading from '../../../components/Loading/SmallLoading' -import CloseIcon from '../../../assets/modal_close.png' +import CloseIcon from './modal_close.png' import { getContractHashTag } from '../../../utils/util' import { localeNumberString } from '../../../utils/number' import HashTag from '../../../components/HashTag' import { ReactComponent as CopyIcon } from '../../../assets/copy_icon.svg' -import { ReactComponent as OuterLinkIcon } from '../../../assets/outer_link_icon.svg' +import { ReactComponent as OuterLinkIcon } from './outer_link_icon.svg' import { HelpTip } from '../../../components/HelpTip' import { useSetToast } from '../../../components/Toast' import { CellBasicInfo } from '../../../utils/transformer' diff --git a/src/assets/modal_close.png b/src/pages/Transaction/TransactionCellScript/modal_close.png similarity index 100% rename from src/assets/modal_close.png rename to src/pages/Transaction/TransactionCellScript/modal_close.png diff --git a/src/assets/outer_link_icon.svg b/src/pages/Transaction/TransactionCellScript/outer_link_icon.svg similarity index 100% rename from src/assets/outer_link_icon.svg rename to src/pages/Transaction/TransactionCellScript/outer_link_icon.svg From 401e75e0773b928233074369bc1e64dc22bb55c3 Mon Sep 17 00:00:00 2001 From: Shinya Date: Tue, 14 Nov 2023 10:30:57 +0800 Subject: [PATCH 3/6] fix: parse udt value negative issue (#147) --- src/utils/number.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/number.ts b/src/utils/number.ts index e96fc7e46..987ebc6ea 100644 --- a/src/utils/number.ts +++ b/src/utils/number.ts @@ -79,7 +79,7 @@ export const parseUDTAmount = (amount: string, decimal: string | number) => { if (decimalInt > 20) { return `${result.toFixed(20)}...` } - if (result.toString().length >= 16 || result.lt(new BigNumber(0.000001))) { + if (result.toString().length >= 16 || result.abs().lt(new BigNumber(0.000001))) { return localeNumberString(result.toFixed(decimalInt)) } return localeNumberString(result.toNumber()) From c47ae66476253ad200fc1ef2a972b7cb23be4bf9 Mon Sep 17 00:00:00 2001 From: daryl Date: Tue, 14 Nov 2023 14:32:03 +0800 Subject: [PATCH 4/6] fix(transaction): align in transaction parameter (#146) * fix(transaction): align in transaction parameter * fix(transaction): no margin left if on the mobile device --- .../TransactionComp/TransactionOverview.tsx | 15 +++++++----- .../Transaction/TransactionComp/styled.tsx | 23 ++++++++++++++++++- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/src/pages/Transaction/TransactionComp/TransactionOverview.tsx b/src/pages/Transaction/TransactionComp/TransactionOverview.tsx index 33763d582..99ea8c321 100644 --- a/src/pages/Transaction/TransactionComp/TransactionOverview.tsx +++ b/src/pages/Transaction/TransactionComp/TransactionOverview.tsx @@ -24,6 +24,9 @@ import { TransactionInfoContentPanel, TransactionOverviewPanel, TransactionInfoItemPanel, + TransactionInfoContentContainer, + TransactionInfoContentTitle, + TransactionInfoContentTag, } from './styled' import { useLatestBlockNumber } from '../../../services/ExplorerService' import { Transaction } from '../../../models/Transaction' @@ -62,7 +65,7 @@ const TransactionInfoItem = ({ tag?: ReactNode }) => ( -
+ {title ? ( <> {title} @@ -72,9 +75,9 @@ const TransactionInfoItem = ({ ) : ( '' )} -
-
-
+ + +
{linkUrl ? ( {value} @@ -84,8 +87,8 @@ const TransactionInfoItem = ({ )} {valueTooltip && }
- {tag &&
{tag}
} -
+ {tag && {tag}} + ) diff --git a/src/pages/Transaction/TransactionComp/styled.tsx b/src/pages/Transaction/TransactionComp/styled.tsx index 375958425..1253dd95c 100644 --- a/src/pages/Transaction/TransactionComp/styled.tsx +++ b/src/pages/Transaction/TransactionComp/styled.tsx @@ -104,7 +104,6 @@ export const TransactionInfoItemPanel = styled.div` } .transactionInfoValue { - margin-left: 10px; margin-top: 5px; max-height: 250px; font-size: 16px; @@ -121,6 +120,28 @@ export const TransactionInfoContentPanel = styled.div` margin: 15px 0; ` +export const TransactionInfoContentTitle = styled.div` + flex: 0 0 auto; + width: 160px; +` + +export const TransactionInfoContentContainer = styled.div` + display: flex; + + @media (max-width: 1150px) { + display: block; + } +` + +export const TransactionInfoContentTag = styled.div` + margin-left: 10px; + margin-top: 3px; + + @media (max-width: 1150px) { + margin-left: 0; + } +` + export const TransactionInfoContentItem = styled.div` display: flex; margin: 5px 0; From 8bc08538b53e76d9c54bc2fa9195b642feeb0f30 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 14 Nov 2023 15:34:26 +0900 Subject: [PATCH 5/6] chore(deps): update dependency @types/echarts to v4.9.21 (#132) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 83e787d9c..f8bda5326 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "devDependencies": { "@sentry/webpack-plugin": "2.7.1", "@testing-library/react": "12.1.5", - "@types/echarts": "4.9.19", + "@types/echarts": "4.9.21", "@types/eslint": "8.44.6", "@types/jest": "26.0.24", "@types/node": "16.18.58", diff --git a/yarn.lock b/yarn.lock index 695c394fa..cac34cd98 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2656,10 +2656,10 @@ resolved "https://registry.yarnpkg.com/@types/deep-freeze-strict/-/deep-freeze-strict-1.1.0.tgz#447a6a2576191344aa42310131dd3df5c41492c4" integrity sha512-fILflsS66kGQ4iIBzYoxuQCWK1wQdy/ooguTofUk0KSxA+G5ZzH8WdU8mf6IU+5cMBW+j9u+eh+7kv63R3O9Tw== -"@types/echarts@4.9.19": - version "4.9.19" - resolved "https://registry.yarnpkg.com/@types/echarts/-/echarts-4.9.19.tgz#6c50ccde9f4458edfc36a9c78f81511ec1853941" - integrity sha512-mtQzTmBFLQ1tyAmP667OTr7oOceyfqHRMa0tkIj9FBOKYY0ggG6OGE4AfUtDw2gOuPEEw4vzD+y0OJWKi1IZHQ== +"@types/echarts@4.9.21": + version "4.9.21" + resolved "https://registry.yarnpkg.com/@types/echarts/-/echarts-4.9.21.tgz#9626d0db7215cf51cbfe02a42c05d9d2834f243a" + integrity sha512-xUvHN2TbednNO3bybnG8GtOWU/f+/ouSlC9wO+704uiRlVtPEcLPfvfD24WqZ8uAXJ2dvlBLeB60WIlzv+Xajw== dependencies: "@types/zrender" "*" From 6fca6d39c5c29f644883ae974bcaaa240031a167 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 14 Nov 2023 15:34:40 +0900 Subject: [PATCH 6/6] chore(deps): update dependency @types/node to v16.18.61 (#133) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index f8bda5326..5cce8449d 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "@types/echarts": "4.9.21", "@types/eslint": "8.44.6", "@types/jest": "26.0.24", - "@types/node": "16.18.58", + "@types/node": "16.18.61", "@types/react": "17.0.65", "@types/react-dom": "17.0.20", "@types/react-outside-click-handler": "^1.3.0", diff --git a/yarn.lock b/yarn.lock index cac34cd98..79e1dd6f2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2842,10 +2842,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-13.11.0.tgz#390ea202539c61c8fa6ba4428b57e05bc36dc47b" integrity sha512-uM4mnmsIIPK/yeO+42F2RQhGUIs39K2RFmugcJANppXe6J1nvH87PvzPZYpza7Xhhs8Yn9yIAVdLZ84z61+0xQ== -"@types/node@16.18.58": - version "16.18.58" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.58.tgz#bf66f63983104ed57c754f4e84ccaf16f8235adb" - integrity sha512-YGncyA25/MaVtQkjWW9r0EFBukZ+JulsLcVZBlGUfIb96OBMjkoRWwQo5IEWJ8Fj06Go3GHw+bjYDitv6BaGsA== +"@types/node@16.18.61": + version "16.18.61" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.61.tgz#5ea47e3018348bf3bbbe646b396ba5e720310be1" + integrity sha512-k0N7BqGhJoJzdh6MuQg1V1ragJiXTh8VUBAZTWjJ9cUq23SG0F0xavOwZbhiP4J3y20xd6jxKx+xNUhkMAi76Q== "@types/normalize-package-data@^2.4.0": version "2.4.1"