Browse Source

Merge pull request #168 from deltachat/msg-info

improve message info screen
björn petersen 6 years ago
parent
commit
457e5b5661

+ 4 - 2
deltachat-ios/Controller/ChatViewController.swift

@@ -15,6 +15,7 @@ extension ChatViewController: MediaSendHandler {
 }
 }
 
 
 class ChatViewController: MessagesViewController {
 class ChatViewController: MessagesViewController {
+    var dcContext: DcContext
     weak var coordinator: ChatViewCoordinator?
     weak var coordinator: ChatViewCoordinator?
 
 
     let outgoingAvatarOverlap: CGFloat = 17.5
     let outgoingAvatarOverlap: CGFloat = 17.5
@@ -44,7 +45,8 @@ class ChatViewController: MessagesViewController {
 
 
     private var titleView = ChatTitleView()
     private var titleView = ChatTitleView()
 
 
-    init(chatId: Int, title: String? = nil) {
+    init(dcContext: DcContext, chatId: Int, title: String? = nil) {
+        self.dcContext = dcContext
         self.chatId = chatId
         self.chatId = chatId
         super.init(nibName: nil, bundle: nil)
         super.init(nibName: nil, bundle: nil)
         if let title = title {
         if let title = title {
@@ -425,7 +427,7 @@ class ChatViewController: MessagesViewController {
             let msg = messageList[indexPath.section]
             let msg = messageList[indexPath.section]
             logger.info("message: View info \(msg.messageId)")
             logger.info("message: View info \(msg.messageId)")
 
 
-            let msgViewController = MessageInfoViewController(message: msg)
+            let msgViewController = MessageInfoViewController(dcContext: dcContext, message: msg)
             if let ctrl = navigationController {
             if let ctrl = navigationController {
                 ctrl.pushViewController(msgViewController, animated: true)
                 ctrl.pushViewController(msgViewController, animated: true)
             }
             }

+ 2 - 2
deltachat-ios/Controller/MailboxViewController.swift

@@ -1,8 +1,8 @@
 import UIKit
 import UIKit
 
 
 class MailboxViewController: ChatViewController {
 class MailboxViewController: ChatViewController {
-    override init(chatId: Int, title: String? = nil) {
-        super.init(chatId: chatId, title: title)
+    override init(dcContext: DcContext, chatId: Int, title: String? = nil) {
+        super.init(dcContext: dcContext, chatId: chatId, title: title)
         hidesBottomBarWhenPushed = false
         hidesBottomBarWhenPushed = false
     }
     }
 
 

+ 9 - 58
deltachat-ios/Controller/MessageInfoViewController.swift

@@ -1,12 +1,13 @@
 import UIKit
 import UIKit
 
 
 class MessageInfoViewController: UITableViewController {
 class MessageInfoViewController: UITableViewController {
+    var dcContext: DcContext
     var message: DCMessage
     var message: DCMessage
 
 
-    init(message: DCMessage) {
+    init(dcContext: DcContext, message: DCMessage) {
+        self.dcContext = dcContext
         self.message = message
         self.message = message
-
-        super.init(style: .plain)
+        super.init(style: .grouped)
     }
     }
 
 
     required init?(coder _: NSCoder) {
     required init?(coder _: NSCoder) {
@@ -16,23 +17,16 @@ class MessageInfoViewController: UITableViewController {
     override func viewDidLoad() {
     override func viewDidLoad() {
         super.viewDidLoad()
         super.viewDidLoad()
         title = String.localized("menu_message_details")
         title = String.localized("menu_message_details")
-        // Uncomment the following line to preserve selection between presentations
-        // self.clearsSelectionOnViewWillAppear = false
-
-        // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
-        // self.navigationItem.rightBarButtonItem = self.editButtonItem
     }
     }
 
 
     // MARK: - Table view data source
     // MARK: - Table view data source
 
 
     override func numberOfSections(in _: UITableView) -> Int {
     override func numberOfSections(in _: UITableView) -> Int {
-        // #warning Incomplete implementation, return the number of sections
         return 1
         return 1
     }
     }
 
 
-    override func tableView(_: UITableView, numberOfRowsInSection _: Int) -> Int {
-        // #warning Incomplete implementation, return the number of rows
-        return 1
+    override func tableView(_: UITableView, numberOfRowsInSection section: Int) -> Int {
+        return 1 // number of rows in section
     }
     }
 
 
     override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
     override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
@@ -45,55 +39,12 @@ class MessageInfoViewController: UITableViewController {
 
 
         if indexPath.section == 0 {
         if indexPath.section == 0 {
             if indexPath.row == 0 {
             if indexPath.row == 0 {
-                cell.textLabel?.text = message.text
+                cell.textLabel?.numberOfLines = 0
+                cell.textLabel?.lineBreakMode = .byWordWrapping
+                cell.textLabel?.text = dcContext.getMsgInfo(msgId: message.id)
             }
             }
         }
         }
 
 
         return cell
         return cell
     }
     }
-
-    /*
-     // Override to support conditional editing of the table view.
-     override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
-     // Return false if you do not want the specified item to be editable.
-     return true
-     }
-     */
-
-    /*
-     // Override to support editing the table view.
-     override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
-     if editingStyle == .delete {
-     // Delete the row from the data source
-     tableView.deleteRows(at: [indexPath], with: .fade)
-     } else if editingStyle == .insert {
-     // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
-     }
-     }
-     */
-
-    /*
-     // Override to support rearranging the table view.
-     override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) {
-
-     }
-     */
-
-    /*
-     // Override to support conditional rearranging of the table view.
-     override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
-     // Return false if you do not want the item to be re-orderable.
-     return true
-     }
-     */
-
-    /*
-     // MARK: - Navigation
-
-     // In a storyboard-based application, you will often want to do a little preparation before navigation
-     override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
-     // Get the new view controller using segue.destination.
-     // Pass the selected object to the new view controller.
-     }
-     */
 }
 }

+ 1 - 1
deltachat-ios/Controller/NewProfileViewController.swift

@@ -299,7 +299,7 @@ class NewProfileViewController: UIViewController, QrCodeReaderDelegate {
 
 
     func displayNewChat(contactId: Int) {
     func displayNewChat(contactId: Int) {
         let chatId = dc_create_chat_by_contact_id(mailboxPointer, UInt32(contactId))
         let chatId = dc_create_chat_by_contact_id(mailboxPointer, UInt32(contactId))
-        let chatVC = ChatViewController(chatId: Int(chatId))
+        let chatVC = ChatViewController(dcContext: dcContext, chatId: Int(chatId))
 
 
         chatVC.hidesBottomBarWhenPushed = true
         chatVC.hidesBottomBarWhenPushed = true
         navigationController?.pushViewController(chatVC, animated: true)
         navigationController?.pushViewController(chatVC, animated: true)

+ 4 - 2
deltachat-ios/Controller/ProfileViewController.swift

@@ -1,6 +1,7 @@
 import UIKit
 import UIKit
 
 
 class ProfileViewController: UITableViewController {
 class ProfileViewController: UITableViewController {
+    var dcContext: DcContext
     weak var coordinator: ProfileCoordinator?
     weak var coordinator: ProfileCoordinator?
 
 
     var contact: DCContact? {
     var contact: DCContact? {
@@ -23,7 +24,8 @@ class ProfileViewController: UITableViewController {
         return nil
         return nil
     }
     }
 
 
-    init() {
+    init(dcContext: DcContext) {
+        self.dcContext = dcContext
         super.init(style: .plain)
         super.init(style: .plain)
     }
     }
 
 
@@ -43,7 +45,7 @@ class ProfileViewController: UITableViewController {
 
 
     func displayNewChat(contactId: Int) {
     func displayNewChat(contactId: Int) {
         let chatId = dc_create_chat_by_contact_id(mailboxPointer, UInt32(contactId))
         let chatId = dc_create_chat_by_contact_id(mailboxPointer, UInt32(contactId))
-        let chatVC = ChatViewController(chatId: Int(chatId))
+        let chatVC = ChatViewController(dcContext: dcContext, chatId: Int(chatId))
 
 
         chatVC.hidesBottomBarWhenPushed = true
         chatVC.hidesBottomBarWhenPushed = true
         navigationController?.pushViewController(chatVC, animated: true)
         navigationController?.pushViewController(chatVC, animated: true)

+ 58 - 41
deltachat-ios/Coordinator/AppCoordinator.swift

@@ -30,19 +30,19 @@ class AppCoordinator: NSObject, Coordinator {
         let nav = DCNavigationController(rootViewController: controller)
         let nav = DCNavigationController(rootViewController: controller)
         let settingsImage = UIImage(named: "contacts")
         let settingsImage = UIImage(named: "contacts")
         nav.tabBarItem = UITabBarItem(title: String.localized("contacts_title"), image: settingsImage, tag: 0)
         nav.tabBarItem = UITabBarItem(title: String.localized("contacts_title"), image: settingsImage, tag: 0)
-        let coordinator = ContactListCoordinator(navigationController: nav)
+        let coordinator = ContactListCoordinator(dcContext: dcContext, navigationController: nav)
         self.childCoordinators.append(coordinator)
         self.childCoordinators.append(coordinator)
         controller.coordinator = coordinator
         controller.coordinator = coordinator
         return nav
         return nav
     }()
     }()
 
 
     private lazy var mailboxController: UIViewController = {
     private lazy var mailboxController: UIViewController = {
-        let controller = MailboxViewController(chatId: Int(DC_CHAT_ID_DEADDROP), title: String.localized("mailbox"))
+        let controller = MailboxViewController(dcContext: dcContext, chatId: Int(DC_CHAT_ID_DEADDROP), title: String.localized("mailbox"))
         controller.disableWriting = true
         controller.disableWriting = true
         let nav = DCNavigationController(rootViewController: controller)
         let nav = DCNavigationController(rootViewController: controller)
         let settingsImage = UIImage(named: "message")
         let settingsImage = UIImage(named: "message")
         nav.tabBarItem = UITabBarItem(title: String.localized("mailbox"), image: settingsImage, tag: 1)
         nav.tabBarItem = UITabBarItem(title: String.localized("mailbox"), image: settingsImage, tag: 1)
-        let coordinator = MailboxCoordinator(navigationController: nav)
+        let coordinator = MailboxCoordinator(dcContext: dcContext, navigationController: nav)
         self.childCoordinators.append(coordinator)
         self.childCoordinators.append(coordinator)
         controller.coordinator = coordinator
         controller.coordinator = coordinator
         return nav
         return nav
@@ -64,7 +64,7 @@ class AppCoordinator: NSObject, Coordinator {
         let nav = DCNavigationController(rootViewController: controller)
         let nav = DCNavigationController(rootViewController: controller)
         let settingsImage = UIImage(named: "chat")
         let settingsImage = UIImage(named: "chat")
         nav.tabBarItem = UITabBarItem(title: String.localized("pref_chats"), image: settingsImage, tag: 3)
         nav.tabBarItem = UITabBarItem(title: String.localized("pref_chats"), image: settingsImage, tag: 3)
-        let coordinator = ChatListCoordinator(navigationController: nav)
+        let coordinator = ChatListCoordinator(dcContext: dcContext, navigationController: nav)
         self.childCoordinators.append(coordinator)
         self.childCoordinators.append(coordinator)
         controller.coordinator = coordinator
         controller.coordinator = coordinator
         return nav
         return nav
@@ -101,8 +101,8 @@ class AppCoordinator: NSObject, Coordinator {
     func showChat(chatId: Int) {
     func showChat(chatId: Int) {
         showTab(index: 3)
         showTab(index: 3)
         let navController = self.chatListController as! UINavigationController
         let navController = self.chatListController as! UINavigationController
-        let chatVC = ChatViewController(chatId: chatId)
-        let coordinator = ChatViewCoordinator(navigationController: navController, chatId: chatId)
+        let chatVC = ChatViewController(dcContext: dcContext, chatId: chatId)
+        let coordinator = ChatViewCoordinator(dcContext: dcContext, navigationController: navController, chatId: chatId)
         chatVC.coordinator = coordinator
         chatVC.coordinator = coordinator
         navController.pushViewController(chatVC, animated: true)
         navController.pushViewController(chatVC, animated: true)
     }
     }
@@ -135,26 +135,28 @@ extension AppCoordinator: UITabBarControllerDelegate {
 
 
 
 
 class ContactListCoordinator: Coordinator {
 class ContactListCoordinator: Coordinator {
+    var dcContext: DcContext
     let navigationController: UINavigationController
     let navigationController: UINavigationController
 
 
     var childCoordinators: [Coordinator] = []
     var childCoordinators: [Coordinator] = []
 
 
-    init(navigationController: UINavigationController) {
+    init(dcContext: DcContext, navigationController: UINavigationController) {
+        self.dcContext = dcContext
         self.navigationController = navigationController
         self.navigationController = navigationController
     }
     }
 
 
     func showContactDetail(contactId: Int) {
     func showContactDetail(contactId: Int) {
         let contactDetailController = ContactDetailViewController(contactId: contactId)
         let contactDetailController = ContactDetailViewController(contactId: contactId)
         contactDetailController.showChatCell = true
         contactDetailController.showChatCell = true
-        let coordinator = ContactDetailCoordinator(navigationController: navigationController)
+        let coordinator = ContactDetailCoordinator(dcContext: dcContext, navigationController: navigationController)
         childCoordinators.append(coordinator)
         childCoordinators.append(coordinator)
         contactDetailController.coordinator = coordinator
         contactDetailController.coordinator = coordinator
         navigationController.pushViewController(contactDetailController, animated: true)
         navigationController.pushViewController(contactDetailController, animated: true)
     }
     }
 
 
     func showChat(chatId: Int) {
     func showChat(chatId: Int) {
-        let chatVC = ChatViewController(chatId: chatId)
-        let coordinator = ChatViewCoordinator(navigationController: navigationController, chatId: chatId)
+        let chatVC = ChatViewController(dcContext: dcContext, chatId: chatId)
+        let coordinator = ChatViewCoordinator(dcContext: dcContext, navigationController: navigationController, chatId: chatId)
         childCoordinators.append(coordinator)
         childCoordinators.append(coordinator)
         chatVC.coordinator = coordinator
         chatVC.coordinator = coordinator
         navigationController.pushViewController(chatVC, animated: true)
         navigationController.pushViewController(chatVC, animated: true)
@@ -162,7 +164,7 @@ class ContactListCoordinator: Coordinator {
 
 
     func showNewContactController() {
     func showNewContactController() {
         let newContactController = NewContactController()
         let newContactController = NewContactController()
-        let coordinator = EditContactCoordinator(navigationController: navigationController)
+        let coordinator = EditContactCoordinator(dcContext: dcContext, navigationController: navigationController)
         childCoordinators.append(coordinator)
         childCoordinators.append(coordinator)
         newContactController.coordinator = coordinator
         newContactController.coordinator = coordinator
         newContactController.hidesBottomBarWhenPushed = true
         newContactController.hidesBottomBarWhenPushed = true
@@ -173,8 +175,8 @@ class ContactListCoordinator: Coordinator {
 // since mailbox and chatView -tab both use ChatViewController we want to be able to assign different functionality via coordinators -> therefore we override unneeded functions such as showChatDetail -> maybe find better solution in longterm
 // since mailbox and chatView -tab both use ChatViewController we want to be able to assign different functionality via coordinators -> therefore we override unneeded functions such as showChatDetail -> maybe find better solution in longterm
 class MailboxCoordinator: ChatViewCoordinator {
 class MailboxCoordinator: ChatViewCoordinator {
 
 
-    init(navigationController: UINavigationController) {
-        super.init(navigationController: navigationController, chatId: -1)
+    init(dcContext: DcContext, navigationController: UINavigationController) {
+        super.init(dcContext: dcContext, navigationController: navigationController, chatId: -1)
     }
     }
 
 
     override func showChatDetail(chatId _: Int) {
     override func showChatDetail(chatId _: Int) {
@@ -199,25 +201,27 @@ class ProfileCoordinator: Coordinator {
 }
 }
 
 
 class ChatListCoordinator: Coordinator {
 class ChatListCoordinator: Coordinator {
+    var dcContext: DcContext
     let navigationController: UINavigationController
     let navigationController: UINavigationController
 
 
     var childCoordinators: [Coordinator] = []
     var childCoordinators: [Coordinator] = []
 
 
-    init(navigationController: UINavigationController) {
+    init(dcContext: DcContext, navigationController: UINavigationController) {
+        self.dcContext = dcContext
         self.navigationController = navigationController
         self.navigationController = navigationController
     }
     }
 
 
     func showNewChatController() {
     func showNewChatController() {
         let newChatVC = NewChatViewController()
         let newChatVC = NewChatViewController()
-        let coordinator = NewChatCoordinator(navigationController: navigationController)
+        let coordinator = NewChatCoordinator(dcContext: dcContext, navigationController: navigationController)
         childCoordinators.append(coordinator)
         childCoordinators.append(coordinator)
         newChatVC.coordinator = coordinator
         newChatVC.coordinator = coordinator
         navigationController.pushViewController(newChatVC, animated: true)
         navigationController.pushViewController(newChatVC, animated: true)
     }
     }
 
 
     func showChat(chatId: Int) {
     func showChat(chatId: Int) {
-        let chatVC = ChatViewController(chatId: chatId)
-        let coordinator = ChatViewCoordinator(navigationController: navigationController, chatId: chatId)
+        let chatVC = ChatViewController(dcContext: dcContext, chatId: chatId)
+        let coordinator = ChatViewCoordinator(dcContext: dcContext, navigationController: navigationController, chatId: chatId)
         childCoordinators.append(coordinator)
         childCoordinators.append(coordinator)
         chatVC.coordinator = coordinator
         chatVC.coordinator = coordinator
         navigationController.pushViewController(chatVC, animated: true)
         navigationController.pushViewController(chatVC, animated: true)
@@ -320,17 +324,19 @@ class AccountSetupCoordinator: Coordinator {
 }
 }
 
 
 class NewChatCoordinator: Coordinator {
 class NewChatCoordinator: Coordinator {
+    var dcContext: DcContext
     let navigationController: UINavigationController
     let navigationController: UINavigationController
 
 
     private var childCoordinators: [Coordinator] = []
     private var childCoordinators: [Coordinator] = []
 
 
-    init(navigationController: UINavigationController) {
+    init(dcContext: DcContext, navigationController: UINavigationController) {
+        self.dcContext = dcContext
         self.navigationController = navigationController
         self.navigationController = navigationController
     }
     }
 
 
     func showNewGroupController() {
     func showNewGroupController() {
         let newGroupController = NewGroupViewController()
         let newGroupController = NewGroupViewController()
-        let coordinator = NewGroupCoordinator(navigationController: navigationController)
+        let coordinator = NewGroupCoordinator(dcContext: dcContext, navigationController: navigationController)
         childCoordinators.append(coordinator)
         childCoordinators.append(coordinator)
         newGroupController.coordinator = coordinator
         newGroupController.coordinator = coordinator
         navigationController.pushViewController(newGroupController, animated: true)
         navigationController.pushViewController(newGroupController, animated: true)
@@ -344,7 +350,7 @@ class NewChatCoordinator: Coordinator {
 
 
     func showNewContactController() {
     func showNewContactController() {
         let newContactController = NewContactController()
         let newContactController = NewContactController()
-        let coordinator = EditContactCoordinator(navigationController: navigationController)
+        let coordinator = EditContactCoordinator(dcContext: dcContext, navigationController: navigationController)
         childCoordinators.append(coordinator)
         childCoordinators.append(coordinator)
         newContactController.coordinator = coordinator
         newContactController.coordinator = coordinator
         navigationController.pushViewController(newContactController, animated: true)
         navigationController.pushViewController(newContactController, animated: true)
@@ -356,8 +362,8 @@ class NewChatCoordinator: Coordinator {
     }
     }
 
 
     func showChat(chatId: Int) {
     func showChat(chatId: Int) {
-        let chatViewController = ChatViewController(chatId: chatId)
-        let coordinator = ChatViewCoordinator(navigationController: navigationController, chatId: chatId)
+        let chatViewController = ChatViewController(dcContext: dcContext, chatId: chatId)
+        let coordinator = ChatViewCoordinator(dcContext: dcContext, navigationController: navigationController, chatId: chatId)
         childCoordinators.append(coordinator)
         childCoordinators.append(coordinator)
         chatViewController.coordinator = coordinator
         chatViewController.coordinator = coordinator
         navigationController.pushViewController(chatViewController, animated: true)
         navigationController.pushViewController(chatViewController, animated: true)
@@ -366,17 +372,19 @@ class NewChatCoordinator: Coordinator {
 }
 }
 
 
 class GroupChatDetailCoordinator: Coordinator {
 class GroupChatDetailCoordinator: Coordinator {
+    var dcContext: DcContext
     let navigationController: UINavigationController
     let navigationController: UINavigationController
 
 
     private var childCoordinators: [Coordinator] = []
     private var childCoordinators: [Coordinator] = []
 
 
-    init(navigationController: UINavigationController) {
+    init(dcContext: DcContext, navigationController: UINavigationController) {
+        self.dcContext = dcContext
         self.navigationController = navigationController
         self.navigationController = navigationController
     }
     }
 
 
     func showSingleChatEdit(contactId: Int) {
     func showSingleChatEdit(contactId: Int) {
         let editContactController = EditContactController(contactIdForUpdate: contactId)
         let editContactController = EditContactController(contactIdForUpdate: contactId)
-        let coordinator = EditContactCoordinator(navigationController: navigationController)
+        let coordinator = EditContactCoordinator(dcContext: dcContext, navigationController: navigationController)
         childCoordinators.append(coordinator)
         childCoordinators.append(coordinator)
         editContactController.coordinator = coordinator
         editContactController.coordinator = coordinator
         navigationController.pushViewController(editContactController, animated: true)
         navigationController.pushViewController(editContactController, animated: true)
@@ -397,13 +405,15 @@ class GroupChatDetailCoordinator: Coordinator {
 }
 }
 
 
 class ChatViewCoordinator: NSObject, Coordinator {
 class ChatViewCoordinator: NSObject, Coordinator {
+    var dcContext: DcContext
     let navigationController: UINavigationController
     let navigationController: UINavigationController
     let chatId: Int
     let chatId: Int
     var chatViewController: ChatViewController!
     var chatViewController: ChatViewController!
 
 
     var childCoordinators: [Coordinator] = []
     var childCoordinators: [Coordinator] = []
 
 
-    init(navigationController: UINavigationController, chatId: Int) {
+    init(dcContext: DcContext, navigationController: UINavigationController, chatId: Int) {
+        self.dcContext = dcContext
         self.navigationController = navigationController
         self.navigationController = navigationController
         self.chatId = chatId
         self.chatId = chatId
     }
     }
@@ -414,14 +424,14 @@ class ChatViewCoordinator: NSObject, Coordinator {
         case .SINGLE:
         case .SINGLE:
             if let contactId = chat.contactIds.first {
             if let contactId = chat.contactIds.first {
                 let contactDetailController = ContactDetailViewController(contactId: contactId)
                 let contactDetailController = ContactDetailViewController(contactId: contactId)
-                let coordinator = ContactDetailCoordinator(navigationController: navigationController)
+                let coordinator = ContactDetailCoordinator(dcContext: dcContext, navigationController: navigationController)
                 childCoordinators.append(coordinator)
                 childCoordinators.append(coordinator)
                 contactDetailController.coordinator = coordinator
                 contactDetailController.coordinator = coordinator
                 navigationController.pushViewController(contactDetailController, animated: true)
                 navigationController.pushViewController(contactDetailController, animated: true)
             }
             }
         case .GROUP, .VERYFIEDGROUP:
         case .GROUP, .VERYFIEDGROUP:
             let groupChatDetailViewController = GroupChatDetailViewController(chatId: chatId) // inherits from ChatDetailViewController
             let groupChatDetailViewController = GroupChatDetailViewController(chatId: chatId) // inherits from ChatDetailViewController
-            let coordinator = GroupChatDetailCoordinator(navigationController: navigationController)
+            let coordinator = GroupChatDetailCoordinator(dcContext: dcContext, navigationController: navigationController)
             childCoordinators.append(coordinator)
             childCoordinators.append(coordinator)
             groupChatDetailViewController.coordinator = coordinator
             groupChatDetailViewController.coordinator = coordinator
             navigationController.pushViewController(groupChatDetailViewController, animated: true)
             navigationController.pushViewController(groupChatDetailViewController, animated: true)
@@ -432,7 +442,7 @@ class ChatViewCoordinator: NSObject, Coordinator {
         let contactDetailController = ContactDetailViewController(contactId: contactId)
         let contactDetailController = ContactDetailViewController(contactId: contactId)
         contactDetailController.showChatCell = true
         contactDetailController.showChatCell = true
         //let nav = UINavigationController(rootViewController: contactDetailController)
         //let nav = UINavigationController(rootViewController: contactDetailController)
-        let coordinator = ContactDetailCoordinator(navigationController: navigationController)
+        let coordinator = ContactDetailCoordinator(dcContext: dcContext, navigationController: navigationController)
         childCoordinators.append(coordinator)
         childCoordinators.append(coordinator)
         contactDetailController.coordinator = coordinator
         contactDetailController.coordinator = coordinator
         navigationController.pushViewController(contactDetailController, animated: true)
         navigationController.pushViewController(contactDetailController, animated: true)
@@ -538,17 +548,19 @@ extension ChatViewCoordinator: UIImagePickerControllerDelegate, UINavigationCont
 }
 }
 
 
 class NewGroupCoordinator: Coordinator {
 class NewGroupCoordinator: Coordinator {
+    var dcContext: DcContext
     let navigationController: UINavigationController
     let navigationController: UINavigationController
 
 
     private var childCoordinators: [Coordinator] = []
     private var childCoordinators: [Coordinator] = []
 
 
-    init(navigationController: UINavigationController) {
+    init(dcContext: DcContext, navigationController: UINavigationController) {
+        self.dcContext = dcContext
         self.navigationController = navigationController
         self.navigationController = navigationController
     }
     }
 
 
     func showGroupNameController(contactIdsForGroup: Set<Int>) {
     func showGroupNameController(contactIdsForGroup: Set<Int>) {
         let groupNameController = GroupNameController(contactIdsForGroup: contactIdsForGroup)
         let groupNameController = GroupNameController(contactIdsForGroup: contactIdsForGroup)
-        let coordinator = GroupNameCoordinator(navigationController: navigationController)
+        let coordinator = GroupNameCoordinator(dcContext: dcContext, navigationController: navigationController)
         childCoordinators.append(coordinator)
         childCoordinators.append(coordinator)
         groupNameController.coordinator = coordinator
         groupNameController.coordinator = coordinator
         navigationController.pushViewController(groupNameController, animated: true)
         navigationController.pushViewController(groupNameController, animated: true)
@@ -556,17 +568,19 @@ class NewGroupCoordinator: Coordinator {
 }
 }
 
 
 class GroupNameCoordinator: Coordinator {
 class GroupNameCoordinator: Coordinator {
+    var dcContext: DcContext
     let navigationController: UINavigationController
     let navigationController: UINavigationController
 
 
     private var childCoordinators: [Coordinator] = []
     private var childCoordinators: [Coordinator] = []
 
 
-    init(navigationController: UINavigationController) {
+    init(dcContext: DcContext, navigationController: UINavigationController) {
+        self.dcContext = dcContext
         self.navigationController = navigationController
         self.navigationController = navigationController
     }
     }
 
 
     func showGroupChat(chatId: Int) {
     func showGroupChat(chatId: Int) {
-        let chatViewController = ChatViewController(chatId: chatId)
-        let coordinator = ChatViewCoordinator(navigationController: navigationController, chatId: chatId)
+        let chatViewController = ChatViewController(dcContext: dcContext, chatId: chatId)
+        let coordinator = ChatViewCoordinator(dcContext: dcContext, navigationController: navigationController, chatId: chatId)
         childCoordinators.append(coordinator)
         childCoordinators.append(coordinator)
         chatViewController.coordinator = coordinator
         chatViewController.coordinator = coordinator
         navigationController.popToRootViewController(animated: false)
         navigationController.popToRootViewController(animated: false)
@@ -575,17 +589,19 @@ class GroupNameCoordinator: Coordinator {
 }
 }
 
 
 class ContactDetailCoordinator: Coordinator, ContactDetailCoordinatorProtocol {
 class ContactDetailCoordinator: Coordinator, ContactDetailCoordinatorProtocol {
+    var dcContext: DcContext
     let navigationController: UINavigationController
     let navigationController: UINavigationController
 
 
     private var childCoordinators: [Coordinator] = []
     private var childCoordinators: [Coordinator] = []
 
 
-    init(navigationController: UINavigationController) {
+    init(dcContext: DcContext, navigationController: UINavigationController) {
+        self.dcContext = dcContext
         self.navigationController = navigationController
         self.navigationController = navigationController
     }
     }
 
 
     func showChat(chatId: Int) {
     func showChat(chatId: Int) {
-        let chatViewController = ChatViewController(chatId: chatId)
-        let coordinator = ChatViewCoordinator(navigationController: navigationController, chatId: chatId)
+        let chatViewController = ChatViewController(dcContext: dcContext, chatId: chatId)
+        let coordinator = ChatViewCoordinator(dcContext: dcContext, navigationController: navigationController, chatId: chatId)
         childCoordinators.append(coordinator)
         childCoordinators.append(coordinator)
         chatViewController.coordinator = coordinator
         chatViewController.coordinator = coordinator
         navigationController.popToRootViewController(animated: false)
         navigationController.popToRootViewController(animated: false)
@@ -594,7 +610,7 @@ class ContactDetailCoordinator: Coordinator, ContactDetailCoordinatorProtocol {
 
 
     func showEditContact(contactId: Int) {
     func showEditContact(contactId: Int) {
         let editContactController = EditContactController(contactIdForUpdate: contactId)
         let editContactController = EditContactController(contactIdForUpdate: contactId)
-        let coordinator = EditContactCoordinator(navigationController: navigationController)
+        let coordinator = EditContactCoordinator(dcContext: dcContext, navigationController: navigationController)
         childCoordinators.append(coordinator)
         childCoordinators.append(coordinator)
         editContactController.coordinator = coordinator
         editContactController.coordinator = coordinator
         navigationController.pushViewController(editContactController, animated: true)
         navigationController.pushViewController(editContactController, animated: true)
@@ -614,12 +630,13 @@ class EditGroupCoordinator: Coordinator {
 }
 }
 
 
 class EditContactCoordinator: Coordinator, EditContactCoordinatorProtocol {
 class EditContactCoordinator: Coordinator, EditContactCoordinatorProtocol {
-
+    var dcContext: DcContext
     let navigationController: UINavigationController
     let navigationController: UINavigationController
 
 
     var childCoordinators: [Coordinator] = []
     var childCoordinators: [Coordinator] = []
 
 
-    init(navigationController: UINavigationController) {
+    init(dcContext: DcContext, navigationController: UINavigationController) {
+        self.dcContext = dcContext
         self.navigationController = navigationController
         self.navigationController = navigationController
     }
     }
 
 
@@ -628,8 +645,8 @@ class EditContactCoordinator: Coordinator, EditContactCoordinatorProtocol {
     }
     }
 
 
     func showChat(chatId: Int) {
     func showChat(chatId: Int) {
-        let chatViewController = ChatViewController(chatId: chatId)
-        let coordinator = ChatViewCoordinator(navigationController: navigationController, chatId: chatId)
+        let chatViewController = ChatViewController(dcContext: dcContext, chatId: chatId)
+        let coordinator = ChatViewCoordinator(dcContext: dcContext, navigationController: navigationController, chatId: chatId)
         coordinator.chatViewController = chatViewController
         coordinator.chatViewController = chatViewController
         childCoordinators.append(coordinator)
         childCoordinators.append(coordinator)
         chatViewController.coordinator = coordinator
         chatViewController.coordinator = coordinator

+ 7 - 0
deltachat-ios/DC/Wrapper.swift

@@ -128,6 +128,13 @@ class DcContext {
         dc_stop_ongoing_process(contextPointer)
         dc_stop_ongoing_process(contextPointer)
     }
     }
 
 
+    func getMsgInfo(msgId: Int) -> String {
+        if let cString = dc_get_msg_info(self.contextPointer, UInt32(msgId)) {
+            return String(cString: cString)
+        }
+        return "ErrGetMsgInfo"
+    }
+
 }
 }
 
 
 class DcLot {
 class DcLot {