From 69f679e05bbb58d4dc6569e161ad0996be7e6e54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?KMY=EF=BC=88=E9=9B=AA=E3=81=82=E3=81=99=E3=81=8B=EF=BC=89?= Date: Fri, 29 Nov 2024 13:25:51 +0900 Subject: [PATCH] =?UTF-8?q?Fix:=20=E3=82=A2=E3=83=B3=E3=83=86=E3=83=8A?= =?UTF-8?q?=E7=B5=9E=E3=82=8A=E8=BE=BC=E3=81=BF=E6=9D=A1=E4=BB=B6=E8=A8=AD?= =?UTF-8?q?=E5=AE=9A=E7=94=BB=E9=9D=A2=E3=81=AE=E3=82=BF=E3=83=96=E3=81=8C?= =?UTF-8?q?=E5=88=87=E3=82=8A=E6=9B=BF=E3=81=88=E3=82=89=E3=82=8C=E3=81=AA?= =?UTF-8?q?=E3=81=84=E5=95=8F=E9=A1=8C=20(#917)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mastodon/features/antennas/filtering.tsx | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/app/javascript/mastodon/features/antennas/filtering.tsx b/app/javascript/mastodon/features/antennas/filtering.tsx index a0e7ed4382..932bacc7df 100644 --- a/app/javascript/mastodon/features/antennas/filtering.tsx +++ b/app/javascript/mastodon/features/antennas/filtering.tsx @@ -186,13 +186,15 @@ const TextList: React.FC<{ }; const RadioPanel: React.FC<{ + antennaId: string; items: { title: string; value: string }[]; valueLengths: number[]; alertMessage: React.ReactElement; onChange: (value: string) => void; -}> = ({ items, valueLengths, alertMessage, onChange }) => { +}> = ({ antennaId, items, valueLengths, alertMessage, onChange }) => { const [error, setError] = useState(false); const [value, setValue] = useState(''); + const [lastAntennaId, setLastAntennaId] = useState(''); useEffect(() => { if (valueLengths.length >= 2) { @@ -203,7 +205,11 @@ const RadioPanel: React.FC<{ }, [valueLengths]); useEffect(() => { - if (items.length > 0) { + if ( + items.length > 0 && + valueLengths.length === items.length && + antennaId !== lastAntennaId + ) { for (let i = 0; i < valueLengths.length; i++) { const length = valueLengths[i] ?? 0; const item = items[i] ?? { value: '' }; @@ -215,7 +221,7 @@ const RadioPanel: React.FC<{ } setValue(items[0]?.value ?? ''); } - }, [items, valueLengths, setValue, onChange]); + }, [antennaId, lastAntennaId, items, valueLengths, setValue, onChange]); const handleChange = useCallback( ({ currentTarget }: React.MouseEvent) => { @@ -223,9 +229,12 @@ const RadioPanel: React.FC<{ if (value !== selected) { onChange(selected); setValue(selected); + + // Set the flag for the first manual tab change. + setLastAntennaId(antennaId); } }, - [value, setValue, onChange], + [value, setValue, onChange, setLastAntennaId, antennaId], ); return ( @@ -585,6 +594,7 @@ const AntennaSetting: React.FC<{