about summary refs log tree commit diff
path: root/modules/expo-bluesky-translate/src
diff options
context:
space:
mode:
Diffstat (limited to 'modules/expo-bluesky-translate/src')
-rw-r--r--modules/expo-bluesky-translate/src/ExpoBlueskyTranslate.types.ts3
-rw-r--r--modules/expo-bluesky-translate/src/ExpoBlueskyTranslateView.ios.tsx48
-rw-r--r--modules/expo-bluesky-translate/src/ExpoBlueskyTranslateView.tsx13
3 files changed, 64 insertions, 0 deletions
diff --git a/modules/expo-bluesky-translate/src/ExpoBlueskyTranslate.types.ts b/modules/expo-bluesky-translate/src/ExpoBlueskyTranslate.types.ts
new file mode 100644
index 000000000..a01d4d479
--- /dev/null
+++ b/modules/expo-bluesky-translate/src/ExpoBlueskyTranslate.types.ts
@@ -0,0 +1,3 @@
+export type ExpoBlueskyTranslateModule = {
+  presentAsync: (text: string) => Promise<void>
+}
diff --git a/modules/expo-bluesky-translate/src/ExpoBlueskyTranslateView.ios.tsx b/modules/expo-bluesky-translate/src/ExpoBlueskyTranslateView.ios.tsx
new file mode 100644
index 000000000..daddfa028
--- /dev/null
+++ b/modules/expo-bluesky-translate/src/ExpoBlueskyTranslateView.ios.tsx
@@ -0,0 +1,48 @@
+import React from 'react'
+import {Platform} from 'react-native'
+import {requireNativeModule, requireNativeViewManager} from 'expo-modules-core'
+
+import {ExpoBlueskyTranslateModule} from './ExpoBlueskyTranslate.types'
+
+export const NativeTranslationModule =
+  requireNativeModule<ExpoBlueskyTranslateModule>('ExpoBlueskyTranslate')
+
+const NativeView: React.ComponentType = requireNativeViewManager(
+  'ExpoBlueskyTranslate',
+)
+
+export function NativeTranslationView() {
+  return <NativeView />
+}
+
+export const isAvailable = Number(Platform.Version) >= 17.4
+
+// https://en.wikipedia.org/wiki/Translate_(Apple)#Languages
+const SUPPORTED_LANGUAGES = [
+  'ar',
+  'zh',
+  'zh',
+  'nl',
+  'en',
+  'en',
+  'fr',
+  'de',
+  'id',
+  'it',
+  'ja',
+  'ko',
+  'pl',
+  'pt',
+  'ru',
+  'es',
+  'th',
+  'tr',
+  'uk',
+  'vi',
+]
+
+export function isLanguageSupported(lang?: string) {
+  // If the language is not provided, we assume it is supported
+  if (!lang) return true
+  return SUPPORTED_LANGUAGES.includes(lang)
+}
diff --git a/modules/expo-bluesky-translate/src/ExpoBlueskyTranslateView.tsx b/modules/expo-bluesky-translate/src/ExpoBlueskyTranslateView.tsx
new file mode 100644
index 000000000..16ff9d600
--- /dev/null
+++ b/modules/expo-bluesky-translate/src/ExpoBlueskyTranslateView.tsx
@@ -0,0 +1,13 @@
+export const NativeTranslationModule = {
+  presentAsync: async (_: string) => {},
+}
+
+export function NativeTranslationView() {
+  return null
+}
+
+export const isAvailable = false
+
+export function isLanguageSupported(_lang?: string) {
+  return false
+}