diff options
Diffstat (limited to 'src/view/com/posts/FeedItem.tsx')
-rw-r--r-- | src/view/com/posts/FeedItem.tsx | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/src/view/com/posts/FeedItem.tsx b/src/view/com/posts/FeedItem.tsx index d83e64073..7354c8a67 100644 --- a/src/view/com/posts/FeedItem.tsx +++ b/src/view/com/posts/FeedItem.tsx @@ -27,6 +27,7 @@ import {useStores} from 'state/index' import {usePalette} from 'lib/hooks/usePalette' import {useAnalytics} from 'lib/analytics/analytics' import {sanitizeDisplayName} from 'lib/strings/display-names' +import {getTranslatorLink, isPostInLanguage} from '../../../locale/helpers' export const FeedItem = observer(function ({ item, @@ -62,6 +63,12 @@ export const FeedItem = observer(function ({ const urip = new AtUri(record.reply.parent?.uri || record.reply.root.uri) return urip.hostname }, [record?.reply]) + const primaryLanguage = store.preferences.contentLanguages[0] || 'en' + const translatorUrl = getTranslatorLink(primaryLanguage, record?.text || '') + const needsTranslation = useMemo( + () => !isPostInLanguage(item.post, store.preferences.contentLanguages), + [item.post, store.preferences.contentLanguages], + ) const onPressReply = React.useCallback(() => { track('FeedItem:PostReply') @@ -98,17 +105,9 @@ export const FeedItem = observer(function ({ Toast.show('Copied to clipboard') }, [record]) - const primaryLanguage = store.preferences.contentLanguages[0] || 'en' - const onOpenTranslate = React.useCallback(() => { - Linking.openURL( - encodeURI( - `https://translate.google.com/?sl=auto&tl=${primaryLanguage}&text=${ - record?.text || '' - }`, - ), - ) - }, [record, primaryLanguage]) + Linking.openURL(translatorUrl) + }, [translatorUrl]) const onToggleThreadMute = React.useCallback(async () => { track('FeedItem:ThreadMute') @@ -301,12 +300,22 @@ export const FeedItem = observer(function ({ type="post-text" richText={item.richText} lineHeight={1.3} + style={s.flex1} /> </View> ) : undefined} <ImageHider moderation={item.moderation.list} style={styles.embed}> <PostEmbeds embed={item.post.embed} style={styles.embed} /> </ImageHider> + {needsTranslation && ( + <View style={[pal.borderDark, styles.translateLink]}> + <Link href={translatorUrl} title="Translate"> + <Text type="sm" style={pal.link}> + Translate this post + </Text> + </Link> + </View> + )} </ContentHider> <PostCtrls style={styles.ctrls} @@ -402,6 +411,9 @@ const styles = StyleSheet.create({ embed: { marginBottom: 6, }, + translateLink: { + marginBottom: 6, + }, ctrls: { marginTop: 4, }, |