diff --git a/components/home/searches/utils/blockSearchHelpers.ts b/components/home/searches/utils/blockSearchHelpers.ts index 379ad0b3732de1a4cc534f91a23fe5782e13b440..a3ad14f135b8c5bc040e67a2c397b2c23ca2420b 100644 --- a/components/home/searches/utils/blockSearchHelpers.ts +++ b/components/home/searches/utils/blockSearchHelpers.ts @@ -1,6 +1,6 @@ -import { convertIdsToBooleanArray, getPageUrlParams } from "@/lib/utils"; import Explorer from "@/types/Explorer"; -import { dataToURL } from "@/utils/URLutils"; +import { convertIdsToBooleanArray } from "@/lib/utils"; +import { setParamIfPositive } from "./globalSearchHelpers"; export function startBlockSearch( blockSearchProps: Explorer.BlockSearchProps, @@ -13,43 +13,36 @@ export function startBlockSearch( export function getBlockPageLink( blockSearchProps: Explorer.BlockSearchProps | undefined, - operationsTypes: any + operationsTypes: Explorer.ExtendedOperationTypePattern[] | undefined ): (blockNumber: number) => string { return (blockNumber: number) => { if (!blockSearchProps) return "#"; - const urlParams: Explorer.UrlParam[] = [ - { - paramName: "accountName", - paramValue: dataToURL(blockSearchProps.accountName), - }, - { - paramName: "keyContent", - paramValue: dataToURL(blockSearchProps.deepProps.content), - }, - { - paramName: "setOfKeys", - paramValue: dataToURL(blockSearchProps.deepProps.keys), - }, - ]; - - if (blockSearchProps.operationTypes) { - const booleanTypesArray = convertIdsToBooleanArray( - blockSearchProps.operationTypes - ); - let isFull = !!blockSearchProps.operationTypes; + const { accountName, operationTypes } = blockSearchProps; + + const searchParams = new URLSearchParams(); + + setParamIfPositive(searchParams, "accountName", accountName); + + if (operationTypes) { + const booleanTypesArray = convertIdsToBooleanArray(operationTypes); + let isFull = !!operationTypes; + operationsTypes?.forEach((operationType: any) => { - if ( - !blockSearchProps.operationTypes?.includes(operationType.op_type_id) - ) + if (!operationTypes.includes(operationType.op_type_id)) { isFull = false; + } }); - urlParams.push({ - paramName: "filters", - paramValue: dataToURL(!isFull ? booleanTypesArray : []), - }); + + const filtersValue = !isFull ? booleanTypesArray : []; + setParamIfPositive(searchParams, "filters", filtersValue); } - return `/block/${blockNumber}${getPageUrlParams(urlParams)}`; + const queryString = searchParams.toString(); + const urlPath = `/block/${blockNumber}${ + queryString ? `?${queryString}` : "" + }`; + + return urlPath; }; }