mirror of
https://github.com/wahyd4/Yep.git
synced 2026-08-28 14:16:54 +10:00
only Group Conversation needDetectMention
This commit is contained in:
@@ -740,6 +740,10 @@ class Conversation: Object {
|
||||
var latestValidMessage: Message? {
|
||||
return messages.filter({ ($0.hidden == false) && ($0.deletedByCreator == false && ($0.mediaType != MessageMediaType.SectionDate.rawValue)) }).sort({ $0.createdUnixTime > $1.createdUnixTime }).first
|
||||
}
|
||||
|
||||
var needDetectMention: Bool {
|
||||
return type == ConversationType.Group.rawValue
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Feed
|
||||
|
||||
@@ -297,6 +297,12 @@ class ConversationViewController: BaseViewController {
|
||||
var conversationDirtyAction: (() -> Void)?
|
||||
var conversationIsDirty = false
|
||||
|
||||
private var needDetectMention = false {
|
||||
didSet {
|
||||
messageToolbar.needDetectMention = needDetectMention
|
||||
}
|
||||
}
|
||||
|
||||
private var selectedIndexPathForMenu: NSIndexPath?
|
||||
|
||||
private var realm: Realm!
|
||||
@@ -891,13 +897,7 @@ class ConversationViewController: BaseViewController {
|
||||
// view.addSubview(conversationFPSLabel)
|
||||
#endif
|
||||
|
||||
// usersMatchWithUsernamePrefix("i", failureHandler: nil) { users in
|
||||
// println("usersMatchWithUsernamePrefix: \(users)")
|
||||
//
|
||||
// delay(1) { [weak self] in
|
||||
// self?.mentionView.users = users
|
||||
// }
|
||||
// }
|
||||
needDetectMention = conversation.needDetectMention
|
||||
}
|
||||
|
||||
override func viewWillAppear(animated: Bool) {
|
||||
@@ -958,31 +958,35 @@ class ConversationViewController: BaseViewController {
|
||||
self?.trySnapContentOfConversationCollectionViewToBottom()
|
||||
|
||||
default:
|
||||
self?.mentionView.hide()
|
||||
if self?.needDetectMention ?? false {
|
||||
self?.mentionView.hide()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Mention
|
||||
|
||||
messageToolbar.tryMentionUserAction = { [weak self] usernamePrefix in
|
||||
usersMatchWithUsernamePrefix(usernamePrefix, failureHandler: nil) { users in
|
||||
dispatch_async(dispatch_get_main_queue()) { [weak self] in
|
||||
if needDetectMention {
|
||||
messageToolbar.tryMentionUserAction = { [weak self] usernamePrefix in
|
||||
usersMatchWithUsernamePrefix(usernamePrefix, failureHandler: nil) { users in
|
||||
dispatch_async(dispatch_get_main_queue()) { [weak self] in
|
||||
|
||||
self?.mentionView.users = users
|
||||
self?.mentionView.users = users
|
||||
|
||||
guard !users.isEmpty else {
|
||||
self?.mentionView.hide()
|
||||
return
|
||||
guard !users.isEmpty else {
|
||||
self?.mentionView.hide()
|
||||
return
|
||||
}
|
||||
|
||||
self?.view.layoutIfNeeded()
|
||||
self?.mentionView.show()
|
||||
}
|
||||
|
||||
self?.view.layoutIfNeeded()
|
||||
self?.mentionView.show()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
messageToolbar.giveUpMentionUserAction = { [weak self] in
|
||||
self?.mentionView.hide()
|
||||
messageToolbar.giveUpMentionUserAction = { [weak self] in
|
||||
self?.mentionView.hide()
|
||||
}
|
||||
}
|
||||
|
||||
// 在这里才尝试恢复 messageToolbar 的状态,因为依赖 stateTransitionAction
|
||||
@@ -1120,7 +1124,9 @@ class ConversationViewController: BaseViewController {
|
||||
})
|
||||
}
|
||||
|
||||
self?.mentionView.hide()
|
||||
if self?.needDetectMention ?? false {
|
||||
self?.mentionView.hide()
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Send Audio
|
||||
|
||||
@@ -143,6 +143,7 @@ class MessageToolbar: UIToolbar {
|
||||
|
||||
var notifyTypingAction: (() -> Void)?
|
||||
|
||||
var needDetectMention = false
|
||||
var tryMentionUserAction: ((usernamePrefix: String) -> Void)?
|
||||
var giveUpMentionUserAction: (() -> Void)?
|
||||
|
||||
@@ -488,22 +489,24 @@ extension MessageToolbar: UITextViewDelegate {
|
||||
if let text = textView.text {
|
||||
state = text.isEmpty ? .BeginTextInput : .TextInputing
|
||||
|
||||
let parts = text.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
|
||||
if needDetectMention {
|
||||
let parts = text.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
|
||||
|
||||
if let lastPart = parts.last {
|
||||
if lastPart.hasPrefix("@") {
|
||||
let usernamePrefix = lastPart.substringFromIndex(lastPart.startIndex.advancedBy(1))
|
||||
if let lastPart = parts.last {
|
||||
if lastPart.hasPrefix("@") {
|
||||
let usernamePrefix = lastPart.substringFromIndex(lastPart.startIndex.advancedBy(1))
|
||||
|
||||
if !usernamePrefix.isEmpty {
|
||||
mentionUsernameRange = text.rangeOfString(lastPart)
|
||||
tryMentionUserAction?(usernamePrefix: usernamePrefix)
|
||||
if !usernamePrefix.isEmpty {
|
||||
mentionUsernameRange = text.rangeOfString(lastPart)
|
||||
tryMentionUserAction?(usernamePrefix: usernamePrefix)
|
||||
|
||||
return
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
giveUpMentionUserAction?()
|
||||
giveUpMentionUserAction?()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user