From bfb8351fc3575ec9f86ced4521c4d15916a07aff Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Wed, 30 Oct 2024 23:56:30 -0500 Subject: [PATCH] Fix admin account filtering Fixes https://gitlab.com/soapbox-pub/soapbox/-/issues/1769 --- src/api/hooks/admin/useAdminAccounts.ts | 30 ++++++++----------- .../components/latest-accounts-panel.tsx | 9 +++++- src/features/admin/user-index.tsx | 9 +++++- 3 files changed, 29 insertions(+), 19 deletions(-) diff --git a/src/api/hooks/admin/useAdminAccounts.ts b/src/api/hooks/admin/useAdminAccounts.ts index ebd1a7004..585a16710 100644 --- a/src/api/hooks/admin/useAdminAccounts.ts +++ b/src/api/hooks/admin/useAdminAccounts.ts @@ -3,29 +3,25 @@ import { useEntities } from 'soapbox/entity-store/hooks'; import { useApi } from 'soapbox/hooks'; import { adminAccountSchema } from 'soapbox/schemas/admin-account'; -const allFilters = new Set([ - 'local' as const, - 'remote' as const, - 'active' as const, - 'pending' as const, - 'disabled' as const, - 'silenced' as const, - 'suspended' as const, - 'sensitized' as const, -]); +interface MastodonAdminFilters { + local?: boolean; + remote?: boolean; + active?: boolean; + pending?: boolean; + disabled?: boolean; + silenced?: boolean; + suspended?: boolean; + sensitized?: boolean; +} /** https://docs.joinmastodon.org/methods/admin/accounts/#v1 */ -export function useAdminAccounts(filters: typeof allFilters, limit?: number) { +export function useAdminAccounts(filters: MastodonAdminFilters, limit?: number) { const api = useApi(); const searchParams = new URLSearchParams(); - for (const filter of allFilters) { - if (filters.has(filter)) { - searchParams.append(filter, 'true'); - } else { - searchParams.append(filter, 'false'); - } + for (const [name, value] of Object.entries(filters)) { + searchParams.append(name, value.toString()); } if (typeof limit === 'number') { diff --git a/src/features/admin/components/latest-accounts-panel.tsx b/src/features/admin/components/latest-accounts-panel.tsx index 1d9004407..adb16495e 100644 --- a/src/features/admin/components/latest-accounts-panel.tsx +++ b/src/features/admin/components/latest-accounts-panel.tsx @@ -18,7 +18,14 @@ const LatestAccountsPanel: React.FC = ({ limit = 5 }) => { const intl = useIntl(); const history = useHistory(); - const { accounts } = useAdminAccounts(new Set(['local', 'active']), limit); + const { accounts } = useAdminAccounts({ + local: true, + active: true, + pending: false, + disabled: false, + silenced: false, + suspended: false, + }, limit); const handleAction = () => { history.push('/soapbox/admin/users'); diff --git a/src/features/admin/user-index.tsx b/src/features/admin/user-index.tsx index bb12d1b49..a80f3298d 100644 --- a/src/features/admin/user-index.tsx +++ b/src/features/admin/user-index.tsx @@ -15,7 +15,14 @@ const messages = defineMessages({ const UserIndex: React.FC = () => { const intl = useIntl(); - const { accounts, isLoading, hasNextPage, fetchNextPage } = useAdminAccounts(new Set(['local'])); + const { accounts, isLoading, hasNextPage, fetchNextPage } = useAdminAccounts({ + local: true, + active: true, + pending: false, + disabled: false, + silenced: false, + suspended: false, + }); const handleLoadMore = () => { if (!isLoading) {