diff --git a/app/soapbox/api/hooks/groups/useGroupRelationships.ts b/app/soapbox/api/hooks/groups/useGroupRelationships.ts index c4106adda..902d0473f 100644 --- a/app/soapbox/api/hooks/groups/useGroupRelationships.ts +++ b/app/soapbox/api/hooks/groups/useGroupRelationships.ts @@ -1,27 +1,25 @@ import { Entities } from 'soapbox/entity-store/entities'; -import { useEntities } from 'soapbox/entity-store/hooks'; -import { useApi } from 'soapbox/hooks'; +import { useBatchedEntities } from 'soapbox/entity-store/hooks/useBatchedEntities'; +import { useApi, useLoggedIn } from 'soapbox/hooks'; import { type GroupRelationship, groupRelationshipSchema } from 'soapbox/schemas'; -function useGroupRelationships(groupIds: string[]) { +function useGroupRelationships(listKey: string[], ids: string[]) { const api = useApi(); - const q = groupIds.map(id => `id[]=${id}`).join('&'); + const { isLoggedIn } = useLoggedIn(); - const { entities, ...result } = useEntities( - [Entities.GROUP_RELATIONSHIPS, ...groupIds], - () => api.get(`/api/v1/groups/relationships?${q}`), - { schema: groupRelationshipSchema, enabled: groupIds.length > 0 }, + function fetchGroupRelationships(ids: string[]) { + const q = ids.map((id) => `id[]=${id}`).join('&'); + return api.get(`/api/v1/groups/relationships?${q}`); + } + + const { entityMap: relationships, ...result } = useBatchedEntities( + [Entities.RELATIONSHIPS, ...listKey], + ids, + fetchGroupRelationships, + { schema: groupRelationshipSchema, enabled: isLoggedIn }, ); - const relationships = entities.reduce>((map, relationship) => { - map[relationship.id] = relationship; - return map; - }, {}); - - return { - ...result, - relationships, - }; + return { relationships, ...result }; } export { useGroupRelationships }; \ No newline at end of file