From 185a67192087e04f5453598a925f72ad2658703e Mon Sep 17 00:00:00 2001 From: Ayo Date: Wed, 14 Jun 2023 23:29:55 +0200 Subject: [PATCH] feat: preserve home scroll position --- src/components/Library.astro | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/components/Library.astro b/src/components/Library.astro index 09af494..2144892 100644 --- a/src/components/Library.astro +++ b/src/components/Library.astro @@ -64,28 +64,36 @@ const {postDivSelector, skipSave = false} = Astro.props; link.href = url; link.onclick = async (e) => { e.preventDefault(); + localStorage.setItem('scrollPosition', window.scrollY.toString()); scroll(0,0); renderPost(responseText, url, postDivSelector?.value) } const item = document.createElement('li'); item.appendChild(link); list?.appendChild(item); - - }); }); window.addEventListener('popstate', async (data) => { let url = data.state?.url; + let isHome = false; if (!url) { url = window.location.href; + isHome = true; + } else { + // replace scrollPosition + localStorage.setItem('scrollPosition', window.scrollY.toString()); } const fullResponse = await cache.match(url) fullResponse?.text().then(data => { const responseText = data; renderPost(responseText, url, postDivSelector?.value, true); + if (isHome) { + const scrollPosition = localStorage.getItem('scrollPosition'); + scrollTo(0, scrollPosition ? parseInt(scrollPosition) : 0); + } }); }); }