diff --git a/app/soapbox/entity-store/entities.ts b/app/soapbox/entity-store/entities.ts index 30220eed6..44f2db3c9 100644 --- a/app/soapbox/entity-store/entities.ts +++ b/app/soapbox/entity-store/entities.ts @@ -1,4 +1,5 @@ export enum Entities { + ACCOUNTS = 'Accounts', GROUPS = 'Groups', GROUP_RELATIONSHIPS = 'GroupRelationships', GROUP_MEMBERSHIPS = 'GroupMemberships', diff --git a/app/soapbox/features/group/group-membership-requests.tsx b/app/soapbox/features/group/group-membership-requests.tsx index fd33f3947..dc0704054 100644 --- a/app/soapbox/features/group/group-membership-requests.tsx +++ b/app/soapbox/features/group/group-membership-requests.tsx @@ -6,6 +6,7 @@ import Account from 'soapbox/components/account'; import ScrollableList from 'soapbox/components/scrollable-list'; import { Button, Column, HStack, Spinner } from 'soapbox/components/ui'; import { useAppDispatch, useAppSelector, useGroup } from 'soapbox/hooks'; +import { useGroupMembershipRequests } from 'soapbox/hooks/api/groups/useGroupMembershipRequests'; import { makeGetAccount } from 'soapbox/selectors'; import toast from 'soapbox/toast'; @@ -80,7 +81,8 @@ const GroupMembershipRequests: React.FC = ({ params }) const id = params?.id; const { group } = useGroup(id); - const accountIds = useAppSelector((state) => state.user_lists.membership_requests.get(id)?.items); + const { entities } = useGroupMembershipRequests(id); + const accountIds = entities.map(e => e.id); useEffect(() => { dispatch(fetchGroupMembershipRequests(id)); diff --git a/app/soapbox/hooks/api/groups/useGroupMembershipRequests.ts b/app/soapbox/hooks/api/groups/useGroupMembershipRequests.ts new file mode 100644 index 000000000..78793e0d0 --- /dev/null +++ b/app/soapbox/hooks/api/groups/useGroupMembershipRequests.ts @@ -0,0 +1,13 @@ +import { Entities } from 'soapbox/entity-store/entities'; +import { useEntities } from 'soapbox/entity-store/hooks'; +import { accountSchema } from 'soapbox/schemas'; + +function useGroupMembershipRequests(groupId: string) { + return useEntities( + [Entities.ACCOUNTS, 'membership_requests', groupId], + `/api/v1/groups/${groupId}/membership_requests`, + { schema: accountSchema }, + ); +} + +export { useGroupMembershipRequests }; \ No newline at end of file