diff options
Diffstat (limited to 'modules/expo-emoji-picker/ios')
-rw-r--r-- | modules/expo-emoji-picker/ios/EmojiPickerModule.podspec | 25 | ||||
-rw-r--r-- | modules/expo-emoji-picker/ios/EmojiPickerModule.swift | 11 | ||||
-rw-r--r-- | modules/expo-emoji-picker/ios/EmojiPickerView.swift | 30 |
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 + ]) + } +} |