@@ -25,19 +25,19 @@ extension BenefitPayButton:WKNavigationDelegate {
2525
2626 guard let url = navigationAction. request. url else { return }
2727
28- if url. absoluteString. hasPrefix ( payButtonType. webSdkScheme ( ) ) {
29- print ( " navigationAction " , url. absoluteString)
28+ if url. absoluteString. lowercased ( ) . hasPrefix ( payButtonType. webSdkScheme ( ) ) {
29+ print ( " navigationAction1 " , url. absoluteString)
3030 action = . cancel
3131 } else {
32- print ( " navigationAction " , url. absoluteString)
32+ print ( " navigationAction2 " , url. absoluteString)
3333 }
3434 // In all cases when we get a feedback from the web view we will need to hide the loader if it is being displayed
35- self . loadingView. isHidden = true
3635 // Let us see if the web sdk is telling us something
37- if ( url. absoluteString. contains ( payButtonType. webSdkScheme ( ) ) ) {
36+ if ( url. absoluteString. lowercased ( ) . contains ( payButtonType. webSdkScheme ( ) ) ) {
3837 switch url. absoluteString {
3938 case _ where url. absoluteString. contains ( CallBackSchemeEnum . onError. rawValue) :
4039 self . handleOnError ( data: tap_extractDataFromUrl ( url, for: " data " , shouldBase64Decode: true ) )
40+ self . loadingView. isHidden = true
4141 break
4242 case _ where url. absoluteString. contains ( CallBackSchemeEnum . onOrderCreated. rawValue) :
4343 delegate? . onOrderCreated ? ( data: tap_extractDataFromUrl ( url, for: " data " , shouldBase64Decode: false ) )
@@ -46,38 +46,23 @@ extension BenefitPayButton:WKNavigationDelegate {
4646 delegate? . onChargeCreated ? ( data: tap_extractDataFromUrl ( url, for: " data " , shouldBase64Decode: true ) )
4747 break
4848 case _ where url. absoluteString. contains ( CallBackSchemeEnum . onSuccess. rawValue) :
49-
50- let notificationContent = UNMutableNotificationContent ( )
51- notificationContent. title = " Payment updated "
52- notificationContent. body = " Return to \( Bundle . main. infoDictionary ? [ kCFBundleNameKey as String ] as? String ?? " the app " ) to complete your transaction. "
53- let trigger = UNTimeIntervalNotificationTrigger ( timeInterval: 0.5 ,
54- repeats: false )
55- let request = UNNotificationRequest ( identifier: " testNotification " ,
56- content: notificationContent,
57- trigger: trigger)
58-
59- UNUserNotificationCenter . current ( ) . add ( request) { ( error) in
60- if let error = error {
61- print ( " Notification Error: " , error)
62- }
63- }
64- // If app is in background we will not do anything and will save the data onSuccess so when he focuses again, we dispatch the event
65- if UIApplication . shared. applicationState == . active {
66- self . handleOnSuccess ( url: url)
67- } else {
68- self . webView. isHidden = true
69- self . onSuccessURL = url
70- }
49+ self . handleOnSuccess ( url: url)
7150 break
7251 case _ where url. absoluteString. contains ( CallBackSchemeEnum . onReady. rawValue) :
52+ self . loadingView. isHidden = true
7353 delegate? . onReady ? ( )
7454 break
7555 case _ where url. absoluteString. contains ( CallBackSchemeEnum . onClick. rawValue) :
7656 self . handleOnClick ( )
7757 break
7858 case _ where url. absoluteString. contains ( CallBackSchemeEnum . onCancel. rawValue) :
79- if self . onSuccessURL == nil {
80- self . removeBenefitPayPopupEntry ( handleOnCancel: true ) {
59+ self . loadingView. isHidden = true
60+ self . removeBenefitPayPopupEntry ( handleOnCancel: true ) {
61+ DispatchQueue . main. asyncAfter ( deadline: . now( ) + . seconds( 3 ) ) {
62+ guard !BenefitPayButton. onSuccessCalled else {
63+ BenefitPayButton . onSuccessCalled = false
64+ return
65+ }
8166 self . delegate? . onCanceled ? ( )
8267 }
8368 }
@@ -105,19 +90,21 @@ extension BenefitPayButton:WKNavigationDelegate {
10590 self . loadingView. isHidden = false
10691 // Handle the on cancel and inform the consumer app that on click is triggered
10792 self . handleOnCancel = true
93+ BenefitPayButton . onSuccessCalled = false
10894 delegate? . onClick ? ( )
10995 }
11096
11197 func handleOnSuccess( url: URL ) {
98+ BenefitPayButton . onSuccessCalled = true
11299 self . webView. isHidden = false
113100 if !self . removeBenefitPayAppEntry ( onDismiss: {
114101 self . removeBenefitPayPopupEntry ( handleOnCancel: false ) {
115102 self . delegate? . onSuccess ? ( data: tap_extractDataFromUrl ( url, for: " data " , shouldBase64Decode: true ) )
116103 //self.openUrl(url: self.currentlyLoadedConfigurations)
117104 }
118105 } ) {
106+ self . delegate? . onSuccess ? ( data: tap_extractDataFromUrl ( url, for: " data " , shouldBase64Decode: true ) )
119107 self . removeBenefitPayPopupEntry ( handleOnCancel: false ) {
120- self . delegate? . onSuccess ? ( data: tap_extractDataFromUrl ( url, for: " data " , shouldBase64Decode: true ) )
121108 //self.openUrl(url: self.currentlyLoadedConfigurations)
122109 }
123110 }
@@ -130,19 +117,43 @@ extension BenefitPayButton:WKNavigationDelegate {
130117
131118 if !self . removeBenefitPayAppEntry ( onDismiss: {
132119 if ( self . removeBenefitPayPopupEntry ( handleOnCancel: false , onDismiss: {
133- self . delegate? . onError ? ( data: data)
120+ DispatchQueue . main. asyncAfter ( deadline: . now( ) + . seconds( 3 ) ) {
121+ guard !BenefitPayButton. onSuccessCalled else {
122+ BenefitPayButton . onSuccessCalled = false
123+ return
124+ }
125+ self . delegate? . onError ? ( data: data)
126+ }
134127 self . webView. isUserInteractionEnabled = true
135128 } ) ) { } else {
136- self . delegate? . onError ? ( data: data)
129+ DispatchQueue . main. asyncAfter ( deadline: . now( ) + . seconds( 3 ) ) {
130+ guard !BenefitPayButton. onSuccessCalled else {
131+ BenefitPayButton . onSuccessCalled = false
132+ return
133+ }
134+ self . delegate? . onError ? ( data: data)
135+ }
137136 self . webView. isUserInteractionEnabled = true
138137 }
139138 } ) {
140139 if ( self . removeBenefitPayPopupEntry ( handleOnCancel: false ) {
141- self . delegate? . onError ? ( data: data)
140+ DispatchQueue . main. asyncAfter ( deadline: . now( ) + . seconds( 3 ) ) {
141+ guard !BenefitPayButton. onSuccessCalled else {
142+ BenefitPayButton . onSuccessCalled = false
143+ return
144+ }
145+ self . delegate? . onError ? ( data: data)
146+ }
142147 self . webView. isUserInteractionEnabled = true
143148 //self.openUrl(url: self.currentlyLoadedConfigurations)
144149 } ) { } else {
145- self . delegate? . onError ? ( data: data)
150+ DispatchQueue . main. asyncAfter ( deadline: . now( ) + . seconds( 3 ) ) {
151+ guard !BenefitPayButton. onSuccessCalled else {
152+ BenefitPayButton . onSuccessCalled = false
153+ return
154+ }
155+ self . delegate? . onError ? ( data: data)
156+ }
146157 self . webView. isUserInteractionEnabled = true
147158 }
148159 }
0 commit comments