Skip to content

Commit

Permalink
Merge branch 'bug/CXCDC-12787-isFinalizeFlow' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
sagishm committed Sep 26, 2023
2 parents b7db690 + 8769e30 commit a838f87
Showing 1 changed file with 27 additions and 10 deletions.
37 changes: 27 additions & 10 deletions GigyaSwift/Global/Plugins/PluginViewWrapper.swift
Original file line number Diff line number Diff line change
Expand Up @@ -64,16 +64,10 @@ class PluginViewWrapper<T: GigyaAccountProtocol>: PluginViewWrapperProtocol {
// make completionHandler to know when need to dismiss viewController
eventHandler = { [weak self] result in
switch result {
case .onHide, .onCanceled:
pluginViewController?.webView.uiDelegate = nil
pluginViewController?.webView.navigationDelegate = nil
pluginViewController?.dismiss(animated: true, completion: nil)
pluginViewController = nil
self?.eventHandler = nil
self?.webBridge?.webView = nil
self?.webBridge?.viewController = nil
self?.webBridge = nil
self?.completion(result)
case .onHide(let params):
self?.validateBeforeHide(params: params, pluginViewController: &pluginViewController, result: result)
case .onCanceled:
self?.dispose(pluginViewController: &pluginViewController, result: result)
default:
break
}
Expand Down Expand Up @@ -156,6 +150,29 @@ class PluginViewWrapper<T: GigyaAccountProtocol>: PluginViewWrapperProtocol {
return html
}

private func dispose(pluginViewController: inout PluginViewController<T>?, result: GigyaPluginEvent<T>) {
pluginViewController?.webView.uiDelegate = nil
pluginViewController?.webView.navigationDelegate = nil
pluginViewController?.dismiss(animated: true, completion: nil)
pluginViewController = nil
self.eventHandler = nil
self.webBridge?.webView = nil
self.webBridge?.viewController = nil
self.webBridge = nil
self.completion(result)
}

private func validateBeforeHide(params: PluginEventData, pluginViewController: inout PluginViewController<T>?, result: GigyaPluginEvent<T>) {
guard let isFlowFinalized = Bool(String(describing: params["isFlowFinalized"] ?? "false")) else {
self.completion(result)
return
}

if isFlowFinalized == true {
self.dispose(pluginViewController: &pluginViewController, result: result)
}
}

deinit {
GigyaLogger.log(with: self, message: "deinit")
}
Expand Down

0 comments on commit a838f87

Please sign in to comment.