From 43a06d1b78be922009372751e1f47045d42b35bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Espino=20Garc=C3=ADa?= Date: Tue, 22 Oct 2024 15:49:50 +0200 Subject: [PATCH] Fix dependencies and callbacks on update user group modal (#28867) --- .../update_user_group_modal.tsx | 68 +++++++++++-------- 1 file changed, 39 insertions(+), 29 deletions(-) diff --git a/webapp/channels/src/components/update_user_group_modal/update_user_group_modal.tsx b/webapp/channels/src/components/update_user_group_modal/update_user_group_modal.tsx index e19168d70e..00c8b46509 100644 --- a/webapp/channels/src/components/update_user_group_modal/update_user_group_modal.tsx +++ b/webapp/channels/src/components/update_user_group_modal/update_user_group_modal.tsx @@ -31,10 +31,16 @@ export type Props = { }; } -const UpdateUserGroupModal = (props: Props) => { +const UpdateUserGroupModal = ({ + actions, + backButtonCallback, + group, + groupId, + onExited, +}: Props) => { const [hasUpdated, setHasUpdated] = useState(false); - const [name, setName] = useState(props.group.display_name); - const [mention, setMention] = useState(`@${props.group.name}`); + const [name, setName] = useState(group.display_name); + const [mention, setMention] = useState(`@${group.name}`); const [saving, setSaving] = useState(false); const [show, setShow] = useState(true); const [mentionInputErrorText, setMentionInputErrorText] = useState(''); @@ -52,17 +58,6 @@ const UpdateUserGroupModal = (props: Props) => { return name.length > 0 && mention.length > 0 && hasUpdated && !saving; }, [name, mention, hasUpdated, saving]); - const handleKeyDown = useCallback((e: KeyboardEvent) => { - if (Keyboard.isKeyPressed(e, Constants.KeyCodes.ENTER) && isSaveEnabled()) { - patchGroup(); - } - }, [name, mention, hasUpdated, saving]); - - useEffect(() => { - document.addEventListener('keydown', handleKeyDown); - return () => document.removeEventListener('keydown', handleKeyDown); - }, [handleKeyDown]); - const updateNameState = useCallback((e: React.ChangeEvent) => { const value = e.target.value; let newMention = mention; @@ -75,7 +70,7 @@ const UpdateUserGroupModal = (props: Props) => { setName(value); setHasUpdated(true); setMention(newMention); - }, [mention]); + }, [mention, mentionUpdatedManually]); const updateMentionState = useCallback((e: React.ChangeEvent) => { const value = e.target.value; @@ -85,9 +80,9 @@ const UpdateUserGroupModal = (props: Props) => { }, []); const goBack = useCallback(() => { - props.backButtonCallback(); - props.onExited(); - }, [props.backButtonCallback, props.onExited]); + backButtonCallback(); + onExited(); + }, [backButtonCallback, onExited]); const patchGroup = useCallback(async () => { setSaving(true); @@ -127,7 +122,7 @@ const UpdateUserGroupModal = (props: Props) => { name: newMention, display_name: displayName, }; - const data = await props.actions.patchGroup(props.groupId, group); + const data = await actions.patchGroup(groupId, group); if (data?.error) { if (data.error?.server_error_id === 'app.custom_group.unique_name') { setMentionInputErrorText(formatMessage({id: 'user_groups_modal.mentionNotUnique', defaultMessage: 'Mention needs to be unique.'})); @@ -142,14 +137,35 @@ const UpdateUserGroupModal = (props: Props) => { } else { goBack(); } - }, [name, mention, goBack, props.groupId, props.actions.patchGroup]); + }, [mention, name, actions, groupId, formatMessage, goBack]); + + const handleKeyDown = useCallback((e: KeyboardEvent) => { + if (Keyboard.isKeyPressed(e, Constants.KeyCodes.ENTER) && isSaveEnabled()) { + patchGroup(); + } + }, [isSaveEnabled, patchGroup]); + + const onSaveClick = useCallback>((e) => { + e.preventDefault(); + patchGroup(); + }, [patchGroup]); + + const onBackClick = useCallback>((e) => { + e.preventDefault(); + goBack(); + }, [goBack]); + + useEffect(() => { + document.addEventListener('keydown', handleKeyDown); + return () => document.removeEventListener('keydown', handleKeyDown); + }, [handleKeyDown]); return ( { }