Skip to content
This repository has been archived by the owner on Jun 7, 2020. It is now read-only.

Commit

Permalink
Merge pull request #2308 from RocketChat/fix/message_draft
Browse files Browse the repository at this point in the history
[FIX] Reintroduce message drafting
  • Loading branch information
filipealva authored Nov 13, 2018
2 parents ba9d17e + e5c54b8 commit 0b57890
Show file tree
Hide file tree
Showing 6 changed files with 125 additions and 64 deletions.
12 changes: 12 additions & 0 deletions Rocket.Chat.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -441,6 +441,9 @@
801B0EF42114B2A300C0972E /* ShortcutHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 801B0EF32114B2A300C0972E /* ShortcutHelpers.swift */; };
801B0EF7211895E900C0972E /* MainSplitViewControllerShortcuts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 801B0EF6211895E900C0972E /* MainSplitViewControllerShortcuts.swift */; };
801DF8151FD7172500302CC8 /* SubscriptionUserView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 801DF8141FD7172500302CC8 /* SubscriptionUserView.swift */; };
8020C3D52199DDA400AA7133 /* MessagesViewControllerDrafting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8020C3D42199DDA400AA7133 /* MessagesViewControllerDrafting.swift */; };
8020C3D82199F75A00AA7133 /* MessageViewControllerEmptyState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8020C3D72199F75A00AA7133 /* MessageViewControllerEmptyState.swift */; };
8020C3DA2199F78800AA7133 /* MessageViewControllerSearching.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8020C3D92199F78800AA7133 /* MessageViewControllerSearching.swift */; };
8020CCF01FEAB4A7003424F4 /* EmojiPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8020CCEF1FEAB4A7003424F4 /* EmojiPicker.swift */; };
8020CCF21FEAB4C3003424F4 /* EmojiPicker.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8020CCF11FEAB4C3003424F4 /* EmojiPicker.xib */; };
8020CCF51FEAD8C9003424F4 /* EmojiPickerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8020CCF41FEAD8C9003424F4 /* EmojiPickerController.swift */; };
Expand Down Expand Up @@ -1369,6 +1372,9 @@
801B0EF32114B2A300C0972E /* ShortcutHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShortcutHelpers.swift; sourceTree = "<group>"; };
801B0EF6211895E900C0972E /* MainSplitViewControllerShortcuts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainSplitViewControllerShortcuts.swift; sourceTree = "<group>"; };
801DF8141FD7172500302CC8 /* SubscriptionUserView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubscriptionUserView.swift; sourceTree = "<group>"; };
8020C3D42199DDA400AA7133 /* MessagesViewControllerDrafting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessagesViewControllerDrafting.swift; sourceTree = "<group>"; };
8020C3D72199F75A00AA7133 /* MessageViewControllerEmptyState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageViewControllerEmptyState.swift; sourceTree = "<group>"; };
8020C3D92199F78800AA7133 /* MessageViewControllerSearching.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageViewControllerSearching.swift; sourceTree = "<group>"; };
8020CCEF1FEAB4A7003424F4 /* EmojiPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiPicker.swift; sourceTree = "<group>"; };
8020CCF11FEAB4C3003424F4 /* EmojiPicker.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = EmojiPicker.xib; sourceTree = "<group>"; };
8020CCF41FEAD8C9003424F4 /* EmojiPickerController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiPickerController.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -2874,6 +2880,9 @@
41852E881F92BBEC00D1C499 /* MessagesViewControllerReplying.swift */,
802C895D2165393600C6B9B2 /* MessagesViewControllerEditing.swift */,
80F533E52195A33B00B7292E /* MessagesViewControllerSending.swift */,
8020C3D42199DDA400AA7133 /* MessagesViewControllerDrafting.swift */,
8020C3D72199F75A00AA7133 /* MessageViewControllerEmptyState.swift */,
8020C3D92199F78800AA7133 /* MessageViewControllerSearching.swift */,
);
path = Chat;
sourceTree = "<group>";
Expand Down Expand Up @@ -4914,6 +4923,7 @@
999075252177795700CAB7C8 /* QuoteMessageCell.swift in Sources */,
809B53101FE2F17D00833DD2 /* ReactionView.swift in Sources */,
D15C83861F70991F001AB155 /* APIResponse.swift in Sources */,
8020C3D52199DDA400AA7133 /* MessagesViewControllerDrafting.swift in Sources */,
800FCD3E1F72893E00D9A692 /* MembersListViewController.swift in Sources */,
806401351FB09F8A00990572 /* PermissionManager.swift in Sources */,
4124D835209A0533005374CD /* ChatDirectMessageHeaderCell.swift in Sources */,
Expand All @@ -4929,6 +4939,7 @@
8039443020B34B12002F317A /* DirectoryRequest.swift in Sources */,
99D888FB204623A900E51306 /* UpdateUserRequest.swift in Sources */,
802C8959216314CF00C6B9B2 /* MessagesViewControllerUploading.swift in Sources */,
8020C3DA2199F78800AA7133 /* MessageViewControllerSearching.swift in Sources */,
41A9B708215B0D0700CEB218 /* MessagesViewModel.swift in Sources */,
8013F8721FD6B5B000EE1A4E /* CommandsClient.swift in Sources */,
4147CE7D1F5EAAB300C322C3 /* ServerCell.swift in Sources */,
Expand Down Expand Up @@ -4990,6 +5001,7 @@
8076FDAE2048567B00114F28 /* AuthCanDeleteMessage.swift in Sources */,
41D3668820C0323100970B99 /* SubscriptionsSortingViewModel.swift in Sources */,
800E22861F8507E400DA84F1 /* RoomMessagesRequest.swift in Sources */,
8020C3D82199F75A00AA7133 /* MessageViewControllerEmptyState.swift in Sources */,
996E7421215DFE0700842818 /* SequentialMessageChatItem.swift in Sources */,
8062E32920A1CAAB0044F407 /* SubscriptionsRequest.swift in Sources */,
41494B921D63C6280004F369 /* UIImageExtension.swift in Sources */,
Expand Down
37 changes: 37 additions & 0 deletions Rocket.Chat/Controllers/Chat/MessageViewControllerEmptyState.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
//
// MessageViewControllerEmptyState.swift
// Rocket.Chat
//
// Created by Matheus Cardoso on 11/12/18.
// Copyright © 2018 Rocket.Chat. All rights reserved.
//

extension MessagesViewController {
func updateEmptyState() {
if subscription == nil {
title = ""
composerView.isHidden = true

chatTitleView?.removeFromSuperview()
emptyStateImageView?.removeFromSuperview()

guard let theme = view.theme else { return }
let themeName = ThemeManager.themes.first { $0.theme == theme }?.title

let imageView = UIImageView(image: UIImage(named: "Empty State \(themeName ?? "light")"))
imageView.contentMode = .scaleAspectFill
imageView.clipsToBounds = true
view.addSubview(imageView)

emptyStateImageView = imageView

updateEmptyStateFrame()
} else {
emptyStateImageView?.removeFromSuperview()
}
}

func updateEmptyStateFrame() {
emptyStateImageView?.frame = view.bounds
}
}
37 changes: 37 additions & 0 deletions Rocket.Chat/Controllers/Chat/MessageViewControllerSearching.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
//
// MessageViewControllerSearching.swift
// Rocket.Chat
//
// Created by Matheus Cardoso on 11/12/18.
// Copyright © 2018 Rocket.Chat. All rights reserved.
//

extension MessagesViewController {
func updateSearchMessagesButton() {
if subscription != nil {
navigationItem.rightBarButtonItem = UIBarButtonItem(
barButtonSystemItem: .search,
target: self,
action: #selector(showSearchMessages)
)
} else {
navigationItem.rightBarButtonItem = nil
}
}

@objc func showSearchMessages() {
guard
let controller = storyboard?.instantiateViewController(withIdentifier: "MessagesList"),
let messageList = controller as? MessagesListViewController
else {
return
}

messageList.data.subscription = subscription
messageList.data.isSearchingMessages = true
let searchMessagesNav = BaseNavigationController(rootViewController: messageList)

present(searchMessagesNav, animated: true, completion: nil)

}
}
68 changes: 4 additions & 64 deletions Rocket.Chat/Controllers/Chat/MessagesViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ final class MessagesViewController: RocketChatViewController {
didSet {
viewModel.subscription = subscription
viewSubscriptionModel.subscription = subscription

recoverDraftMessage()
}
}

Expand Down Expand Up @@ -157,6 +159,8 @@ final class MessagesViewController: RocketChatViewController {
guard let self = self else { return }
self.chatTitleView?.subscription = self.viewSubscriptionModel.subscription
}

startDraftMessage()
}

override func viewDidAppear(_ animated: Bool) {
Expand Down Expand Up @@ -385,67 +389,3 @@ extension MessagesViewController: SocketConnectionHandler {
}

}

// MARK: Message Searching

extension MessagesViewController {
func updateSearchMessagesButton() {
if subscription != nil {
navigationItem.rightBarButtonItem = UIBarButtonItem(
barButtonSystemItem: .search,
target: self,
action: #selector(showSearchMessages)
)
} else {
navigationItem.rightBarButtonItem = nil
}
}

@objc func showSearchMessages() {
guard
let controller = storyboard?.instantiateViewController(withIdentifier: "MessagesList"),
let messageList = controller as? MessagesListViewController
else {
return
}

messageList.data.subscription = subscription
messageList.data.isSearchingMessages = true
let searchMessagesNav = BaseNavigationController(rootViewController: messageList)

present(searchMessagesNav, animated: true, completion: nil)

}
}

// MARK: EmptyState

extension MessagesViewController {
func updateEmptyState() {
if subscription == nil {
title = ""
composerView.isHidden = true

chatTitleView?.removeFromSuperview()
emptyStateImageView?.removeFromSuperview()

guard let theme = view.theme else { return }
let themeName = ThemeManager.themes.first { $0.theme == theme }?.title

let imageView = UIImageView(image: UIImage(named: "Empty State \(themeName ?? "light")"))
imageView.contentMode = .scaleAspectFill
imageView.clipsToBounds = true
view.addSubview(imageView)

emptyStateImageView = imageView

updateEmptyStateFrame()
} else {
emptyStateImageView?.removeFromSuperview()
}
}

func updateEmptyStateFrame() {
emptyStateImageView?.frame = view.bounds
}
}
34 changes: 34 additions & 0 deletions Rocket.Chat/Controllers/Chat/MessagesViewControllerDrafting.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
//
// MessagesViewControllerDrafting.swift
// Rocket.Chat
//
// Created by Matheus Cardoso on 11/12/18.
// Copyright © 2018 Rocket.Chat. All rights reserved.
//

import Foundation

extension MessagesViewController {
func startDraftMessage() {
NotificationCenter.default.addObserver(
self,
selector: #selector(updateDraftMessage),
name: UITextView.textDidChangeNotification,
object: composerView.textView
)

recoverDraftMessage()
}

@objc func updateDraftMessage() {
if let subscription = subscription {
DraftMessageManager.update(draftMessage: composerView.textView.text, for: subscription)
}
}

func recoverDraftMessage() {
if let subscription = subscription {
composerView.textView.text = DraftMessageManager.draftMessage(for: subscription)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,6 @@ extension MessagesViewController {
composerView.textView.text = ""

stopReplying()
updateDraftMessage()
}
}

0 comments on commit 0b57890

Please # to comment.