diff options
author | Samuel Newman <mozzius@protonmail.com> | 2024-05-29 07:08:46 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-28 21:08:46 -0700 |
commit | b59c8e22af0d92988d2145ea28299230f3b71180 (patch) | |
tree | 3bfc697a5e709a29ee4f71fc538e9104855f9d07 /src/view/com/util/forms/PostDropdownBtn.tsx | |
parent | a60f9933d8c5734391b9f5b14c1bdb0d17ac0468 (diff) | |
download | voidsky-b59c8e22af0d92988d2145ea28299230f3b71180.tar.zst |
Native translation expo module (#4098)
* translation expo module * add `onClose` and `onReplacementAction` * rm onReplacementAction * make all props published * make translation api available globally w/o wrapper (#4110) * conditionally import the translation module * only use native translation if language is probably supported * open native translation via dropdown menu --------- Co-authored-by: Hailey <me@haileyok.com> Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
Diffstat (limited to 'src/view/com/util/forms/PostDropdownBtn.tsx')
-rw-r--r-- | src/view/com/util/forms/PostDropdownBtn.tsx | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/view/com/util/forms/PostDropdownBtn.tsx b/src/view/com/util/forms/PostDropdownBtn.tsx index 7a62ce7cb..50677ee8a 100644 --- a/src/view/com/util/forms/PostDropdownBtn.tsx +++ b/src/view/com/util/forms/PostDropdownBtn.tsx @@ -50,6 +50,11 @@ import {Warning_Stroke2_Corner0_Rounded as Warning} from '#/components/icons/War import * as Menu from '#/components/Menu' import * as Prompt from '#/components/Prompt' import {ReportDialog, useReportDialogControl} from '#/components/ReportDialog' +import { + isAvailable as isNativeTranslationAvailable, + isLanguageSupported, + NativeTranslationModule, +} from '../../../../../modules/expo-bluesky-translate' import {EventStopper} from '../EventStopper' import * as Toast from '../Toast' @@ -172,9 +177,17 @@ let PostDropdownBtn = ({ Toast.show(_(msg`Copied to clipboard`)) }, [_, richText]) - const onOpenTranslate = React.useCallback(() => { - openLink(translatorUrl) - }, [openLink, translatorUrl]) + const onPressTranslate = React.useCallback(() => { + if ( + isNativeTranslationAvailable && + isLanguageSupported(record?.langs?.at(0)) + ) { + const text = richTextToString(richText, true) + NativeTranslationModule.presentAsync(text) + } else { + openLink(translatorUrl) + } + }, [openLink, record?.langs, richText, translatorUrl]) const onHidePost = React.useCallback(() => { hidePost({uri: postUri}) @@ -246,7 +259,7 @@ let PostDropdownBtn = ({ <Menu.Item testID="postDropdownTranslateBtn" label={_(msg`Translate`)} - onPress={onOpenTranslate}> + onPress={onPressTranslate}> <Menu.ItemText>{_(msg`Translate`)}</Menu.ItemText> <Menu.ItemIcon icon={Translate} position="right" /> </Menu.Item> |