@@ -61,8 +61,8 @@ public class TeadsWebViewHelper: NSObject, WKScriptMessageHandler {
6161
6262 private var isJsReady = false
6363
64- private var slotOpenner : ( ( ) -> Void ) ?
65- private var slotPositionAvailable : ( ( WKWebView , SlotPosition ) -> Void ) ?
64+ private var slotOpener : ( ( ) -> Void ) ?
65+ private var slotOpportunity : ( ( WKWebView , SlotPosition ) -> Void ) ?
6666
6767 /// Init the Teads webView helper
6868 ///
@@ -130,19 +130,22 @@ public class TeadsWebViewHelper: NSObject, WKScriptMessageHandler {
130130 /// insert the slot in the webview with the selector
131131 private func insertSlot( ) {
132132 //add a timeout in case we are not able to find the slot
133- let timer = Timer ( timeInterval: 4 , repeats: false ) { [ delegate] _ in
134- delegate? . webViewHelperSlotNotFound ( )
133+ let timer = Timer ( timeInterval: 4 , repeats: false ) { [ weak self] _ in
134+ self ? . slotOpener = nil
135+ self ? . delegate? . webViewHelperSlotNotFound ( )
135136 }
136137 noSlotTimer = timer
137138 RunLoop . main. add ( timer, forMode: . common)
138139
139140 evaluateBootstrapInput ( JSBootstrapInput . insertPlaceholder ( selector) ) { [ weak self] ( _, error) in
140141 if error != nil {
142+ self ? . slotOpener = nil
141143 self ? . delegate? . webViewHelperOnError ( error: " insertSlot failed " )
142144 self ? . delegate? . webViewHelperSlotNotFound ( )
143145 self ? . noSlotTimer? . invalidate ( )
146+ } else {
147+ self ? . slotOpener ? ( )
144148 }
145- self ? . slotOpenner ? ( )
146149 }
147150 }
148151
@@ -160,7 +163,7 @@ public class TeadsWebViewHelper: NSObject, WKScriptMessageHandler {
160163 }
161164
162165 public func openSlot( adView: UIView , adRatio: TeadsAdRatio = . default) {
163- slotOpenner = { [ self ] in
166+ slotOpener = { [ self ] in
164167 //update slot with the right ratio
165168 self . updateSlot ( adRatio: adRatio)
166169
@@ -176,10 +179,10 @@ public class TeadsWebViewHelper: NSObject, WKScriptMessageHandler {
176179 delegate? . webViewHelperOnError ( error: " openSlot failed " )
177180 }
178181 }
179- self . slotOpenner = nil
182+ self . slotOpener = nil
180183 }
181184 if isJsReady {
182- slotOpenner ? ( )
185+ slotOpener ? ( )
183186 }
184187 }
185188
@@ -289,11 +292,12 @@ public class TeadsWebViewHelper: NSObject, WKScriptMessageHandler {
289292 guard let webView = self . webView else {
290293 return
291294 }
292- slotPositionAvailable ? ( webView, position)
295+ slotOpportunity ? ( webView, position)
293296
294297 guard let adView = self . adView else {
295298 return
296299 }
300+
297301 let adViewHTMLElementHeight = position. bottom - position. top
298302 //when the adView is from Admob we can't update the frame without having a new request, so the update is done with an Admob method in the controller
299303 var shouldUpdateAdViewFrame : Bool {
@@ -326,7 +330,7 @@ public class TeadsWebViewHelper: NSObject, WKScriptMessageHandler {
326330 /// - adOpportunityTrackerView: the view that will monitor your inventory
327331 ///
328332 @objc public func setAdOpportunityTrackerView( _ adOpportunityTrackerView: TeadsAdOpportunityTrackerView ) {
329- slotPositionAvailable = { [ weak self] webView, position in
333+ slotOpportunity = { [ weak self] webView, position in
330334 adOpportunityTrackerView. frame = CGRect ( x: position. left, y: position. top, width: 1 , height: 1 )
331335 webView. scrollView. addSubview ( adOpportunityTrackerView)
332336
@@ -336,13 +340,13 @@ public class TeadsWebViewHelper: NSObject, WKScriptMessageHandler {
336340 adOpportunityTrackerView. leadingAnchor. constraint ( equalTo: webView. scrollView. leadingAnchor, constant: position. left) . isActive = true
337341 adOpportunityTrackerView. widthAnchor. constraint ( equalToConstant: 1 ) . isActive = true
338342 adOpportunityTrackerView. heightAnchor. constraint ( equalToConstant: 1 ) . isActive = true
339- self ? . slotPositionAvailable = nil
343+ self ? . slotOpportunity = nil
340344 }
341- guard let position = slotPosition,
342- let webView = webView else {
343- return
345+
346+ if let position = slotPosition,
347+ let webView = webView {
348+ slotOpportunity ? ( webView, position)
344349 }
345- slotPositionAvailable ? ( webView, position)
346350 }
347351}
348352
0 commit comments