From b6aa3e3bafe8a608eca4153c6288e83b87e34181 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Thu, 13 Jun 2024 19:08:25 -0500 Subject: [PATCH 1/2] EditIdentity: improve feedback to user upon submitting form --- src/features/edit-identity/index.tsx | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/features/edit-identity/index.tsx b/src/features/edit-identity/index.tsx index 0b96ed3e3..d4800202c 100644 --- a/src/features/edit-identity/index.tsx +++ b/src/features/edit-identity/index.tsx @@ -6,6 +6,7 @@ import { patchMe } from 'soapbox/actions/me'; import List, { ListItem } from 'soapbox/components/list'; import { Button, CardHeader, CardTitle, Column, Emoji, Form, HStack, Icon, Input, Textarea, Tooltip } from 'soapbox/components/ui'; import { useApi, useAppDispatch, useInstance, useOwnAccount } from 'soapbox/hooks'; +import { queryClient } from 'soapbox/queries/client'; import { adminAccountSchema } from 'soapbox/schemas/admin-account'; import toast from 'soapbox/toast'; @@ -19,6 +20,7 @@ const messages = defineMessages({ success: { id: 'edit_profile.success', defaultMessage: 'Your profile has been successfully saved!' }, error: { id: 'edit_profile.error', defaultMessage: 'Profile update failed' }, placeholder: { id: 'edit_identity.reason_placeholder', defaultMessage: 'Why do you want this name?' }, + requested: { id: 'edit_identity.requested', defaultMessage: 'Name requested' }, }); /** EditIdentity component. */ @@ -27,7 +29,7 @@ const EditIdentity: React.FC = () => { const instance = useInstance(); const dispatch = useAppDispatch(); const { account } = useOwnAccount(); - const { mutate } = useRequestName(); + const { mutate, isPending } = useRequestName(); const { data: approvedNames } = useNames(); const { data: pendingNames } = usePendingNames(); @@ -49,24 +51,34 @@ const EditIdentity: React.FC = () => { const submit = () => { const name = `${username}@${instance.domain}`; - mutate({ name, reason }); + + mutate({ name, reason }, { + onSuccess() { + toast.success(intl.formatMessage(messages.requested)); + queryClient.invalidateQueries({ + queryKey: ['names', 'pending'], + }); + setUsername(''); + }, + }); }; return (
- setUsername(e.target.value)} /> + setUsername(e.target.value)} disabled={isPending} />