Use entities with Group Members

This commit is contained in:
Chewbacca
2023-03-13 09:47:23 -04:00
parent 11d06e6b6e
commit 8a36561ec8
12 changed files with 432 additions and 264 deletions

View File

@@ -0,0 +1,36 @@
import { Entities } from 'soapbox/entity-store/entities';
import { useEntities } from 'soapbox/entity-store/hooks';
import { normalizeAccount } from 'soapbox/normalizers';
import { Account } from 'soapbox/types/entities';
import { BaseGroupRoles, TruthSocialGroupRoles } from '../useGroupRoles';
interface GroupMember {
id: string
role: BaseGroupRoles | TruthSocialGroupRoles
account: Account | any
}
const normalizeGroupMember = (groupMember: GroupMember): GroupMember => {
return {
...groupMember,
account: normalizeAccount(groupMember.account),
};
};
const parseGroupMember = (entity: unknown) => entity ? normalizeGroupMember(entity as GroupMember) : undefined;
function useGroupMembers(groupId: string, role: string) {
const { entities, ...result } = useEntities<GroupMember>(
[Entities.GROUP_MEMBERSHIPS, `${groupId}:${role}`],
`/api/v1/groups/${groupId}/memberships?role=${role}&limit=1`,
{ parser: parseGroupMember },
);
return {
...result,
groupMembers: entities,
};
}
export { useGroupMembers };