Bastian van de Wetering 6 жил өмнө
parent
commit
6be8a053ff

+ 5 - 3
deltachat-ios/AccountSetupController.swift

@@ -13,6 +13,7 @@ class AccountSetupController: UITableViewController {
 
 	private var backupProgressObserver: Any?
 	private var configureProgressObserver: Any?
+	private var oauth2Observer: Any?
 
 	private lazy var hudHandler: HudHandler = {
 		let hudHandler = HudHandler(parentView: self.tableView)
@@ -162,6 +163,9 @@ class AccountSetupController: UITableViewController {
 		if let configureProgressObserver = self.configureProgressObserver {
 			nc.removeObserver(configureProgressObserver)
 		}
+		if let oauth2Observer = self.oauth2Observer {
+			nc.removeObserver(oauth2Observer)
+		}
 	}
 
 	// MARK: - Table view data source
@@ -320,7 +324,7 @@ class AccountSetupController: UITableViewController {
 			let confirm = UIAlertAction(title: "Confirm", style: .default, handler: {
 				[unowned self] _ in
 				let nc = NotificationCenter.default
-				nc.addObserver(self, selector: #selector(self.oauthLoginApproved), name: NSNotification.Name.init("oauthLoginApproved"), object: nil)
+				self.oauth2Observer = nc.addObserver(self, selector: #selector(self.oauthLoginApproved), name: NSNotification.Name.init("oauthLoginApproved"), object: nil)
 				self.launchOAuthBrowserWindow(url: url)
 			})
 			let cancel = UIAlertAction(title: "Cancel", style: .cancel, handler: {
@@ -349,8 +353,6 @@ class AccountSetupController: UITableViewController {
 	}
 
 	private func launchOAuthBrowserWindow(url: URL) {
-//		let embeddedSafari = SFSafariViewController(url: url)
-//		self.navigationController?.pushViewController(embeddedSafari, animated: true)
 		UIApplication.shared.open(url) // this opens safari as seperate app
 	}
 

+ 3 - 3
deltachat-ios/Extensions/Extensions.swift

@@ -57,21 +57,21 @@ extension CharacterSet {
 }
 
 extension URLSession {
-	func synchronousDataTask(with url: URL) -> (Data?, URLResponse?, Error?) {
+	func synchronousDataTask(request: URLRequest) -> (Data?, URLResponse?, Error?) {
 		var data: Data?
 		var response: URLResponse?
 		var error: Error?
 
 		let semaphore = DispatchSemaphore(value: 0)
 
-		let dataTask = self.dataTask(with: url) {
+		let task = self.dataTask(with: request) {
 			data = $0
 			response = $1
 			error = $2
 
 			semaphore.signal()
 		}
-		dataTask.resume()
+		task.resume()
 
 		_ = semaphore.wait(timeout: .distantFuture)
 

+ 1 - 19
deltachat-ios/events.swift

@@ -31,11 +31,6 @@ public func callbackSwift(event: CInt, data1: CUnsignedLong, data2: CUnsignedLon
 		guard let baseUrl = URL(string: base), let url = URL(string: urlString) else {
 			return nil
 		}
-
-		var data: Data?
-		var repsonse: URLResponse?
-		var error: Error?
-
 		var request = URLRequest(url: baseUrl)
 		request.httpMethod = "POST"
 
@@ -43,23 +38,10 @@ public func callbackSwift(event: CInt, data1: CUnsignedLong, data2: CUnsignedLon
 			request.httpBody = params.percentEscaped().data(using: .utf8)
 		}
 
-		let semaphore = DispatchSemaphore(value: 0)
-
-		let task = URLSession.shared.dataTask(with: request) {
-			data = $0
-			repsonse = $1
-			error = $2
-
-			semaphore.signal()
-		}
-		task.resume()
-		_ = semaphore.wait(timeout: .distantFuture)
-
-
+		let (data, _, _) = URLSession.shared.synchronousDataTask(request: request) // returns (data, response, error)
 		guard let receivedData = data, let dataString = String(bytes: receivedData, encoding: .utf8) else {
 			return nil
 		}
-		print(dataString)
 		let p = UnsafePointer(strdup(dataString))
 		return p
 	case DC_EVENT_HTTP_GET: