diff options
Diffstat (limited to 'modules/expo-emoji-picker/android')
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() + } +} |