From 845a266e7da832922d25f1f59bc2d6db3c14e0ed Mon Sep 17 00:00:00 2001 From: Joe Masilotti Date: Mon, 18 Dec 2023 10:46:40 -0800 Subject: [PATCH 1/2] Cherry-pick skip-visit-proposal --- Source/WebView/turbo.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Source/WebView/turbo.js b/Source/WebView/turbo.js index 54508e5..05b6919 100644 --- a/Source/WebView/turbo.js +++ b/Source/WebView/turbo.js @@ -103,6 +103,9 @@ if (Turbo.navigator.locationWithActionIsSamePage(location, options.action)) { Turbo.navigator.view.scrollToAnchorFromLocation(location) return + } else if (this.currentVisit?.location?.href === location.href) { + this.visitLocationWithOptionsAndRestorationIdentifier(location, options, Turbo.navigator.restorationIdentifier) + return } } From 96d92ad60aad3dfff57806596de3753b01cfa0a0 Mon Sep 17 00:00:00 2001 From: Joe Masilotti Date: Tue, 6 Feb 2024 20:10:19 -0800 Subject: [PATCH 2/2] Fix issue where the snapshot cache isn't cleared --- Source/Session/Session.swift | 4 ++-- Source/Turbo Navigator/TurboNavigator.swift | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/Session/Session.swift b/Source/Session/Session.swift index 248ebb8..86e3264 100644 --- a/Source/Session/Session.swift +++ b/Source/Session/Session.swift @@ -87,7 +87,7 @@ public class Session: NSObject { topmostVisit = currentVisit } - public func clearSnapshotCache() { + @objc public func clearSnapshotCache() { bridge.clearSnapshotCache() } @@ -221,7 +221,7 @@ extension Session: VisitableDelegate { } else if visitable === currentVisit.visitable && currentVisit.state == .started { // Navigating forward - complete navigation early completeNavigationForCurrentVisit() - } else if visitable !== topmostVisit.visitable { + } else if visitable !== topmostVisit.visitable && !visitable.visitableViewController.isMovingToParent { // Navigating backward visit(visitable, action: .restore) } diff --git a/Source/Turbo Navigator/TurboNavigator.swift b/Source/Turbo Navigator/TurboNavigator.swift index f617997..1b3d35d 100644 --- a/Source/Turbo Navigator/TurboNavigator.swift +++ b/Source/Turbo Navigator/TurboNavigator.swift @@ -113,7 +113,7 @@ extension TurboNavigator: SessionDelegate { public func sessionDidFinishFormSubmission(_ session: Session) { if session == modalSession { - self.session.clearSnapshotCache() + self.session.perform(#selector(Session.clearSnapshotCache), with: nil, afterDelay: 1) } if let url = session.topmostVisitable?.visitableURL { delegate.formSubmissionDidFinish(at: url)