diff --git a/src/helpers/cleanUrlFilters.ts b/src/helpers/cleanUrlFilters.ts index 61105c570..de8f5da2a 100644 --- a/src/helpers/cleanUrlFilters.ts +++ b/src/helpers/cleanUrlFilters.ts @@ -1,11 +1,18 @@ -export const cleanUrlFilters = (filters?: Record) => { +export const cleanUrlFilters = ( + filters?: Record, + options?: { cleanBoolean?: boolean } +) => { if (!filters) { return {}; } + const { cleanBoolean } = options ?? {}; + return Object.entries(filters).reduce( (a: Record, [k, v]) => - v === undefined || String(v) === '' ? a : ((a[k] = v), a), + v === undefined || String(v) === '' || (cleanBoolean && v === false) + ? a + : ((a[k] = v), a), {} ); }; diff --git a/src/helpers/getValue/getUrlParam.ts b/src/helpers/getValue/getUrlParam.ts index 89ca80a22..cb446f9e9 100644 --- a/src/helpers/getValue/getUrlParam.ts +++ b/src/helpers/getValue/getUrlParam.ts @@ -1,13 +1,23 @@ import { stringIsInteger } from 'lib'; +interface UrlParamProps { + checkIsInteger?: boolean; + checkIsBoolean?: boolean; +} + export const getUrlParam = (searchParams: URLSearchParams) => - (value: string, checkIsInteger?: boolean) => { + (value: string, options?: UrlParamProps) => { + const { checkIsInteger, checkIsBoolean } = options ?? {}; const param = searchParams.get(value) !== null ? String(searchParams.get(value)) : ''; - if (checkIsInteger) { - return stringIsInteger(param) ? parseInt(param) : undefined; + if (checkIsInteger && stringIsInteger(param)) { + return parseInt(param); + } + + if (param && checkIsBoolean) { + return param === 'true'; } return param; diff --git a/src/hooks/urlFilters/useGetBlockFilters.ts b/src/hooks/urlFilters/useGetBlockFilters.ts index e56598ac0..315f20731 100644 --- a/src/hooks/urlFilters/useGetBlockFilters.ts +++ b/src/hooks/urlFilters/useGetBlockFilters.ts @@ -8,7 +8,7 @@ export const useGetBlockFilters = () => { const getParam = getUrlParam(searchParams); const filters = { - shard: getParam(BlockFiltersEnum.shard, true) + shard: getParam(BlockFiltersEnum.shard, { checkIsInteger: true }) }; return cleanUrlFilters(filters); diff --git a/src/hooks/urlFilters/useGetEventFilters.ts b/src/hooks/urlFilters/useGetEventFilters.ts index 252ea1005..2aa40077a 100644 --- a/src/hooks/urlFilters/useGetEventFilters.ts +++ b/src/hooks/urlFilters/useGetEventFilters.ts @@ -11,9 +11,9 @@ export const useGetEventFilters = () => { address: getParam('address'), identifier: getParam('identifier'), txHash: getParam('txHash'), - shard: getParam('shard', true), - before: getParam(TransactionFiltersEnum.before, true), - after: getParam(TransactionFiltersEnum.after, true) + shard: getParam('shard', { checkIsInteger: true }), + before: getParam(TransactionFiltersEnum.before, { checkIsInteger: true }), + after: getParam(TransactionFiltersEnum.after, { checkIsInteger: true }) }; return cleanUrlFilters(filters); diff --git a/src/hooks/urlFilters/useGetNodeFilters.ts b/src/hooks/urlFilters/useGetNodeFilters.ts index 28021f45c..7d9c7993a 100644 --- a/src/hooks/urlFilters/useGetNodeFilters.ts +++ b/src/hooks/urlFilters/useGetNodeFilters.ts @@ -11,13 +11,21 @@ export const useGetNodeFilters = () => { status: getParam(NodeFiltersEnum.status), type: getParam(NodeFiltersEnum.type), identity: getParam(NodeFiltersEnum.identity), - shard: getParam(NodeFiltersEnum.shard, true), - online: getParam(NodeFiltersEnum.online), + shard: getParam(NodeFiltersEnum.shard, { checkIsInteger: true }), issues: getParam(NodeFiltersEnum.issues), fullHistory: getParam(NodeFiltersEnum.fullHistory), - isQualified: getParam(NodeFiltersEnum.isQualified), - isAuctioned: getParam(NodeFiltersEnum.isAuctioned), - isAuctionDangerZone: getParam(NodeFiltersEnum.isAuctionDangerZone) + online: getParam(NodeFiltersEnum.online, { + checkIsBoolean: true + }), + isQualified: getParam(NodeFiltersEnum.isQualified, { + checkIsBoolean: true + }), + isAuctioned: getParam(NodeFiltersEnum.isAuctioned, { + checkIsBoolean: true + }), + isAuctionDangerZone: getParam(NodeFiltersEnum.isAuctionDangerZone, { + checkIsBoolean: true + }) }; return cleanUrlFilters(filters); diff --git a/src/hooks/urlFilters/useGetTransactionFilters.ts b/src/hooks/urlFilters/useGetTransactionFilters.ts index 0bdfd17e0..239743cde 100644 --- a/src/hooks/urlFilters/useGetTransactionFilters.ts +++ b/src/hooks/urlFilters/useGetTransactionFilters.ts @@ -17,20 +17,20 @@ export const useGetTransactionFilters = () => { : ''; const senderShard = - getParam(TransactionFiltersEnum.senderShard, true) ?? - getParam('sendershard', true); + getParam(TransactionFiltersEnum.senderShard, { checkIsInteger: true }) ?? + getParam('sendershard', { checkIsInteger: true }); const receiverShard = - getParam(TransactionFiltersEnum.receiverShard, true) ?? - getParam('receivershard', true); + getParam(TransactionFiltersEnum.receiverShard, { checkIsInteger: true }) ?? + getParam('receivershard', { checkIsInteger: true }); const filters = { senderShard, receiverShard, sender: getParam(TransactionFiltersEnum.sender), receiver: getParam(TransactionFiltersEnum.receiver), - before: getParam(TransactionFiltersEnum.before, true), - after: getParam(TransactionFiltersEnum.after, true), + before: getParam(TransactionFiltersEnum.before, { checkIsInteger: true }), + after: getParam(TransactionFiltersEnum.after, { checkIsInteger: true }), status: checkStatus(status), miniBlockHash: getParam(TransactionFiltersEnum.miniBlockHash), method: getParam(TransactionFiltersEnum.method), diff --git a/src/hooks/urlFilters/useGetTransactionInPoolFilters.ts b/src/hooks/urlFilters/useGetTransactionInPoolFilters.ts index d48b35b68..0622f79c3 100644 --- a/src/hooks/urlFilters/useGetTransactionInPoolFilters.ts +++ b/src/hooks/urlFilters/useGetTransactionInPoolFilters.ts @@ -13,12 +13,12 @@ export const useGetTransactionInPoolFilters = () => { const getParam = getUrlParam(searchParams); const senderShard = - getParam(TransactionFiltersEnum.senderShard, true) ?? - getParam('sendershard', true); + getParam(TransactionFiltersEnum.senderShard, { checkIsInteger: true }) ?? + getParam('sendershard', { checkIsInteger: true }); const receiverShard = - getParam(TransactionFiltersEnum.receiverShard, true) ?? - getParam('receivershard', true); + getParam(TransactionFiltersEnum.receiverShard, { checkIsInteger: true }) ?? + getParam('receivershard', { checkIsInteger: true }); const type = checkType( searchParams.get('type') ? String(searchParams.get('type')) : ''