only update our own history entires during back navigation through view transitions (#8116)

This commit is contained in:
Martin Trapp 2023-08-17 18:18:30 +02:00 committed by Emanuele Stoppa
parent a87cbe4003
commit 33b8910cfd
2 changed files with 11 additions and 3 deletions

View file

@ -0,0 +1,5 @@
---
'astro': patch
---
On back navigation only animate view transitions that were animated going forward.

View file

@ -306,10 +306,11 @@ const { fallback = 'animate' } = Astro.props as Props;
return;
}
// hash change creates no state.
// History entries without state are created by the browser (e.g. for hash links)
// Our view transition entries always have state.
// Just ignore stateless entries.
// The browser will handle navigation fine without our help
if (ev.state === null) {
persistState({ index: currentHistoryIndex, scrollY });
ev.preventDefault();
return;
}
@ -344,6 +345,8 @@ const { fallback = 'animate' } = Astro.props as Props;
addEventListener(
'scroll',
throttle(() => {
// only updste history entries that are managed by us
// leave other entries alone and do not accidently add state.
if (history.state) {
persistState({ ...history.state, scrollY });
}