about summary refs log tree commit diff
path: root/modules/expo-emoji-picker/android
diff options
context:
space:
mode:
Diffstat (limited to 'modules/expo-emoji-picker/android')
-rw-r--r--modules/expo-emoji-picker/android/build.gradle46
-rw-r--r--modules/expo-emoji-picker/android/src/main/AndroidManifest.xml2
-rw-r--r--modules/expo-emoji-picker/android/src/main/java/expo/community/modules/emojipicker/EmojiPickerModule.kt15
-rw-r--r--modules/expo-emoji-picker/android/src/main/java/expo/community/modules/emojipicker/EmojiPickerModuleView.kt40
4 files changed, 103 insertions, 0 deletions
diff --git a/modules/expo-emoji-picker/android/build.gradle b/modules/expo-emoji-picker/android/build.gradle
new file mode 100644
index 000000000..d34288dc7
--- /dev/null
+++ b/modules/expo-emoji-picker/android/build.gradle
@@ -0,0 +1,46 @@
+apply plugin: 'com.android.library'
+
+group = 'expo.community.modules.emojipicker'
+version = '0.1.0'
+
+def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
+apply from: expoModulesCorePlugin
+applyKotlinExpoModulesCorePlugin()
+useCoreDependencies()
+useExpoPublishing()
+
+// If you want to use the managed Android SDK versions from expo-modules-core, set this to true.
+// The Android SDK versions will be bumped from time to time in SDK releases and may introduce breaking changes in your module code.
+// Most of the time, you may like to manage the Android SDK versions yourself.
+def useManagedAndroidSdkVersions = false
+if (useManagedAndroidSdkVersions) {
+  useDefaultAndroidSdkVersions()
+} else {
+  buildscript {
+    // Simple helper that allows the root project to override versions declared by this library.
+    ext.safeExtGet = { prop, fallback ->
+      rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
+    }
+  }
+  project.android {
+    compileSdkVersion safeExtGet("compileSdkVersion", 34)
+    defaultConfig {
+      minSdkVersion safeExtGet("minSdkVersion", 21)
+      targetSdkVersion safeExtGet("targetSdkVersion", 34)
+    }
+  }
+}
+
+android {
+  namespace "expo.community.modules.emojipicker"
+  defaultConfig {
+    versionCode 1
+    versionName "0.1.0"
+  }
+  lintOptions {
+    abortOnError false
+  }
+  dependencies {
+    implementation "androidx.emoji2:emoji2-emojipicker:1.5.0"
+  }
+}
diff --git a/modules/expo-emoji-picker/android/src/main/AndroidManifest.xml b/modules/expo-emoji-picker/android/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..bdae66c8f
--- /dev/null
+++ b/modules/expo-emoji-picker/android/src/main/AndroidManifest.xml
@@ -0,0 +1,2 @@
+<manifest>
+</manifest>
diff --git a/modules/expo-emoji-picker/android/src/main/java/expo/community/modules/emojipicker/EmojiPickerModule.kt b/modules/expo-emoji-picker/android/src/main/java/expo/community/modules/emojipicker/EmojiPickerModule.kt
new file mode 100644
index 000000000..ebdc7a35e
--- /dev/null
+++ b/modules/expo-emoji-picker/android/src/main/java/expo/community/modules/emojipicker/EmojiPickerModule.kt
@@ -0,0 +1,15 @@
+package expo.community.modules.emojipicker
+
+import expo.modules.kotlin.modules.Module
+import expo.modules.kotlin.modules.ModuleDefinition
+import java.net.URL
+
+class EmojiPickerModule : Module() {
+    override fun definition() = ModuleDefinition {
+        Name("EmojiPicker")
+
+        View(EmojiPickerModuleView::class) {
+            Events("onEmojiSelected")
+        }
+    }
+}
diff --git a/modules/expo-emoji-picker/android/src/main/java/expo/community/modules/emojipicker/EmojiPickerModuleView.kt b/modules/expo-emoji-picker/android/src/main/java/expo/community/modules/emojipicker/EmojiPickerModuleView.kt
new file mode 100644
index 000000000..a6e5a066f
--- /dev/null
+++ b/modules/expo-emoji-picker/android/src/main/java/expo/community/modules/emojipicker/EmojiPickerModuleView.kt
@@ -0,0 +1,40 @@
+package expo.community.modules.emojipicker
+
+import android.annotation.SuppressLint
+import android.content.Context
+import android.content.res.Configuration
+import androidx.emoji2.emojipicker.EmojiPickerView
+import expo.modules.kotlin.AppContext
+import expo.modules.kotlin.viewevent.EventDispatcher
+import expo.modules.kotlin.views.ExpoView
+
+
+@SuppressLint("ViewConstructor")
+class EmojiPickerModuleView(context: Context, appContext: AppContext) :
+    ExpoView(context, appContext) {
+    private var emojiView: EmojiPickerView = EmojiPickerView(context)
+    private val onEmojiSelected by EventDispatcher()
+
+    init {
+        setupView()
+    }
+
+    private fun setupView() {
+        addView(
+            emojiView, LayoutParams(
+                LayoutParams.MATCH_PARENT,
+                LayoutParams.MATCH_PARENT
+            )
+        )
+
+        emojiView.setOnEmojiPickedListener { emoji ->
+            onEmojiSelected(mapOf("emoji" to emoji.emoji))
+        }
+    }
+
+    override fun onConfigurationChanged(newConfig: Configuration?) {
+        super.onConfigurationChanged(newConfig)
+        removeView(emojiView)
+        setupView()
+    }
+}