From d50b526c5ed0b6bb23a5e79ffd691d2fec819b07 Mon Sep 17 00:00:00 2001 From: ahmadAlfhajri <82349749+ahmadAlfhajri@users.noreply.github.com> Date: Tue, 24 Dec 2024 12:24:37 +0800 Subject: [PATCH] Fix memory leak on WebViewController --- .../WebViewController/AuthenticationWebviewController.swift | 4 ++-- Sources/Xendit/WebViewController/WebViewController.swift | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Sources/Xendit/WebViewController/AuthenticationWebviewController.swift b/Sources/Xendit/WebViewController/AuthenticationWebviewController.swift index aff770c..b321dfe 100644 --- a/Sources/Xendit/WebViewController/AuthenticationWebviewController.swift +++ b/Sources/Xendit/WebViewController/AuthenticationWebviewController.swift @@ -19,8 +19,8 @@ class AuthenticationProvider: AuthenticationProviderProtocol { func authenticate(fromViewController: UIViewController, URL: String, authentication: XenditAuthentication, completion: @escaping (XenditAuthentication?, XenditError?) -> Void) { let webViewController = AuthenticationWebViewController(URL: URL) webViewController.authentication = authentication - webViewController.authenticateCompletion = { updatedAuthentication, error in - webViewController.dismiss(animated: true, completion: nil) + webViewController.authenticateCompletion = { [weak webViewController] updatedAuthentication, error in + webViewController?.dismiss(animated: true, completion: nil) completion(updatedAuthentication, error) } DispatchQueue.main.async { diff --git a/Sources/Xendit/WebViewController/WebViewController.swift b/Sources/Xendit/WebViewController/WebViewController.swift index 9a6beee..c32e4a7 100755 --- a/Sources/Xendit/WebViewController/WebViewController.swift +++ b/Sources/Xendit/WebViewController/WebViewController.swift @@ -20,8 +20,8 @@ class CardAuthenticationProvider: CardAuthenticationProviderProtocol { let webViewController = WebViewController(URL: URL) webViewController.token = authenticatedToken - webViewController.authenticateCompletion = { (token, error) -> Void in - webViewController.dismiss(animated: true, completion: nil) + webViewController.authenticateCompletion = { [weak webViewController] (token, error) -> Void in + webViewController?.dismiss(animated: true, completion: nil) guard error == nil else { return completion(nil, error) }