Ver código fonte

in contactDetail was an index error

Bastian van de Wetering 6 anos atrás
pai
commit
61267bdca8

+ 24 - 12
deltachat-ios/Controller/ContactDetailViewController.swift

@@ -9,6 +9,9 @@
 import UIKit
 
 class ContactDetailViewController: UITableViewController {
+
+	weak var coordinator: ContactDetailCoordinator?
+
   let contactId: Int
 
   var contact: MRContact {
@@ -24,18 +27,17 @@ class ContactDetailViewController: UITableViewController {
     fatalError("init(coder:) has not been implemented")
   }
 
+	override func viewDidLoad() {
+		super.viewDidLoad()
+		title = "Info"
+
+	}
+
   override func viewWillAppear(_: Bool) {
     navigationController?.navigationBar.prefersLargeTitles = false
     tableView.reloadData()
   }
 
-  func displayNewChat(contactId: Int) {
-    let chatId = dc_create_chat_by_contact_id(mailboxPointer, UInt32(contactId))
-    let chatVC = ChatViewController(chatId: Int(chatId))
-
-    chatVC.hidesBottomBarWhenPushed = true
-    navigationController?.pushViewController(chatVC, animated: true)
-  }
 
   override func didReceiveMemoryWarning() {
     super.didReceiveMemoryWarning()
@@ -82,16 +84,16 @@ class ContactDetailViewController: UITableViewController {
   override func tableView(_: UITableView, didSelectRowAt indexPath: IndexPath) {
     let row = indexPath.row
 
-    if row == 1 {
+    if row == 0 {
       let alert = UIAlertController(title: "Not implemented", message: "Settings are not implemented yet.", preferredStyle: .alert)
       alert.addAction(UIAlertAction(title: "Ok", style: .default, handler: nil))
       present(alert, animated: true, completion: nil)
     }
-    if row == 2 {
+    if row == 1 {
       let newContactController = NewContactController(contactIdForUpdate: contactId)
       navigationController?.pushViewController(newContactController, animated: true)
     }
-    if row == 3 {
+    if row == 2 {
       displayNewChat(contactId: contactId)
     }
   }
@@ -114,9 +116,7 @@ class ContactDetailViewController: UITableViewController {
       } else {
         contactCell.setBackupImage(name: contact.name, color: contact.color)
       }
-
       contactCell.setVerified(isVerified: contact.isVerified)
-
       return contactCell
     }
 
@@ -125,4 +125,16 @@ class ContactDetailViewController: UITableViewController {
 
     return vw
   }
+
+	private func displayNewChat(contactId: Int) {
+		let chatId = dc_create_chat_by_contact_id(mailboxPointer, UInt32(contactId))
+		coordinator?.showChat(chatId: Int(chatId))
+		/*
+		let chatVC = ChatViewController(chatId: Int(chatId))
+
+		chatVC.hidesBottomBarWhenPushed = true
+		navigationController?.pushViewController(chatVC, animated: true)
+		*/
+}
+
 }

+ 27 - 2
deltachat-ios/Coordinator/AppCoordinator.swift

@@ -110,13 +110,18 @@ class AppCoordinator: NSObject, Coordinator, UITabBarControllerDelegate {
 class ContactListCoordinator: Coordinator {
   let navigationController: UINavigationController
 
+	var childCoordinators: [Coordinator] = []
+
   init(navigationController: UINavigationController) {
     self.navigationController = navigationController
 	}
 
 	func showContactDetail(contactId: Int) {
-		let contactProfileController = ContactDetailViewController(contactId: contactId)
-		navigationController.pushViewController(contactProfileController, animated: true)
+		let contactDetailController = ContactDetailViewController(contactId: contactId)
+		let coordinator = ContactDetailCoordinator(navigationController: navigationController)
+		childCoordinators.append(coordinator)
+		contactDetailController.coordinator = coordinator
+		navigationController.pushViewController(contactDetailController, animated: true)
 
 	}
 }
@@ -286,3 +291,23 @@ class GroupNameCoordinator: Coordinator {
     navigationController.pushViewController(chatViewController, animated: true)
   }
 }
+
+class ContactDetailCoordinator: Coordinator {
+	let navigationController: UINavigationController
+
+	private var childCoordinators: [Coordinator] = []
+
+	init(navigationController: UINavigationController) {
+		self.navigationController = navigationController
+	}
+
+	func showChat(chatId: Int) {
+		let chatViewController = ChatViewController(chatId: chatId)
+		let coordinator = ChatViewCoordinator(navigationController: navigationController)
+		childCoordinators.append(coordinator)
+		chatViewController.coordinator = coordinator
+		navigationController.popToRootViewController(animated: false)
+		navigationController.pushViewController(chatViewController, animated: true)
+	}
+
+}