Fix issue where suggested language prompt could not be dismissed (#10581)
This commit is contained in:
@@ -142,12 +142,11 @@ export function SuggestedLanguage({
|
|||||||
// clear
|
// clear
|
||||||
setSuggLang(undefined)
|
setSuggLang(undefined)
|
||||||
}
|
}
|
||||||
const onDecline = () => {
|
const onDecline = (language: string) => {
|
||||||
if (suggLang) {
|
declinedSuggLangsRef.current.push(language)
|
||||||
declinedSuggLangsRef.current.push(suggLang)
|
// clear
|
||||||
// clear
|
setSuggLang(undefined)
|
||||||
setSuggLang(undefined)
|
setHasInteracted(true)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -248,18 +247,10 @@ export function SuggestedLanguage({
|
|||||||
}
|
}
|
||||||
}, [text, hasInteracted, detectLanguage, ax])
|
}, [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.
|
* 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)
|
const hasLanguageSuggestion = suggLang && !currentLanguages.includes(suggLang)
|
||||||
|
|
||||||
@@ -272,30 +263,29 @@ export function SuggestedLanguage({
|
|||||||
.filter(Boolean)
|
.filter(Boolean)
|
||||||
.map(lang => parseLanguageString(lang)?.language)
|
.map(lang => parseLanguageString(lang)?.language)
|
||||||
.filter(Boolean) as string[]
|
.filter(Boolean) as string[]
|
||||||
|
const [replyToLanguage] = replyToLanguages
|
||||||
const hasSuggestedReplyLanguage =
|
const hasSuggestedReplyLanguage =
|
||||||
!hasInteracted &&
|
!hasInteracted &&
|
||||||
!suggLang &&
|
!suggLang &&
|
||||||
replyToLanguages.length &&
|
replyToLanguage &&
|
||||||
!replyToLanguages.some(l => currentLanguages.includes(l))
|
!currentLanguages.includes(replyToLanguage)
|
||||||
|
|
||||||
if (hasDeclined) {
|
if (hasLanguageSuggestion) {
|
||||||
return null
|
|
||||||
} else if (hasLanguageSuggestion) {
|
|
||||||
return (
|
return (
|
||||||
<GuessedLanguage
|
<GuessedLanguage
|
||||||
language={suggLang}
|
language={suggLang}
|
||||||
metadata={{currentTargetLanguages: currentLanguages, rawText: text}}
|
metadata={{currentTargetLanguages: currentLanguages, rawText: text}}
|
||||||
onAccept={onAccept}
|
onAccept={onAccept}
|
||||||
onDecline={onDecline}
|
onDecline={() => onDecline(suggLang)}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
} else if (hasSuggestedReplyLanguage) {
|
} else if (hasSuggestedReplyLanguage) {
|
||||||
return (
|
return (
|
||||||
<ReplyLanguageNudge
|
<ReplyLanguageNudge
|
||||||
language={replyToLanguages[0]}
|
language={replyToLanguage}
|
||||||
metadata={{currentTargetLanguages: currentLanguages}}
|
metadata={{currentTargetLanguages: currentLanguages}}
|
||||||
onAccept={onAccept}
|
onAccept={onAccept}
|
||||||
onDecline={onDecline}
|
onDecline={() => onDecline(replyToLanguage)}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user