From 91f375bbd32db62643e9f76780aa438c1a8cebb9 Mon Sep 17 00:00:00 2001 From: nixzhu Date: Mon, 14 Sep 2015 15:47:18 +0800 Subject: [PATCH 1/9] alert if newMessagesCount != messageIDs.count --- .../Conversation/ConversationViewController.swift | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Yep/ViewControllers/Conversation/ConversationViewController.swift b/Yep/ViewControllers/Conversation/ConversationViewController.swift index 14835463..d13d4207 100644 --- a/Yep/ViewControllers/Conversation/ConversationViewController.swift +++ b/Yep/ViewControllers/Conversation/ConversationViewController.swift @@ -1502,6 +1502,9 @@ class ConversationViewController: BaseViewController { if newMessagesCount != messageIDs.count { reloadConversationCollectionView() println("newMessagesCount != messageIDs.count") + #if DEBUG + YepAlert.alertSorry(message: "newMessagesCount: \(newMessagesCount)\nmessageIDs.count: \(messageIDs.count)", inViewController: self) + #endif return } } From 3ed74605a4809dddc54a51c25a13ede756393825 Mon Sep 17 00:00:00 2001 From: nixzhu Date: Mon, 14 Sep 2015 18:07:54 +0800 Subject: [PATCH 2/9] dismiss keyboard if need (do not preview) --- .../Conversation/ConversationViewController.swift | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/Yep/ViewControllers/Conversation/ConversationViewController.swift b/Yep/ViewControllers/Conversation/ConversationViewController.swift index d13d4207..36c06363 100644 --- a/Yep/ViewControllers/Conversation/ConversationViewController.swift +++ b/Yep/ViewControllers/Conversation/ConversationViewController.swift @@ -2080,9 +2080,6 @@ extension ConversationViewController: UICollectionViewDataSource, UICollectionVi if let messageTextView = self?.messageToolbar.messageTextView { if messageTextView.isFirstResponder() { self?.messageToolbar.state = .Default - delay(YepConfig.dismissKeyboardDelayTimeInterval) { - self?.performSegueWithIdentifier("showMessageMedia", sender: message) - } return } } @@ -2125,9 +2122,6 @@ extension ConversationViewController: UICollectionViewDataSource, UICollectionVi if let messageTextView = self?.messageToolbar.messageTextView { if messageTextView.isFirstResponder() { self?.messageToolbar.state = .Default - delay(YepConfig.dismissKeyboardDelayTimeInterval) { - self?.performSegueWithIdentifier("showMessageMedia", sender: message) - } return } } @@ -2198,9 +2192,6 @@ extension ConversationViewController: UICollectionViewDataSource, UICollectionVi if let messageTextView = self?.messageToolbar.messageTextView { if messageTextView.isFirstResponder() { self?.messageToolbar.state = .Default - delay(YepConfig.dismissKeyboardDelayTimeInterval) { - self?.performSegueWithIdentifier("showMessageMedia", sender: message) - } return } } @@ -2269,9 +2260,6 @@ extension ConversationViewController: UICollectionViewDataSource, UICollectionVi if let messageTextView = self?.messageToolbar.messageTextView { if messageTextView.isFirstResponder() { self?.messageToolbar.state = .Default - delay(YepConfig.dismissKeyboardDelayTimeInterval) { - self?.performSegueWithIdentifier("showMessageMedia", sender: message) - } return } } From 6a7e20b727aa7c6ef5ac6ba6b7c0e025ce872056 Mon Sep 17 00:00:00 2001 From: nixzhu Date: Tue, 15 Sep 2015 11:41:59 +0800 Subject: [PATCH 3/9] icon_more_image for Image --- .../icon_more_image.imageset/Contents.json | 12 ++++++++++++ .../icon_more_image.imageset/icon_more_image.pdf | Bin 0 -> 4894 bytes Yep/Views/Media/MediaControlView.swift | 1 + 3 files changed, 13 insertions(+) create mode 100644 Yep/Images.xcassets/icon_more_image.imageset/Contents.json create mode 100644 Yep/Images.xcassets/icon_more_image.imageset/icon_more_image.pdf diff --git a/Yep/Images.xcassets/icon_more_image.imageset/Contents.json b/Yep/Images.xcassets/icon_more_image.imageset/Contents.json new file mode 100644 index 00000000..5d281b98 --- /dev/null +++ b/Yep/Images.xcassets/icon_more_image.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "icon_more_image.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Yep/Images.xcassets/icon_more_image.imageset/icon_more_image.pdf b/Yep/Images.xcassets/icon_more_image.imageset/icon_more_image.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6376d178bff67f850769a72a34d73342ba644ee5 GIT binary patch literal 4894 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 Date: Tue, 15 Sep 2015 11:50:14 +0800 Subject: [PATCH 4/9] animate mediaControlView appear --- .../MessageMedia/MessageMediaViewController.swift | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Yep/ViewControllers/MessageMedia/MessageMediaViewController.swift b/Yep/ViewControllers/MessageMedia/MessageMediaViewController.swift index 308e4b00..936934da 100644 --- a/Yep/ViewControllers/MessageMedia/MessageMediaViewController.swift +++ b/Yep/ViewControllers/MessageMedia/MessageMediaViewController.swift @@ -33,7 +33,8 @@ class MessageMediaViewController: UIViewController { title = NSLocalizedString("Preview", comment: "") automaticallyAdjustsScrollViewInsets = false - + + mediaControlView.hidden = true if let message = message { @@ -170,6 +171,13 @@ class MessageMediaViewController: UIViewController { delay(0.01) { self.hideStatusBar = true } + + mediaControlView.alpha = 0 + mediaControlView.hidden = false + + UIView.animateWithDuration(0.2, delay: 0.0, options: .CurveEaseInOut, animations: { + self.mediaControlView.alpha = 1 + }, completion: { _ in }) } override func viewWillDisappear(animated: Bool) { From 33d32fa15ecc6e009c08c9925f0caf8581d2911e Mon Sep 17 00:00:00 2001 From: nixzhu Date: Tue, 15 Sep 2015 11:51:53 +0800 Subject: [PATCH 5/9] timeLable left offset --- Yep/Views/Media/MediaControlView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Yep/Views/Media/MediaControlView.swift b/Yep/Views/Media/MediaControlView.swift index 3dc04daa..a19a42e5 100644 --- a/Yep/Views/Media/MediaControlView.swift +++ b/Yep/Views/Media/MediaControlView.swift @@ -121,7 +121,7 @@ class MediaControlView: UIView { let constraintsV = NSLayoutConstraint.constraintsWithVisualFormat("V:|[timeLable]|", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDictionary) - let constraintsH = NSLayoutConstraint.constraintsWithVisualFormat("H:|-20-[timeLable]-(>=0)-[playButton]-(>=0)-[shareButton]|", options: .AlignAllCenterY | .AlignAllTop | .AlignAllBottom, metrics: nil, views: viewsDictionary) + let constraintsH = NSLayoutConstraint.constraintsWithVisualFormat("H:|-30-[timeLable]-(>=0)-[playButton]-(>=0)-[shareButton]|", options: .AlignAllCenterY | .AlignAllTop | .AlignAllBottom, metrics: nil, views: viewsDictionary) NSLayoutConstraint.activateConstraints(constraintsV) NSLayoutConstraint.activateConstraints(constraintsH) From 750b624b82537b20464580a2bea5769a3433c573 Mon Sep 17 00:00:00 2001 From: nixzhu Date: Tue, 15 Sep 2015 11:54:36 +0800 Subject: [PATCH 6/9] hide mediaView.imageView when preview video --- .../MessageMedia/MessageMediaViewController.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Yep/ViewControllers/MessageMedia/MessageMediaViewController.swift b/Yep/ViewControllers/MessageMedia/MessageMediaViewController.swift index 936934da..9fbc12f2 100644 --- a/Yep/ViewControllers/MessageMedia/MessageMediaViewController.swift +++ b/Yep/ViewControllers/MessageMedia/MessageMediaViewController.swift @@ -92,6 +92,8 @@ class MessageMediaViewController: UIViewController { case MessageMediaType.Video.rawValue: + mediaView.imageView.hidden = true + mediaControlView.type = .Video mediaControlView.playState = .Playing From 590c1f66de85d2f5c983c368c29dfaca8546a2d4 Mon Sep 17 00:00:00 2001 From: nixzhu Date: Tue, 15 Sep 2015 12:13:36 +0800 Subject: [PATCH 7/9] make sure new message newer than all local messages --- Yep/Services/YepServiceSync.swift | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Yep/Services/YepServiceSync.swift b/Yep/Services/YepServiceSync.swift index 57399940..215f0525 100644 --- a/Yep/Services/YepServiceSync.swift +++ b/Yep/Services/YepServiceSync.swift @@ -757,8 +757,14 @@ func syncMessageWithMessageInfo(messageInfo: JSONDictionary, inRealm realm: Real newMessage.createdUnixTime = updatedUnixTime } - // TODO: 可能可以根据是否已进入Conversation界面来修改到达时间,减少聊天界面的插入切换 - // 之后消息以到达时间排序 + // 确保网络来的消息比任何已有的消息都要新,防止服务器消息延后发来导致插入到当前消息上面 + if let latestMessage = realm.objects(Message).sorted("createdUnixTime", ascending: true).last { + if newMessage.createdUnixTime < latestMessage.createdUnixTime { + println("before newMessage.createdUnixTime: \(newMessage.createdUnixTime)") + newMessage.createdUnixTime = latestMessage.createdUnixTime + YepConfig.Message.localNewerTimeInterval + println("adjust newMessage.createdUnixTime: \(newMessage.createdUnixTime)") + } + } realm.write { realm.add(newMessage) From 29dc9930ecc2657425b251a73898ddae57afde4b Mon Sep 17 00:00:00 2001 From: nixzhu Date: Tue, 15 Sep 2015 12:20:15 +0800 Subject: [PATCH 8/9] alert test --- .../Conversation/ConversationViewController.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Yep/ViewControllers/Conversation/ConversationViewController.swift b/Yep/ViewControllers/Conversation/ConversationViewController.swift index 36c06363..afd3285f 100644 --- a/Yep/ViewControllers/Conversation/ConversationViewController.swift +++ b/Yep/ViewControllers/Conversation/ConversationViewController.swift @@ -1502,9 +1502,9 @@ class ConversationViewController: BaseViewController { if newMessagesCount != messageIDs.count { reloadConversationCollectionView() println("newMessagesCount != messageIDs.count") - #if DEBUG - YepAlert.alertSorry(message: "newMessagesCount: \(newMessagesCount)\nmessageIDs.count: \(messageIDs.count)", inViewController: self) - #endif + //#if DEBUG + YepAlert.alertSorry(message: "请截屏报告!\nnewMessagesCount: \(newMessagesCount)\nmessageIDs.count: \(messageIDs.count): \(messageIDs)", inViewController: self) + //#endif return } } From 2df539b52293b112a146858498bbec57ac683a91 Mon Sep 17 00:00:00 2001 From: nixzhu Date: Tue, 15 Sep 2015 12:21:00 +0800 Subject: [PATCH 9/9] update version 1.0 (87) --- Yep/Info.plist | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Yep/Info.plist b/Yep/Info.plist index bb251984..e208d771 100644 --- a/Yep/Info.plist +++ b/Yep/Info.plist @@ -32,7 +32,7 @@ CFBundleVersion - 86 + 87 Fabric APIKey