From 4e916ae42696e8cc4c5b5316cc4bac29f89e17c3 Mon Sep 17 00:00:00 2001 From: Connor Prussin Date: Mon, 30 Sep 2024 14:21:50 -0700 Subject: [PATCH] feat(staking): add page size selector --- .../OracleIntegrityStaking/index.tsx | 100 ++++++++---------- apps/staking/src/components/Select/index.tsx | 66 ++++++++++++ 2 files changed, 109 insertions(+), 57 deletions(-) create mode 100644 apps/staking/src/components/Select/index.tsx diff --git a/apps/staking/src/components/OracleIntegrityStaking/index.tsx b/apps/staking/src/components/OracleIntegrityStaking/index.tsx index 38d625e17..a1bd0d307 100644 --- a/apps/staking/src/components/OracleIntegrityStaking/index.tsx +++ b/apps/staking/src/components/OracleIntegrityStaking/index.tsx @@ -32,10 +32,6 @@ import { Form, Switch, MenuTrigger, - Select, - Popover, - ListBox, - ListBoxItem, } from "react-aria-components"; import { type States, StateType as ApiStateType } from "../../hooks/use-api"; @@ -50,6 +46,7 @@ import { ModalDialog } from "../ModalDialog"; import { OracleIntegrityStakingGuide } from "../OracleIntegrityStakingGuide"; import { ProgramSection } from "../ProgramSection"; import { PublisherFaq } from "../PublisherFaq"; +import { Select } from "../Select"; import { SparkChart } from "../SparkChart"; import { StakingTimeline } from "../StakingTimeline"; import { Styled } from "../Styled"; @@ -57,8 +54,6 @@ import { Tokens } from "../Tokens"; import { AmountType, TransferButton } from "../TransferButton"; import { TruncatedKey } from "../TruncatedKey"; -const PAGE_SIZE = 10; - type Props = { api: States[ApiStateType.Loaded] | States[ApiStateType.LoadedNoStakeAccount]; currentEpoch: bigint; @@ -582,6 +577,9 @@ const PublisherList = ({ totalStaked, yieldRate, }: PublisherListProps) => { + const [pageSize, setPageSize] = useState<(typeof PageSize)[number]>( + PageSize[2], + ); const scrollTarget = useRef(null); const [search, setSearch] = useState(""); const [yoursFirst, setYoursFirst] = useState(true); @@ -615,10 +613,10 @@ const PublisherList = ({ const paginatedPublishers = useMemo( () => filteredSortedPublishers.slice( - (currentPage - 1) * PAGE_SIZE, - currentPage * PAGE_SIZE, + (currentPage - 1) * pageSize, + currentPage * pageSize, ), - [filteredSortedPublishers, currentPage], + [filteredSortedPublishers, currentPage, pageSize], ); const updatePage = useCallback( @@ -656,8 +654,8 @@ const PublisherList = ({ ); const numPages = useMemo( - () => Math.floor(filteredSortedPublishers.length / PAGE_SIZE), - [filteredSortedPublishers], + () => Math.floor(filteredSortedPublishers.length / pageSize), + [filteredSortedPublishers, pageSize], ); return ( @@ -687,48 +685,26 @@ const PublisherList = ({ + show={getSortName} + /> 1 && ( - +
+