From a9eba81c4a9e20419570c478aa7fbd84b5d9b17e Mon Sep 17 00:00:00 2001 From: DS Boyce <260543580+ds-boyce@users.noreply.github.com> Date: Tue, 3 Mar 2026 11:18:19 -0800 Subject: [PATCH] Rename translation hooks --- src/components/dms/MessageContextMenu.tsx | 8 ++++---- .../{useTranslate.ts => useGoogleTranslate.ts} | 5 ++--- src/lib/translation/index.tsx | 16 +++++----------- src/lib/translation/index.web.tsx | 14 ++++---------- 4 files changed, 15 insertions(+), 28 deletions(-) rename src/lib/hooks/{useTranslate.ts => useGoogleTranslate.ts} (93%) diff --git a/src/components/dms/MessageContextMenu.tsx b/src/components/dms/MessageContextMenu.tsx index 8bc7e018f1..f85442c5a3 100644 --- a/src/components/dms/MessageContextMenu.tsx +++ b/src/components/dms/MessageContextMenu.tsx @@ -5,7 +5,7 @@ import {type ChatBskyConvoDefs, RichText} from '@atproto/api' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' -import {useTranslate} from '#/lib/hooks/useTranslate' +import {useGoogleTranslate} from '#/lib/hooks/useGoogleTranslate' import {richTextToString} from '#/lib/strings/rich-text-helpers' import {useConvoActive} from '#/state/messages/convo' import {useLanguagePrefs} from '#/state/preferences' @@ -41,7 +41,7 @@ export let MessageContextMenu = ({ const reportControl = usePromptControl() const blockOrDeleteControl = usePromptControl() const langPrefs = useLanguagePrefs() - const translate = useTranslate() + const translate = useGoogleTranslate() const isFromSelf = message.sender?.did === currentAccount?.did @@ -54,12 +54,12 @@ export let MessageContextMenu = ({ true, ) - Clipboard.setStringAsync(str) + void Clipboard.setStringAsync(str) Toast.show(_(msg`Copied to clipboard`), 'clipboard-check') }, [_, message.text, message.facets]) const onPressTranslateMessage = useCallback(() => { - translate(message.text, langPrefs.primaryLanguage) + void translate(message.text, langPrefs.primaryLanguage) ax.metric('translate', { sourceLanguages: [], diff --git a/src/lib/hooks/useTranslate.ts b/src/lib/hooks/useGoogleTranslate.ts similarity index 93% rename from src/lib/hooks/useTranslate.ts rename to src/lib/hooks/useGoogleTranslate.ts index 233a2ae8b2..70f1637bd8 100644 --- a/src/lib/hooks/useTranslate.ts +++ b/src/lib/hooks/useGoogleTranslate.ts @@ -6,10 +6,9 @@ import {getTranslatorLink} from '#/locale/helpers' import {IS_ANDROID} from '#/env' /** - * Will always link out to Google Translate. If inline translation is desired, - * use `useTranslateOnDevice` + * @deprecated Will always link out to Google Translate. Prefer `useTranslate`. */ -export function useTranslate() { +export function useGoogleTranslate() { const openLink = useOpenLink() return useCallback( diff --git a/src/lib/translation/index.tsx b/src/lib/translation/index.tsx index 98a3f3e93c..acf21d588f 100644 --- a/src/lib/translation/index.tsx +++ b/src/lib/translation/index.tsx @@ -4,8 +4,7 @@ import {getLocales} from 'expo-localization' import {type TranslationTaskResult} from '@bsky.app/expo-translate-text/build/ExpoTranslateText.types' import {useFocusEffect} from '@react-navigation/native' -import {useOpenLink} from '#/lib/hooks/useOpenLink' -import {getTranslatorLink} from '#/locale/helpers' +import {useGoogleTranslate} from '#/lib/hooks/useGoogleTranslate' import {logger} from '#/logger' import {useLanguagePrefs} from '#/state/preferences' import {useAnalytics} from '#/analytics' @@ -111,9 +110,9 @@ export function Provider({children}: React.PropsWithChildren) { Record >({}) const [refCounts, setRefCounts] = useState>({}) - const openLink = useOpenLink() const ax = useAnalytics() const {primaryLanguage} = useLanguagePrefs() + const googleTranslate = useGoogleTranslate() useEffect(() => { setTranslationState(prev => { @@ -171,11 +170,6 @@ export function Provider({children}: React.PropsWithChildren) { sourceLangCode?: string, options?: Options, ) => { - const translateUrl = getTranslatorLink( - text, - targetLangCode, - sourceLangCode, - ) if (options?.googleTranslate) { ax.metric('translate:result', { method: 'google-translate', @@ -183,7 +177,7 @@ export function Provider({children}: React.PropsWithChildren) { sourceLanguage: sourceLangCode ?? null, targetLanguage: targetLangCode, }) - await openLink(translateUrl) + await googleTranslate(text, targetLangCode, sourceLangCode) return } LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) @@ -228,10 +222,10 @@ export function Provider({children}: React.PropsWithChildren) { ...prev, [key]: {status: 'idle'}, })) - await openLink(translateUrl) + await googleTranslate(text, targetLangCode, sourceLangCode) } }, - [ax, openLink, primaryLanguage], + [ax, googleTranslate, primaryLanguage], ) const ctx = useMemo( diff --git a/src/lib/translation/index.web.tsx b/src/lib/translation/index.web.tsx index e5090972e2..d6d8cbb43f 100644 --- a/src/lib/translation/index.web.tsx +++ b/src/lib/translation/index.web.tsx @@ -1,7 +1,6 @@ import {useCallback, useContext, useMemo} from 'react' -import {useOpenLink} from '#/lib/hooks/useOpenLink' -import {getTranslatorLink} from '#/locale/helpers' +import {useGoogleTranslate} from '#/lib/hooks/useGoogleTranslate' import {useLanguagePrefs} from '#/state/preferences' import {useAnalytics} from '#/analytics' import {Context} from './context' @@ -29,9 +28,9 @@ export function useTranslateOnDevice() { } export function Provider({children}: React.PropsWithChildren) { - const openLink = useOpenLink() const ax = useAnalytics() const {primaryLanguage} = useLanguagePrefs() + const googleTranslate = useGoogleTranslate() const translate = useCallback( async ( @@ -47,14 +46,9 @@ export function Provider({children}: React.PropsWithChildren) { sourceLanguage: sourceLangCode ?? null, targetLanguage: targetLangCode, }) - const translateUrl = getTranslatorLink( - text, - targetLangCode, - sourceLangCode, - ) - await openLink(translateUrl) + await googleTranslate(text, targetLangCode, sourceLangCode) }, - [ax, openLink, primaryLanguage], + [ax, googleTranslate, primaryLanguage], ) const ctx = useMemo(