diff --git a/Classes/Swift/Chat/Views/ChatConversationTableViewSwift.swift b/Classes/Swift/Chat/Views/ChatConversationTableViewSwift.swift index 11be20173..ab94f00ba 100644 --- a/Classes/Swift/Chat/Views/ChatConversationTableViewSwift.swift +++ b/Classes/Swift/Chat/Views/ChatConversationTableViewSwift.swift @@ -476,7 +476,7 @@ class ChatConversationTableViewSwift: UIViewController, UICollectionViewDataSour func replyMessage(message: ChatMessage){ let view: ChatConversationViewSwift = self.VIEW(ChatConversationViewSwift.compositeViewDescription()) - if (view.messageView.messageText.textColor == UIColor.lightGray && view.stackView.arrangedSubviews[3].isHidden && view.stackView.arrangedSubviews[4].isHidden){ + if (view.messageView.messageText.text == "" && view.stackView.arrangedSubviews[3].isHidden && view.stackView.arrangedSubviews[4].isHidden){ view.messageView.messageText.becomeFirstResponder() } view.initiateReplyView(forMessage: message.getCobject) diff --git a/Classes/Swift/Chat/Views/ChatConversationViewSwift.swift b/Classes/Swift/Chat/Views/ChatConversationViewSwift.swift index a64d65510..6d885b680 100644 --- a/Classes/Swift/Chat/Views/ChatConversationViewSwift.swift +++ b/Classes/Swift/Chat/Views/ChatConversationViewSwift.swift @@ -792,9 +792,7 @@ class ChatConversationViewSwift: BackActionsNavigationView, PHPickerViewControll func sendMessageInMessageField(rootMessage: ChatMessage?) { if ChatConversationViewModel.sharedModel.sendMessage(message: messageView.messageText.text.trimmingCharacters(in: .whitespacesAndNewlines), withExterlBodyUrl: nil, rootMessage: rootMessage) { - //messageView.messageText.textColor = UIColor.lightGray messageView.messageText.text = "" - messageView.emojisButton.isHidden = false messageView.isComposing = false } } @@ -814,7 +812,7 @@ class ChatConversationViewSwift: BackActionsNavigationView, PHPickerViewControll if (linphone_chat_room_get_capabilities(ChatConversationViewModel.sharedModel.chatRoom?.getCobject) != 0) && conference { linphone_chat_message_add_content(rootMessage, voiceContent) }else{ - if messageView.messageText.textColor != UIColor.lightGray { + if messageView.messageText.text != "" { let rootMessageText = !replyBubble.isHidden ? linphone_chat_room_create_reply_message(ChatConversationViewModel.sharedModel.chatRoom?.getCobject, ChatConversationViewModel.sharedModel.replyMessage) : linphone_chat_room_create_empty_message(ChatConversationViewModel.sharedModel.chatRoom?.getCobject) let result = ChatMessage.getSwiftObject(cObject: rootMessageText!) sendMessageInMessageField(rootMessage: result) @@ -834,7 +832,7 @@ class ChatConversationViewSwift: BackActionsNavigationView, PHPickerViewControll for i in 0..<(ChatConversationViewModel.sharedModel.fileContext.count) { startUploadData(ChatConversationViewModel.sharedModel.fileContext[i], withType: FileType.init(ChatConversationViewModel.sharedModel.mediaURLCollection[i].pathExtension)?.getGroupTypeFromFile(), withName: ChatConversationViewModel.sharedModel.mediaURLCollection[i].lastPathComponent, andMessage: nil, rootMessage: nil) } - if messageView.messageText.textColor != UIColor.lightGray { + if messageView.messageText.text != "" { let result = ChatMessage.getSwiftObject(cObject: rootMessage!) sendMessageInMessageField(rootMessage: result) } @@ -864,21 +862,9 @@ class ChatConversationViewSwift: BackActionsNavigationView, PHPickerViewControll func startMultiFilesUpload(_ rootMessage: ChatMessage?) -> Bool { let fileTransfer = FileTransferDelegate() - if messageView.messageText.textColor != UIColor.lightGray { - fileTransfer.text = messageView.messageText.text - } else { - fileTransfer.text = "" - } + fileTransfer.text = messageView.messageText.text fileTransfer.uploadFileContent(forSwift: ChatConversationViewModel.sharedModel.fileContext, urlList: ChatConversationViewModel.sharedModel.mediaURLCollection, for: ChatConversationViewModel.sharedModel.chatRoom?.getCobject, rootMessage: rootMessage?.getCobject) - if fileTransfer.text.isEmpty { - messageView.messageText.textColor = UIColor.lightGray - messageView.messageText.text = "Message" - messageView.emojisButton.isHidden = false - } else { - messageView.messageText.text = "" - messageView.emojisButton.isHidden = false - } - + messageView.messageText.text = "" tableControllerSwift.refreshData(isOutgoing: true) return true } @@ -1374,7 +1360,7 @@ class ChatConversationViewSwift: BackActionsNavigationView, PHPickerViewControll sheet!.addButton( withTitle: NSLocalizedString("Send to this conversation", comment: "")) { [self] in do{ - if messageView.messageText.textColor != UIColor.lightGray { + if messageView.messageText.text != "" { try sendMessageInMessageField(rootMessage: ChatConversationViewModel.sharedModel.chatRoom?.createEmptyMessage()) } if let sUrl = url { @@ -1445,12 +1431,7 @@ class ChatConversationViewSwift: BackActionsNavigationView, PHPickerViewControll } func didGetEmoji(emoji: String) { - if messageView.messageText.textColor != UIColor.lightGray { - messageView.messageText.text = messageView.messageText.text + emoji - } else { - messageView.messageText.textColor = UIColor.black - messageView.messageText.text = emoji - } + 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 84fdf4044..097ef7fe8 100644 --- a/Classes/Swift/Chat/Views/MessageView.swift +++ b/Classes/Swift/Chat/Views/MessageView.swift @@ -82,9 +82,7 @@ class MessageView: UIView, UITextViewDelegate { messageText.matchParentHeight().alignParentLeft().alignParentRight(withMargin: 40).done() messageText.font = UIFont.systemFont(ofSize: 18) messageText.delegate = self - messageText.textColor = UIColor.lightGray - messageText.text = "Message" - messageText.inputAccessoryView = UIView() + messageWithEmojiView.addArrangedSubview(emojisButton) emojisButton.alignParentRight().matchParentHeight().done() @@ -95,59 +93,43 @@ class MessageView: UIView, UITextViewDelegate { } func textViewDidChangeSelection(_ textView: UITextView) { - if messageText.textColor != UIColor.lightGray { - let chatRoom = ChatRoom.getSwiftObject(cObject: PhoneMainView.instance().currentRoom) - if ((messageText.text.isEmpty && !fileContext) || isLoading) { - sendButton.isEnabled = false - emojisButton.isHidden = false - NotificationCenter.default.post(name: Notification.Name("LinphoneResetTextViewSize"), object: self) - lastNumLines = 0 - } else { - if (messageText.text.trimmingCharacters(in: .whitespacesAndNewlines).unicodeScalars.first?.properties.isEmojiPresentation == true){ - var onlyEmojis = true - messageText.text.trimmingCharacters(in: .whitespacesAndNewlines).unicodeScalars.forEach { emoji in - if !emoji.properties.isEmojiPresentation && !emoji.properties.isWhitespace{ - onlyEmojis = false - } - } - if onlyEmojis { - emojisButton.isHidden = false - } else { - emojisButton.isHidden = true + let chatRoom = ChatRoom.getSwiftObject(cObject: PhoneMainView.instance().currentRoom) + if ((messageText.text.isEmpty && !fileContext) || isLoading) { + sendButton.isEnabled = false + emojisButton.isHidden = false + NotificationCenter.default.post(name: Notification.Name("LinphoneResetTextViewSize"), object: self) + lastNumLines = 0 + } else { + if (messageText.text.trimmingCharacters(in: .whitespacesAndNewlines).unicodeScalars.first?.properties.isEmojiPresentation == true){ + var onlyEmojis = true + messageText.text.trimmingCharacters(in: .whitespacesAndNewlines).unicodeScalars.forEach { emoji in + if !emoji.properties.isEmojiPresentation && !emoji.properties.isWhitespace{ + onlyEmojis = false } + } + if onlyEmojis { + emojisButton.isHidden = false } else { emojisButton.isHidden = true } - if !isComposing { - chatRoom.compose() - let timer = Timer.scheduledTimer(withTimeInterval: 10.0, repeats: false) { timer in - self.isComposing = false - } - } - isComposing = true - - sendButton.isEnabled = true - - let numLines = (messageText.contentSize.height / messageText.font!.lineHeight) - if(Int(numLines) != Int(lastNumLines)){ - NotificationCenter.default.post(name: Notification.Name("LinphoneTextViewSize"), object: self) - } - lastNumLines = numLines + } else { + emojisButton.isHidden = true } - } - } - - func textViewDidBeginEditing(_ textView: UITextView) { - if messageText.textColor == UIColor.lightGray { - messageText.text = nil - messageText.textColor = UIColor.black - } - } - - func textViewDidEndEditing(_ textView: UITextView) { - if messageText.text.isEmpty { - messageText.textColor = UIColor.lightGray - messageText.text = "Message" + if !isComposing { + chatRoom.compose() + let timer = Timer.scheduledTimer(withTimeInterval: 10.0, repeats: false) { timer in + self.isComposing = false + } + } + isComposing = true + + sendButton.isEnabled = true + + let numLines = (messageText.contentSize.height / messageText.font!.lineHeight) + if(Int(numLines) != Int(lastNumLines)){ + NotificationCenter.default.post(name: Notification.Name("LinphoneTextViewSize"), object: self) + } + lastNumLines = numLines } } } diff --git a/Classes/Swift/Util/BackActionsNavigationView.swift b/Classes/Swift/Util/BackActionsNavigationView.swift index 25ccfd2ab..56e2d6f0c 100644 --- a/Classes/Swift/Util/BackActionsNavigationView.swift +++ b/Classes/Swift/Util/BackActionsNavigationView.swift @@ -27,7 +27,6 @@ class BackActionsNavigationView: UIViewController { let top_bar_height = 66.0 - var message_height = 66.0 let side_buttons_margin = 5 let titleLabel = StyledLabel(VoipTheme.chat_conversation_title) @@ -158,8 +157,6 @@ class BackActionsNavigationView: UIViewController { super.viewDidLoad() - view.backgroundColor = VoipTheme.voipToolbarBackgroundColor.get() - stackView.axis = .vertical; stackView.distribution = .fill; stackView.alignment = .center; @@ -169,12 +166,7 @@ class BackActionsNavigationView: UIViewController { view.addSubview(stackView) //stackView.alignParentTop().alignParentBottom().matchParentSideBorders().done() - let keyWindow = UIApplication.shared.windows.filter {$0.isKeyWindow}.first - if keyWindow != nil { - stackView.alignParentTop().alignParentBottom(withMargin: keyWindow!.safeAreaInsets.top/3).done() - }else{ - stackView.alignParentTop().alignParentBottom().done() - } + stackView.alignParentTop().alignParentBottom().done() stackView.leftAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leftAnchor).isActive = true stackView.rightAnchor.constraint(equalTo: view.safeAreaLayoutGuide.rightAnchor).isActive = true @@ -248,11 +240,7 @@ class BackActionsNavigationView: UIViewController { mediaSelector.isHidden = true stackView.addArrangedSubview(messageView) - if keyWindow != nil { - message_height = 66 - ((keyWindow!.safeAreaInsets.top/3)/2) - } - - messageView.alignParentBottom().height(message_height).matchParentSideBorders().done() + messageView.alignParentBottom().height(66).matchParentSideBorders().done() stackView.translatesAutoresizingMaskIntoConstraints = false; view.addSubview(stackView) @@ -276,8 +264,6 @@ class BackActionsNavigationView: UIViewController { view.bringSubviewToFront(topBar) - self.dismissKeyboard() - UIDeviceBridge.displayModeSwitched.readCurrentAndObserve { _ in self.topBar.backgroundColor = VoipTheme.voipToolbarBackgroundColor.get() self.titleParticipants.backgroundColor = VoipTheme.voipToolbarBackgroundColor.get() @@ -292,8 +278,6 @@ class BackActionsNavigationView: UIViewController { NotificationCenter.default.addObserver(self, selector: #selector(self.rotated), name: UIDevice.orientationDidChangeNotification, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(self.changeSizeOfTextView), name: Notification.Name("LinphoneTextViewSize"), object: nil) NotificationCenter.default.addObserver(self, selector: #selector(self.resetSizeOfTextView), name: Notification.Name("LinphoneResetTextViewSize"), object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil) } func resetRecordingProgressBar(){ @@ -417,44 +401,15 @@ class BackActionsNavigationView: UIViewController { @objc func changeSizeOfTextView(){ let numLines = (messageView.messageText.contentSize.height / messageView.messageText.font!.lineHeight) - if numLines >= 2 && numLines <= 6 { - messageView.setHeight((message_height * numLines)/2) - } else if numLines < 2 { - messageView.setHeight(message_height) + if numLines >= 3 && numLines <= 6 { + messageView.setHeight(33*numLines - 33) + } else if numLines < 3 { + messageView.setHeight(66) } } @objc func resetSizeOfTextView(){ - messageView.setHeight(message_height) - } - - func dismissKeyboard() { - let tap: UITapGestureRecognizer = UITapGestureRecognizer( target: self, action: #selector(self.dismissKeyboardTouchOutside)) - tap.cancelsTouchesInView = false - view.addGestureRecognizer(tap) - } - - @objc private func dismissKeyboardTouchOutside() { - view.endEditing(true) - } - - @objc func keyboardWillShow(notification: NSNotification) { - if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue { - if topBar.frame.origin.y == 0 { - let keyWindow = UIApplication.shared.windows.filter {$0.isKeyWindow}.first - if keyWindow != nil { - topBar.frame.origin.y += keyboardSize.height - keyWindow!.safeAreaInsets.top/3 - }else{ - topBar.frame.origin.y += keyboardSize.height - } - } - } - } - - @objc func keyboardWillHide(notification: NSNotification) { - if topBar.frame.origin.y != 0 { - topBar.frame.origin.y = 0 - } + messageView.setHeight(66) } }