Prevent silent restoration visits when previous visit request is in-flight #595
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Silent Visits don't dispatch events. A Visit is deemed to be silent if its location is on the current page. Prior to this commit, this is determined by checking the last rendered location. This approach can result in false positives if a Visit is interrupted and never gets rendered. For example, tapping a link, then immediately navigating back, will be incorrectly considered a same-page visit. Checking the previous location using window.location is also not possible on Back/Forward because it is changed before the popstate event, so by the time a new Visit is created, the location has already changed.
This commit accurately compares the last visited location by storing a reference to the lastVisit on the Navigator, falling back to the View's lastRenderedLocation.
Fixes #594