From d3fad05a09fc28210709bc6444afcb129013b707 Mon Sep 17 00:00:00 2001 From: fmtabbara Date: Sun, 26 Jan 2025 22:43:59 +0000 Subject: [PATCH] use sort by favorite --- .../src/components/nodeTable/NodeTable.tsx | 44 ++++++++----------- 1 file changed, 19 insertions(+), 25 deletions(-) diff --git a/explorer-nextjs/src/components/nodeTable/NodeTable.tsx b/explorer-nextjs/src/components/nodeTable/NodeTable.tsx index a4f48bc1f2..0661295b3f 100644 --- a/explorer-nextjs/src/components/nodeTable/NodeTable.tsx +++ b/explorer-nextjs/src/components/nodeTable/NodeTable.tsx @@ -3,7 +3,7 @@ import { COSMOS_KIT_USE_CHAIN } from "@/config"; import { useNymClient } from "@/hooks/useNymClient"; import { useChain } from "@cosmos-kit/react"; -import { Box, Button, Stack, Switch, Tooltip, Typography } from "@mui/material"; +import { Box, Button, Stack, Tooltip, Typography } from "@mui/material"; import { useLocalStorage } from "@uidotdev/usehooks"; import { type MRT_ColumnDef, @@ -11,7 +11,7 @@ import { useMaterialReactTable, } from "material-react-table"; import { useRouter } from "next/navigation"; -import { useCallback, useEffect, useMemo, useRef, useState } from "react"; +import { useCallback, useMemo, useState } from "react"; import CountryFlag from "../countryFlag/CountryFlag"; import { Favorite } from "../favorite/Favorite"; import Loading from "../loading"; @@ -47,21 +47,6 @@ const NodeTable = ({ nodes }: { nodes: MappedNymNodes }) => { }>(); const [favorites] = useLocalStorage("nym-node-favorites", []); const { isWalletConnected } = useChain(COSMOS_KIT_USE_CHAIN); - const [filteredNodes, setFilteredNodes] = useState(nodes); - - const handleToggleFavorites = useCallback( - (showOnlyFavorites: boolean) => { - if (showOnlyFavorites) { - setFilteredNodes( - nodes.filter((node) => favorites.includes(node.owner)), - ); - } else { - setFilteredNodes(nodes); - } - setInfoModalProps({ open: false }); - }, - [favorites, nodes], - ); const handleStakeOnNode = useCallback( async ({ nodeId, amount }: { nodeId: number; amount: string }) => { @@ -149,7 +134,7 @@ const NodeTable = ({ nodes }: { nodes: MappedNymNodes }) => { id: "node", header: "", Header: Node, - accessorKey: "bondInformation.node.identity_key", + accessorKey: "identity_key", Cell: ({ row }) => ( {row.original.nodeId} @@ -239,20 +224,30 @@ const NodeTable = ({ nodes }: { nodes: MappedNymNodes }) => { Header: ( Favorite - handleToggleFavorites(checked)} /> ), - enableSorting: false, + sortingFn: (a, b) => { + const aIsFavorite = favorites.includes(a.original.owner); + const bIsFavorite = favorites.includes(b.original.owner); + + if (aIsFavorite && !bIsFavorite) { + return -1; + } + if (!aIsFavorite && bIsFavorite) { + return 1; + } + return 0; + }, Cell: ({ row }) => , }, ], - [isWalletConnected, handleOnSelectStake, handleToggleFavorites], + [isWalletConnected, handleOnSelectStake, favorites], ); const table = useMaterialReactTable({ columns, - data: filteredNodes, - enableRowSelection: false, //enable some features - enableColumnOrdering: false, //enable a feature for all columns + data: nodes, + enableRowSelection: false, + enableColumnOrdering: false, enableColumnActions: false, enableFullScreenToggle: false, enableHiding: false, @@ -285,7 +280,6 @@ const NodeTable = ({ nodes }: { nodes: MappedNymNodes }) => { bgcolor: "background.paper", }, }, - muiTableBodyCellProps: { sx: { border: "none",