feat: preserve home scroll position (#52)

* feat: preserve home scroll position

* 0.1.23
This commit is contained in:
Ayo Ayco 2023-06-14 23:31:06 +02:00 committed by GitHub
parent 99a028a64f
commit 7c949d6030
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 5 deletions

4
package-lock.json generated
View file

@ -1,12 +1,12 @@
{
"name": "@ayco/cozy",
"version": "0.1.22",
"version": "0.1.23",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@ayco/cozy",
"version": "0.1.22",
"version": "0.1.23",
"dependencies": {
"@astrojs/netlify": "^2.2.2",
"@extractus/article-extractor": "^7.2.15",

View file

@ -1,6 +1,6 @@
{
"name": "@ayco/cozy",
"version": "0.1.22",
"version": "0.1.23",
"scripts": {
"start": "astro dev",
"build": "astro build"

View file

@ -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);
}
});
});
}