Prevent over-eager translate button (#10007)
This commit is contained in:
@@ -5,9 +5,13 @@ import {Trans, useLingui} from '@lingui/react/macro'
|
|||||||
|
|
||||||
import {HITSLOP_30} from '#/lib/constants'
|
import {HITSLOP_30} from '#/lib/constants'
|
||||||
import {useGoogleTranslate} from '#/lib/hooks/useGoogleTranslate'
|
import {useGoogleTranslate} from '#/lib/hooks/useGoogleTranslate'
|
||||||
import {guessLanguage, useTranslate} from '#/lib/translation'
|
import {useTranslate} from '#/lib/translation'
|
||||||
import {type TranslationFunction} from '#/lib/translation'
|
import {type TranslationFunction} from '#/lib/translation'
|
||||||
import {codeToLanguageName, languageName} from '#/locale/helpers'
|
import {
|
||||||
|
codeToLanguageName,
|
||||||
|
isPostInLanguage,
|
||||||
|
languageName,
|
||||||
|
} from '#/locale/helpers'
|
||||||
import {LANGUAGES} from '#/locale/languages'
|
import {LANGUAGES} from '#/locale/languages'
|
||||||
import {useLanguagePrefs} from '#/state/preferences'
|
import {useLanguagePrefs} from '#/state/preferences'
|
||||||
import {atoms as a, native, useTheme, web} from '#/alf'
|
import {atoms as a, native, useTheme, web} from '#/alf'
|
||||||
@@ -36,8 +40,10 @@ export function TranslatedPost({
|
|||||||
key: post.uri,
|
key: post.uri,
|
||||||
})
|
})
|
||||||
|
|
||||||
const postLanguage = useMemo(() => guessLanguage(postText), [postText])
|
const needsTranslation = useMemo(() => {
|
||||||
const needsTranslation = postLanguage !== langPrefs.primaryLanguage
|
if (hideTranslateLink) return false
|
||||||
|
return !isPostInLanguage(post, [langPrefs.primaryLanguage])
|
||||||
|
}, [hideTranslateLink, post, langPrefs.primaryLanguage])
|
||||||
|
|
||||||
switch (translationState.status) {
|
switch (translationState.status) {
|
||||||
case 'loading':
|
case 'loading':
|
||||||
@@ -49,7 +55,7 @@ export function TranslatedPost({
|
|||||||
translate={translate}
|
translate={translate}
|
||||||
postText={postText}
|
postText={postText}
|
||||||
sourceLanguage={
|
sourceLanguage={
|
||||||
translationState.sourceLanguage ?? postLanguage ?? null // Fallback primarily for iOS
|
translationState.sourceLanguage ?? null // Fallback primarily for iOS
|
||||||
}
|
}
|
||||||
translatedText={translationState.translatedText}
|
translatedText={translationState.translatedText}
|
||||||
/>
|
/>
|
||||||
@@ -65,12 +71,10 @@ export function TranslatedPost({
|
|||||||
)
|
)
|
||||||
default:
|
default:
|
||||||
return (
|
return (
|
||||||
!hideTranslateLink &&
|
|
||||||
needsTranslation && (
|
needsTranslation && (
|
||||||
<TranslationLink
|
<TranslationLink
|
||||||
postText={postText}
|
postText={postText}
|
||||||
primaryLanguage={langPrefs.primaryLanguage}
|
primaryLanguage={langPrefs.primaryLanguage}
|
||||||
sourceLanguage={postLanguage}
|
|
||||||
translate={translate}
|
translate={translate}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
@@ -96,12 +100,10 @@ function TranslationLoading() {
|
|||||||
function TranslationLink({
|
function TranslationLink({
|
||||||
postText,
|
postText,
|
||||||
primaryLanguage,
|
primaryLanguage,
|
||||||
sourceLanguage,
|
|
||||||
translate,
|
translate,
|
||||||
}: {
|
}: {
|
||||||
postText: string
|
postText: string
|
||||||
primaryLanguage: string
|
primaryLanguage: string
|
||||||
sourceLanguage: string | null
|
|
||||||
translate: TranslationFunction
|
translate: TranslationFunction
|
||||||
}) {
|
}) {
|
||||||
const t = useTheme()
|
const t = useTheme()
|
||||||
@@ -115,11 +117,11 @@ function TranslationLink({
|
|||||||
})
|
})
|
||||||
|
|
||||||
ax.metric('translate', {
|
ax.metric('translate', {
|
||||||
sourceLanguages: sourceLanguage ? [sourceLanguage] : [],
|
sourceLanguages: [], // todo: get from post maybe?
|
||||||
targetLanguage: primaryLanguage,
|
targetLanguage: primaryLanguage,
|
||||||
textLength: postText.length,
|
textLength: postText.length,
|
||||||
})
|
})
|
||||||
}, [ax, postText, primaryLanguage, translate, sourceLanguage])
|
}, [ax, postText, primaryLanguage, translate])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View
|
<View
|
||||||
|
|||||||
Reference in New Issue
Block a user