about summary refs log tree commit diff
path: root/modules/expo-emoji-picker/ios
diff options
context:
space:
mode:
Diffstat (limited to 'modules/expo-emoji-picker/ios')
-rw-r--r--modules/expo-emoji-picker/ios/EmojiPickerModule.podspec25
-rw-r--r--modules/expo-emoji-picker/ios/EmojiPickerModule.swift11
-rw-r--r--modules/expo-emoji-picker/ios/EmojiPickerView.swift30
3 files changed, 66 insertions, 0 deletions
diff --git a/modules/expo-emoji-picker/ios/EmojiPickerModule.podspec b/modules/expo-emoji-picker/ios/EmojiPickerModule.podspec
new file mode 100644
index 000000000..e6a982a70
--- /dev/null
+++ b/modules/expo-emoji-picker/ios/EmojiPickerModule.podspec
@@ -0,0 +1,25 @@
+Pod::Spec.new do |s|
+  s.name           = 'EmojiPickerModule'
+  s.version        = '1.0.0'
+  s.summary        = 'An emoji picker for use in Bluesky'
+  s.description    = 'An emoji picker for use in Bluesky'
+  s.author         = 'alanjhughes'
+  s.homepage       = 'https://github.com/bluesky-social/social-app'
+  s.platforms      = {
+    :ios => '15.1',
+    :tvos => '15.1'
+  }
+  s.source         = { git: '' }
+  s.swift_version  = '5.4'
+  s.static_framework = true
+
+  s.dependency 'ExpoModulesCore'
+  s.dependency 'MCEmojiPicker'
+
+  # Swift/Objective-C compatibility
+  s.pod_target_xcconfig = {
+    'DEFINES_MODULE' => 'YES',
+  }
+
+  s.source_files = "**/*.{h,m,mm,swift,hpp,cpp}"
+end
diff --git a/modules/expo-emoji-picker/ios/EmojiPickerModule.swift b/modules/expo-emoji-picker/ios/EmojiPickerModule.swift
new file mode 100644
index 000000000..57b6f959a
--- /dev/null
+++ b/modules/expo-emoji-picker/ios/EmojiPickerModule.swift
@@ -0,0 +1,11 @@
+import ExpoModulesCore
+
+public class EmojiPickerModule: Module {
+  public func definition() -> ModuleDefinition {
+    Name("EmojiPicker")
+
+    View(EmojiPickerView.self) {
+      Events("onEmojiSelected")
+    }
+  }
+}
diff --git a/modules/expo-emoji-picker/ios/EmojiPickerView.swift b/modules/expo-emoji-picker/ios/EmojiPickerView.swift
new file mode 100644
index 000000000..65089a2af
--- /dev/null
+++ b/modules/expo-emoji-picker/ios/EmojiPickerView.swift
@@ -0,0 +1,30 @@
+import ExpoModulesCore
+import WebKit
+import MCEmojiPicker
+
+class EmojiPickerView: ExpoView, MCEmojiPickerDelegate {
+  let onEmojiSelected = EventDispatcher()
+
+  override func layoutSubviews() {
+    let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTap(_:)))
+    self.addGestureRecognizer(tapGesture)
+  }
+
+  @objc func handleTap(_ gesture: UITapGestureRecognizer) {
+    presentEmojiPicker()
+  }
+
+  func presentEmojiPicker() {
+    let emojiPicker = MCEmojiPickerViewController()
+    let reactRootVC = reactViewController()
+    emojiPicker.sourceView = self
+    emojiPicker.delegate = self
+    reactRootVC?.present(emojiPicker, animated: true)
+  }
+
+  func didGetEmoji(emoji: String) {
+    onEmojiSelected([
+      "emoji": emoji
+    ])
+  }
+}