Use entities with Group Members
This commit is contained in:
36
app/soapbox/hooks/api/useGroupMembers.ts
Normal file
36
app/soapbox/hooks/api/useGroupMembers.ts
Normal 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 };
|
||||
Reference in New Issue
Block a user