diff --git a/Classes/Swift/Chat/Views/ChatConversationViewSwift.swift b/Classes/Swift/Chat/Views/ChatConversationViewSwift.swift index fe7626ca4..d2a7af715 100644 --- a/Classes/Swift/Chat/Views/ChatConversationViewSwift.swift +++ b/Classes/Swift/Chat/Views/ChatConversationViewSwift.swift @@ -24,15 +24,9 @@ import linphonesw import DropDown import PhotosUI import AVFoundation -import EmojiPicker +import MCEmojiPicker -class ChatConversationViewSwift: BackActionsNavigationView, PHPickerViewControllerDelegate, UIDocumentPickerDelegate, UICompositeViewDelegate, UICollectionViewDataSource, UICollectionViewDelegate, UIImagePickerControllerDelegate, EmojiPickerDelegate, CoreDelegate & UINavigationControllerDelegate{ - // Replaces ChatConversationView - - func didGetEmoji(emoji: String) { - //emojiButton.setTitle(emoji, for: .normal) - messageView.voiceRecordButton.setTitle(emoji, for: .normal) - } +class ChatConversationViewSwift: BackActionsNavigationView, PHPickerViewControllerDelegate, UIDocumentPickerDelegate, UICompositeViewDelegate, UICollectionViewDataSource, UICollectionViewDelegate, UIImagePickerControllerDelegate, MCEmojiPickerDelegate, CoreDelegate & UINavigationControllerDelegate{ // Replaces ChatConversationView static let compositeDescription = UICompositeViewDescription(ChatConversationViewSwift.self, statusBar: StatusBarView.self, tabBar: nil, sideMenu: SideMenuView.self, fullscreen: false, isLeftFragment: false,fragmentWith: nil) @@ -249,9 +243,9 @@ class ChatConversationViewSwift: BackActionsNavigationView, PHPickerViewControll messageView.sendButton.onClickAction = onSendClick messageView.pictureButton.onClickAction = alertAction - messageView.voiceRecordButton.addTarget(self,action:#selector(openEmojiPickerModule), - for:.touchUpInside) - //messageView.voiceRecordButton.onClickAction = openEmojiPickerModule + messageView.voiceRecordButton.onClickAction = onVrStart + messageView.emojisButton.addTarget(self,action:#selector(openEmojiPickerModule), + for:.touchUpInside) recordingDeleteButton.onClickAction = cancelVoiceRecording recordingPlayButton.onClickAction = onvrPlayPauseStop recordingStopButton.onClickAction = onvrPlayPauseStop @@ -1347,7 +1341,6 @@ class ChatConversationViewSwift: BackActionsNavigationView, PHPickerViewControll } func onVrStart() { - /* self.recordingWaveImageMask.isHidden = false recordingWaveView.progress = 0.0 recordingWaveView.setProgress(recordingWaveView.progress, animated: false) @@ -1357,19 +1350,19 @@ class ChatConversationViewSwift: BackActionsNavigationView, PHPickerViewControll } else { startVoiceRecording() } - */ - - messageView.messageText.emojiPIcker = true - messageView.messageText.becomeFirstResponder() - messageView.messageText.emojiPIcker = false - } @objc private func openEmojiPickerModule(sender: UIButton) { - let viewController = EmojiPickerViewController() + messageView.messageText.resignFirstResponder() + let viewController = MCEmojiPickerViewController() viewController.delegate = self viewController.sourceView = sender - present(viewController, animated: true) + viewController.isDismissAfterChoosing = false + present(viewController, animated: true, completion: nil) + } + + func didGetEmoji(emoji: String) { + messageView.messageText.text = messageView.messageText.text + emoji } func startVoiceRecording() { diff --git a/Classes/Swift/Chat/Views/MessageView.swift b/Classes/Swift/Chat/Views/MessageView.swift index fb725b70c..04d96b403 100644 --- a/Classes/Swift/Chat/Views/MessageView.swift +++ b/Classes/Swift/Chat/Views/MessageView.swift @@ -32,8 +32,10 @@ class MessageView: UIView, UITextViewDelegate { let pictureButton = CallControlButton(buttonTheme:VoipTheme.nav_button("")) let voiceRecordButton = CallControlButton(buttonTheme:VoipTheme.nav_button("vr_off")) let sendButton = CallControlButton(buttonTheme:VoipTheme.nav_button("")) + let emojisButton = CallControlButton(buttonTheme:VoipTheme.nav_button("emoji")) let messageTextView = UIView() - let messageText = EmojiTextField() + let messageWithEmojiView = UIView() + let messageText = UITextView() let ephemeralIndicator = UIImageView(image: UIImage(named: "ephemeral_messages_color_A.png")) var fileContext = false var isComposing = false @@ -79,13 +81,21 @@ class MessageView: UIView, UITextViewDelegate { addSubview(messageTextView) messageTextView.toRightOf(voiceRecordButton, withLeftMargin: 5).toLeftOf(sendButton).matchParentHeight().done() - messageTextView.addSubview(messageText) - messageText.matchParentDimmensions(insetedByDx: 10).done() + messageTextView.addSubview(messageWithEmojiView) + messageWithEmojiView.matchParentDimmensions(insetedByDx: 10).done() + messageWithEmojiView.backgroundColor = VoipTheme.backgroundWhiteBlack.get() + + messageWithEmojiView.addSubview(messageText) + messageText.matchParentHeight().alignParentLeft().alignParentRight(withMargin: 40).done() messageText.font = UIFont.systemFont(ofSize: 18) messageText.delegate = self + messageWithEmojiView.addSubview(emojisButton) + emojisButton.alignParentRight().matchParentHeight().done() + UIDeviceBridge.displayModeSwitched.readCurrentAndObserve { _ in self.backgroundColor = VoipTheme.voipToolbarBackgroundColor.get() + self.messageWithEmojiView.backgroundColor = VoipTheme.backgroundWhiteBlack.get() } } @@ -106,21 +116,3 @@ class MessageView: UIView, UITextViewDelegate { } } } - -class EmojiTextField: UITextView { - var emojiPIcker = false - - // required for iOS 13 - override var textInputContextIdentifier: String? { "" } // return non-nil to show the Emoji keyboard ¯\_(ツ)_/¯ - - override var textInputMode: UITextInputMode? { - for mode in UITextInputMode.activeInputModes { - if !emojiPIcker { - return mode - } else if mode.primaryLanguage == "emoji" { - return mode - } - } - return nil - } -} diff --git a/Podfile b/Podfile index bc8703acb..723b6e2b0 100644 --- a/Podfile +++ b/Podfile @@ -29,8 +29,8 @@ target 'linphone' do pod 'SnapKit', '~> 5.6.0' pod 'DropDown' pod 'IQKeyboardManager' - pod 'SwipeCellKit' # License: https://github.com/SwipeCellKit/SwipeCellKit/blob/develop/LICENSE - pod 'EmojiPicker', :git => 'https://github.com/htmlprogrammist/EmojiPicker' + pod 'SwipeCellKit' #License: https://github.com/SwipeCellKit/SwipeCellKit/blob/develop/LICENSE + pod 'MCEmojiPicker' #License: https://github.com/izyumkin/MCEmojiPicker/blob/main/LICENSE all_pods end diff --git a/Resources/images/emoji.png b/Resources/images/emoji.png new file mode 100644 index 000000000..5b334ba09 Binary files /dev/null and b/Resources/images/emoji.png differ