Reorganize GroupMembershipRequests a little

This commit is contained in:
Alex Gleason 2023-03-20 19:32:24 -05:00
parent d4e9fddd02
commit 5774516ea0
No known key found for this signature in database
GPG Key ID: 7211D1F99744FBB7
1 changed files with 21 additions and 22 deletions

View File

@ -17,34 +17,21 @@ type RouteParams = { id: string };
const messages = defineMessages({ const messages = defineMessages({
heading: { id: 'column.group_pending_requests', defaultMessage: 'Pending requests' }, heading: { id: 'column.group_pending_requests', defaultMessage: 'Pending requests' },
authorize: { id: 'group.group_mod_authorize', defaultMessage: 'Accept' },
authorized: { id: 'group.group_mod_authorize.success', defaultMessage: 'Accepted @{name} to group' },
authorizeFail: { id: 'group.group_mod_authorize.fail', defaultMessage: 'Failed to approve @{name}' }, authorizeFail: { id: 'group.group_mod_authorize.fail', defaultMessage: 'Failed to approve @{name}' },
reject: { id: 'group.group_mod_reject', defaultMessage: 'Reject' },
rejected: { id: 'group.group_mod_reject.success', defaultMessage: 'Rejected @{name} from group' },
rejectFail: { id: 'group.group_mod_reject.fail', defaultMessage: 'Failed to reject @{name}' }, rejectFail: { id: 'group.group_mod_reject.fail', defaultMessage: 'Failed to reject @{name}' },
}); });
interface IMembershipRequest { interface IMembershipRequest {
account: AccountEntity account: AccountEntity
onAuthorize(accountId: string): Promise<unknown> onAuthorize(account: AccountEntity): Promise<unknown>
onReject(accountId: string): Promise<unknown> onReject(account: AccountEntity): Promise<unknown>
} }
const MembershipRequest: React.FC<IMembershipRequest> = ({ account, onAuthorize, onReject }) => { const MembershipRequest: React.FC<IMembershipRequest> = ({ account, onAuthorize, onReject }) => {
const intl = useIntl();
if (!account) return null; if (!account) return null;
function handleAuthorize() { const handleAuthorize = () => onAuthorize(account);
return onAuthorize(account.id) const handleReject = () => onReject(account);
.catch(() => toast.error(intl.formatMessage(messages.authorizeFail, { name: account.username })));
}
function handleReject() {
return onReject(account.id)
.catch(() => toast.error(intl.formatMessage(messages.rejectFail, { name: account.username })));
}
return ( return (
<HStack space={1} alignItems='center' justifyContent='between' className='p-2.5'> <HStack space={1} alignItems='center' justifyContent='between' className='p-2.5'>
@ -65,9 +52,8 @@ interface IGroupMembershipRequests {
} }
const GroupMembershipRequests: React.FC<IGroupMembershipRequests> = ({ params }) => { const GroupMembershipRequests: React.FC<IGroupMembershipRequests> = ({ params }) => {
const intl = useIntl();
const id = params?.id; const id = params?.id;
const intl = useIntl();
const { group } = useGroup(id); const { group } = useGroup(id);
const { accounts, isLoading, authorize, reject } = useGroupMembershipRequests(id); const { accounts, isLoading, authorize, reject } = useGroupMembershipRequests(id);
@ -81,11 +67,24 @@ const GroupMembershipRequests: React.FC<IGroupMembershipRequests> = ({ params })
} }
if (!group.relationship.role || !['owner', 'admin', 'moderator'].includes(group.relationship.role)) { if (!group.relationship.role || !['owner', 'admin', 'moderator'].includes(group.relationship.role)) {
return (<ColumnForbidden />); return <ColumnForbidden />;
} }
const handleAuthorize = (accountId: string) => authorize(accountId); async function handleAuthorize(account: AccountEntity) {
const handleReject = (accountId: string) => reject(accountId); try {
await authorize(account.id);
} catch (_e) {
toast.error(intl.formatMessage(messages.authorizeFail, { name: account.username }));
}
}
async function handleReject(account: AccountEntity) {
try {
await reject(account.id);
} catch (_e) {
toast.error(intl.formatMessage(messages.rejectFail, { name: account.username }));
}
}
return ( return (
<Column label={intl.formatMessage(messages.heading)} backHref={`/groups/${id}/manage`}> <Column label={intl.formatMessage(messages.heading)} backHref={`/groups/${id}/manage`}>