diff --git a/js/apps/admin-ui/src/realm-settings/keys/KeysListTab.tsx b/js/apps/admin-ui/src/realm-settings/keys/KeysListTab.tsx index 6ed910d7ecc..2c621b80175 100644 --- a/js/apps/admin-ui/src/realm-settings/keys/KeysListTab.tsx +++ b/js/apps/admin-ui/src/realm-settings/keys/KeysListTab.tsx @@ -14,7 +14,7 @@ import { } from "@patternfly/react-core"; import { FilterIcon } from "@patternfly/react-icons"; import { cellWidth } from "@patternfly/react-table"; -import { useState } from "react"; +import { useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import { useNavigate } from "react-router-dom"; import { useAdminClient } from "../../admin-client"; @@ -30,6 +30,7 @@ import { toKeysTab } from "../routes/KeysTab"; import "../realm-settings-section.css"; const FILTER_OPTIONS = ["ACTIVE", "PASSIVE", "DISABLED"] as const; + type FilterType = (typeof FILTER_OPTIONS)[number]; type KeyData = KeyMetadataRepresentation & { @@ -94,8 +95,14 @@ export const KeysListTab = ({ realmComponents }: KeysListTabProps) => { const { realm } = useRealm(); - const [keyData, setKeyData] = useState(); - const [filteredKeyData, setFilteredKeyData] = useState(); + const [keyData, setKeyData] = useState([]); + + const [filter, setFilter] = useState(FILTER_OPTIONS[0]); + + const filteredKeyData = useMemo( + () => keyData?.filter(({ status }) => status === filter), + [keyData, filter], + ); useFetch( async () => { @@ -139,19 +146,11 @@ export const KeysListTab = ({ realmComponents }: KeysListTabProps) => { - setFilteredKeyData( - filterType !== FILTER_OPTIONS[0] - ? keyData!.filter(({ status }) => status === filterType) - : undefined, - ) - } - /> + setFilter(filterType)} /> } columns={[ {