GroupMembershipRequests: invalidate query upon authorize/reject

This commit is contained in:
Alex Gleason 2023-03-22 18:48:24 -05:00
parent cb8363d179
commit f016ac1e6d
No known key found for this signature in database
GPG Key ID: 7211D1F99744FBB7
2 changed files with 17 additions and 21 deletions

View File

@ -1,4 +1,4 @@
import React, { useMemo } from 'react'; import React from 'react';
import { FormattedMessage, defineMessages, useIntl } from 'react-intl'; import { FormattedMessage, defineMessages, useIntl } from 'react-intl';
import Account from 'soapbox/components/account'; import Account from 'soapbox/components/account';
@ -57,15 +57,7 @@ const GroupMembershipRequests: React.FC<IGroupMembershipRequests> = ({ params })
const { group } = useGroup(id); const { group } = useGroup(id);
const { const { accounts, authorize, reject, isLoading } = useGroupMembershipRequests(id);
accounts: entities,
isLoading,
authorize,
reject,
isFetching,
} = useGroupMembershipRequests(id);
const accounts = useMemo(() => entities, [isFetching]);
if (!group || !group.relationship || isLoading) { if (!group || !group.relationship || isLoading) {
return ( return (
@ -96,7 +88,7 @@ const GroupMembershipRequests: React.FC<IGroupMembershipRequests> = ({ params })
} }
return ( return (
<Column label={intl.formatMessage(messages.heading)} backHref={`/groups/${id}/manage`}> <Column label={intl.formatMessage(messages.heading)}>
<ScrollableList <ScrollableList
scrollKey='group_membership_requests' scrollKey='group_membership_requests'
emptyMessage={<FormattedMessage id='empty_column.group_membership_requests' defaultMessage='There are no pending membership requests for this group.' />} emptyMessage={<FormattedMessage id='empty_column.group_membership_requests' defaultMessage='There are no pending membership requests for this group.' />}

View File

@ -1,5 +1,5 @@
import { Entities } from 'soapbox/entity-store/entities'; import { Entities } from 'soapbox/entity-store/entities';
import { useDismissEntity, useEntities } from 'soapbox/entity-store/hooks'; import { useEntities } from 'soapbox/entity-store/hooks';
import { useApi } from 'soapbox/hooks/useApi'; import { useApi } from 'soapbox/hooks/useApi';
import { accountSchema } from 'soapbox/schemas'; import { accountSchema } from 'soapbox/schemas';
@ -9,20 +9,24 @@ function useGroupMembershipRequests(groupId: string) {
const api = useApi(); const api = useApi();
const path: ExpandedEntitiesPath = [Entities.ACCOUNTS, 'membership_requests', groupId]; const path: ExpandedEntitiesPath = [Entities.ACCOUNTS, 'membership_requests', groupId];
const authorize = useDismissEntity(path, (accountId) => { const { entities, invalidate, ...rest } = useEntities(
return api.post(`/api/v1/groups/${groupId}/membership_requests/${accountId}/authorize`);
});
const reject = useDismissEntity(path, (accountId) => {
return api.post(`/api/v1/groups/${groupId}/membership_requests/${accountId}/reject`);
});
const { entities, ...rest } = useEntities(
path, path,
`/api/v1/groups/${groupId}/membership_requests`, `/api/v1/groups/${groupId}/membership_requests`,
{ schema: accountSchema }, { schema: accountSchema },
); );
function authorize(accountId: string) {
return api
.post(`/api/v1/groups/${groupId}/membership_requests/${accountId}/authorize`)
.then(invalidate);
}
function reject(accountId: string) {
return api
.post(`/api/v1/groups/${groupId}/membership_requests/${accountId}/reject`)
.then(invalidate);
}
return { return {
accounts: entities, accounts: entities,
authorize, authorize,