Forráskód Böngészése

creating new contact and pressing enter now goes directly into created chat

Bastian van de Wetering 6 éve
szülő
commit
a87e4fc7aa

+ 42 - 23
deltachat-ios/Controller/NewContactController.swift

@@ -8,7 +8,44 @@
 
 import UIKit
 
+class EditContactController: NewContactController {
+
+	// for editing existing contacts (only
+	// the name may be edited, therefore disable
+	// the email field)
+	init(contactIdForUpdate: Int) {
+		super.init()
+		title = "Edit Contact"
+
+		let contact = MRContact(id: contactIdForUpdate)
+		nameCell.textField.text = contact.name
+		emailCell.textField.text = contact.email
+		emailCell.textField.isEnabled = false
+		emailCell.contentView.alpha = 0.3
+
+		model.name = contact.name
+		model.email = contact.email
+
+		if contactIsValid() {
+			doneButton?.isEnabled = true
+		}
+	}
+
+	required init?(coder _: NSCoder) {
+		fatalError("init(coder:) has not been implemented")
+	}
+
+	@objc override func saveContactButtonPressed() {
+		dc_create_contact(mailboxPointer, model.name, model.email)
+		coordinator?.navigateBack()
+	}
+
+}
+
 class NewContactController: UITableViewController {
+
+	weak var coordinator: EditContactCoordinatorProtocol?
+
   let emailCell = TextFieldCell.makeEmailCell()
   let nameCell = TextFieldCell.makeNameCell()
   var doneButton: UIBarButtonItem?
@@ -30,26 +67,7 @@ class NewContactController: UITableViewController {
 
   let cells: [UITableViewCell]
 
-  // for editing existing contacts (only
-  // the name may be edited, therefore disable
-  // the email field)
-  convenience init(contactIdForUpdate: Int) {
-    self.init()
-    title = "Edit Contact"
 
-    let contact = MRContact(id: contactIdForUpdate)
-    nameCell.textField.text = contact.name
-    emailCell.textField.text = contact.email
-    emailCell.textField.isEnabled = false
-    emailCell.contentView.alpha = 0.3
-
-    model.name = contact.name
-    model.email = contact.email
-
-    if contactIsValid() {
-      doneButton?.isEnabled = true
-    }
-  }
 
   // for creating a new contact
   init() {
@@ -100,12 +118,13 @@ class NewContactController: UITableViewController {
   }
 
   @objc func saveContactButtonPressed() {
-    dc_create_contact(mailboxPointer, model.name, model.email)
-    navigationController?.popViewController(animated: true)
-  }
+		let contactId = dc_create_contact(mailboxPointer, model.name, model.email)
+		let chatId = Int(dc_create_chat_by_contact_id(mailboxPointer, UInt32(contactId)))
+		coordinator?.showChat(chatId: chatId)
+	}
 
   @objc func cancelButtonPressed() {
-    navigationController?.popViewController(animated: true)
+		coordinator?.navigateBack()
   }
 
   required init?(coder _: NSCoder) {

+ 37 - 4
deltachat-ios/Coordinator/AppCoordinator.swift

@@ -297,6 +297,9 @@ class NewChatCoordinator: Coordinator {
 
 	func showNewContactController() {
 		let newContactController = NewContactController()
+		let coordinator = EditContactCoordinator(navigationController: navigationController)
+		childCoordinators.append(coordinator)
+		newContactController.coordinator = coordinator
 		navigationController.pushViewController(newContactController, animated: true)
 	}
 
@@ -325,8 +328,11 @@ class GroupChatDetailCoordinator: Coordinator {
 	}
 
 	func showSingleChatEdit(contactId: Int) {
-		let newContactController = NewContactController(contactIdForUpdate: contactId)
-		navigationController.pushViewController(newContactController, animated: true)
+		let editContactController = EditContactController(contactIdForUpdate: contactId)
+		let coordinator = EditContactCoordinator(navigationController: navigationController)
+		childCoordinators.append(coordinator)
+		editContactController.coordinator = coordinator
+		navigationController.pushViewController(editContactController, animated: true)
 	}
 
 	func showAddGroupMember(chatId: Int) {
@@ -440,8 +446,11 @@ class ContactDetailCoordinator: Coordinator, ContactDetailCoordinatorProtocol {
 	}
 
 	func showEditContact(contactId: Int) {
-		let newContactController = NewContactController(contactIdForUpdate: contactId)
-		navigationController.pushViewController(newContactController, animated: true)
+		let editContactController = EditContactController(contactIdForUpdate: contactId)
+		let coordinator = EditContactCoordinator(navigationController: navigationController)
+		childCoordinators.append(coordinator)
+		editContactController.coordinator = coordinator
+		navigationController.pushViewController(editContactController, animated: true)
 	}
 }
 
@@ -457,7 +466,31 @@ class EditGroupCoordinator: Coordinator {
 	}
 }
 
+class EditContactCoordinator: Coordinator, EditContactCoordinatorProtocol {
+
+	let navigationController: UINavigationController
+
+	init(navigationController: UINavigationController) {
+		self.navigationController = navigationController
+	}
+
+	func navigateBack() {
+		navigationController.popViewController(animated: true)
+	}
+
+	func showChat(chatId: Int) {
+
+	}
+
+
+}
+
 protocol ContactDetailCoordinatorProtocol: class {
 	func showEditContact(contactId: Int)
 	func showChat(chatId: Int)
 }
+
+protocol EditContactCoordinatorProtocol: class {
+	func navigateBack()
+	func showChat(chatId: Int)
+}