Compare commits

...

2 commits

Author SHA1 Message Date
Ayo
9409b02d88 0.1.23 2023-06-14 23:30:06 +02:00
Ayo
185a671920 feat: preserve home scroll position 2023-06-14 23:29:55 +02:00
3 changed files with 13 additions and 5 deletions

4
package-lock.json generated
View file

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

View file

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

View file

@ -64,28 +64,36 @@ const {postDivSelector, skipSave = false} = Astro.props;
link.href = url; link.href = url;
link.onclick = async (e) => { link.onclick = async (e) => {
e.preventDefault(); e.preventDefault();
localStorage.setItem('scrollPosition', window.scrollY.toString());
scroll(0,0); scroll(0,0);
renderPost(responseText, url, postDivSelector?.value) renderPost(responseText, url, postDivSelector?.value)
} }
const item = document.createElement('li'); const item = document.createElement('li');
item.appendChild(link); item.appendChild(link);
list?.appendChild(item); list?.appendChild(item);
}); });
}); });
window.addEventListener('popstate', async (data) => { window.addEventListener('popstate', async (data) => {
let url = data.state?.url; let url = data.state?.url;
let isHome = false;
if (!url) { if (!url) {
url = window.location.href; url = window.location.href;
isHome = true;
} else {
// replace scrollPosition
localStorage.setItem('scrollPosition', window.scrollY.toString());
} }
const fullResponse = await cache.match(url) const fullResponse = await cache.match(url)
fullResponse?.text().then(data => { fullResponse?.text().then(data => {
const responseText = data; const responseText = data;
renderPost(responseText, url, postDivSelector?.value, true); renderPost(responseText, url, postDivSelector?.value, true);
if (isHome) {
const scrollPosition = localStorage.getItem('scrollPosition');
scrollTo(0, scrollPosition ? parseInt(scrollPosition) : 0);
}
}); });
}); });
} }