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 Account from 'soapbox/components/account';
@ -57,15 +57,7 @@ const GroupMembershipRequests: React.FC<IGroupMembershipRequests> = ({ params })
const { group } = useGroup(id);
const {
accounts: entities,
isLoading,
authorize,
reject,
isFetching,
} = useGroupMembershipRequests(id);
const accounts = useMemo(() => entities, [isFetching]);
const { accounts, authorize, reject, isLoading } = useGroupMembershipRequests(id);
if (!group || !group.relationship || isLoading) {
return (
@ -96,7 +88,7 @@ const GroupMembershipRequests: React.FC<IGroupMembershipRequests> = ({ params })
}
return (
<Column label={intl.formatMessage(messages.heading)} backHref={`/groups/${id}/manage`}>
<Column label={intl.formatMessage(messages.heading)}>
<ScrollableList
scrollKey='group_membership_requests'
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 { useDismissEntity, useEntities } from 'soapbox/entity-store/hooks';
import { useEntities } from 'soapbox/entity-store/hooks';
import { useApi } from 'soapbox/hooks/useApi';
import { accountSchema } from 'soapbox/schemas';
@ -9,20 +9,24 @@ function useGroupMembershipRequests(groupId: string) {
const api = useApi();
const path: ExpandedEntitiesPath = [Entities.ACCOUNTS, 'membership_requests', groupId];
const authorize = useDismissEntity(path, (accountId) => {
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(
const { entities, invalidate, ...rest } = useEntities(
path,
`/api/v1/groups/${groupId}/membership_requests`,
{ 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 {
accounts: entities,
authorize,