diff --git a/packages/turbo/ios/RNSession.swift b/packages/turbo/ios/RNSession.swift index fe245795..5f4a59a9 100644 --- a/packages/turbo/ios/RNSession.swift +++ b/packages/turbo/ios/RNSession.swift @@ -33,10 +33,10 @@ class RNSession: NSObject { private var visitableView: RNVisitableView? private var sessionHandle: NSString - private var webViewConfiguration: RNWKWebViewConfiguration + private var webViewConfiguration: WKWebViewConfiguration private var wkUiDelegate: WKUIDelegate? - init(sessionHandle: NSString, webViewConfiguration: RNWKWebViewConfiguration) { + init(sessionHandle: NSString, webViewConfiguration: WKWebViewConfiguration) { self.sessionHandle = sessionHandle self.webViewConfiguration = webViewConfiguration } @@ -50,7 +50,6 @@ class RNSession: NSObject { session.webView.allowsLinkPreview = false session.webView.scrollView.contentInsetAdjustmentBehavior = .never session.webView.uiDelegate = self.wkUiDelegate - updateWebViewConfiguration(webView: session.webView, webViewConfiguration: webViewConfiguration) #if DEBUG if #available(iOS 16.4, *) { @@ -61,14 +60,6 @@ class RNSession: NSObject { return session }() public lazy var webView: WKWebView = turboSession.webView - - func updateWebViewConfiguration(webView: WKWebView, webViewConfiguration: RNWKWebViewConfiguration){ - webView.scrollView.isScrollEnabled = webViewConfiguration.isScrollEnabled - } - - func updateWebViewConfiguration(webViewConfiguration: RNWKWebViewConfiguration) { - updateWebViewConfiguration(webView: webView, webViewConfiguration: webViewConfiguration) - } func visitableViewWillAppear(view: RNVisitableView) { self.visitableView = view diff --git a/packages/turbo/ios/RNSessionManager.swift b/packages/turbo/ios/RNSessionManager.swift index a7604d3a..9949b0a3 100644 --- a/packages/turbo/ios/RNSessionManager.swift +++ b/packages/turbo/ios/RNSessionManager.swift @@ -14,7 +14,7 @@ class RNSessionManager: NSObject { private var processPool = WKProcessPool() static var shared: RNSessionManager = RNSessionManager() - func findOrCreateSession(sessionHandle: NSString, webViewConfiguration: RNWKWebViewConfiguration) -> RNSession { + func findOrCreateSession(sessionHandle: NSString, webViewConfiguration: WKWebViewConfiguration) -> RNSession { if(sessions[sessionHandle] == nil) { webViewConfiguration.processPool = processPool sessions[sessionHandle] = RNSession(sessionHandle: sessionHandle, webViewConfiguration: webViewConfiguration) diff --git a/packages/turbo/ios/RNVisitableView.swift b/packages/turbo/ios/RNVisitableView.swift index 9e36533e..0f0f6adf 100644 --- a/packages/turbo/ios/RNVisitableView.swift +++ b/packages/turbo/ios/RNVisitableView.swift @@ -33,8 +33,7 @@ class RNVisitableView: UIView, RNSessionSubscriber { } @objc var scrollEnabled: Bool = true { didSet { - webViewConfiguration.isScrollEnabled = scrollEnabled - updateWebViewConfiguration() + configureWebView() } } @objc var onMessage: RCTDirectEventBlock? @@ -53,9 +52,14 @@ class RNVisitableView: UIView, RNSessionSubscriber { private var onConfirmHandler: ((Bool) -> Void)? private var onAlertHandler: (() -> Void)? - private lazy var session: RNSession = RNSessionManager.shared.findOrCreateSession(sessionHandle: sessionHandle!, webViewConfiguration: webViewConfiguration) + private var sessionInitialized: Bool = false + private lazy var session: RNSession = { + let session = RNSessionManager.shared.findOrCreateSession(sessionHandle: sessionHandle!, webViewConfiguration: webViewConfiguration) + sessionInitialized = true + return session + }() private lazy var webView: WKWebView = session.webView - private var webViewConfiguration: RNWKWebViewConfiguration = RNWKWebViewConfiguration() + private var webViewConfiguration: WKWebViewConfiguration = WKWebViewConfiguration() lazy var controller: RNVisitableViewController? = RNVisitableViewController(reactViewController: reactViewController(), delegate: self) @@ -63,14 +67,12 @@ class RNVisitableView: UIView, RNSessionSubscriber { controller!.visitableView.isRefreshing } - private var canInitializeSession: Bool { - sessionHandle != nil - } - - private func updateWebViewConfiguration() { - if (canInitializeSession) { - session.updateWebViewConfiguration(webViewConfiguration: webViewConfiguration) + private func configureWebView() { + if (!sessionInitialized) { + return } + + webView.scrollView.isScrollEnabled = scrollEnabled } override func willMove(toWindow newWindow: UIWindow?) { @@ -103,8 +105,6 @@ class RNVisitableView: UIView, RNSessionSubscriber { if (viewController.parent is UIPageViewController) { controller!.endAppearanceTransition() } - - updateWebViewConfiguration() } override func removeFromSuperview() { @@ -232,6 +232,7 @@ extension RNVisitableView: RNVisitableViewControllerDelegate { } func visitableDidAppear(visitable: Visitable) { + configureWebView() session.visitableViewDidAppear(view: self) } diff --git a/packages/turbo/ios/RNWKWebViewConfiguration.swift b/packages/turbo/ios/RNWKWebViewConfiguration.swift deleted file mode 100644 index dc27d582..00000000 --- a/packages/turbo/ios/RNWKWebViewConfiguration.swift +++ /dev/null @@ -1,12 +0,0 @@ -// -// RNWKWebViewConfiguration.swift -// RNTurbo -// -// Created by Patryk Klatka on 19/04/2024. -// - -import Foundation - -class RNWKWebViewConfiguration: WKWebViewConfiguration { - var isScrollEnabled: Bool = true -}