From 7c5a9ab40df646d4b345eb152f2b447b4293d28b Mon Sep 17 00:00:00 2001 From: DS Boyce <260543580+ds-boyce@users.noreply.github.com> Date: Fri, 22 May 2026 01:54:54 -0700 Subject: [PATCH] Fix issue where suggested language prompt could not be dismissed (#10581) --- .../select-language/SuggestedLanguage.tsx | 38 +++++++------------ 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/src/view/com/composer/select-language/SuggestedLanguage.tsx b/src/view/com/composer/select-language/SuggestedLanguage.tsx index b8e067ffe2..ab731cda22 100644 --- a/src/view/com/composer/select-language/SuggestedLanguage.tsx +++ b/src/view/com/composer/select-language/SuggestedLanguage.tsx @@ -142,12 +142,11 @@ export function SuggestedLanguage({ // clear setSuggLang(undefined) } - const onDecline = () => { - if (suggLang) { - declinedSuggLangsRef.current.push(suggLang) - // clear - setSuggLang(undefined) - } + const onDecline = (language: string) => { + declinedSuggLangsRef.current.push(language) + // clear + setSuggLang(undefined) + setHasInteracted(true) } /** @@ -248,18 +247,10 @@ export function SuggestedLanguage({ } }, [text, hasInteracted, detectLanguage, ax]) - /* - * This is intentionally computed based on a ref. Since we set and clear - * `suggLang` this derivation is safe, but be aware of it - * when making changes. - */ - const hasDeclined = suggLang - ? // eslint-disable-next-line react-hooks/refs - declinedSuggLangsRef.current.includes(suggLang) - : false - /* * We've detected a language, and the user hasn't already selected it. + * Note: suggLang is only set if it's not in declinedSuggLangsRef (checked + * in detectLanguage), so we don't need to filter it here. */ const hasLanguageSuggestion = suggLang && !currentLanguages.includes(suggLang) @@ -272,30 +263,29 @@ export function SuggestedLanguage({ .filter(Boolean) .map(lang => parseLanguageString(lang)?.language) .filter(Boolean) as string[] + const [replyToLanguage] = replyToLanguages const hasSuggestedReplyLanguage = !hasInteracted && !suggLang && - replyToLanguages.length && - !replyToLanguages.some(l => currentLanguages.includes(l)) + replyToLanguage && + !currentLanguages.includes(replyToLanguage) - if (hasDeclined) { - return null - } else if (hasLanguageSuggestion) { + if (hasLanguageSuggestion) { return ( onDecline(suggLang)} /> ) } else if (hasSuggestedReplyLanguage) { return ( onDecline(replyToLanguage)} /> ) } else {