remove deprecations, remove header when scrolling

This commit is contained in:
2026-07-04 17:06:45 +02:00
parent a73a1b57de
commit 0e3142bac9
4 changed files with 201 additions and 20 deletions
+16
View File
@@ -15,6 +15,16 @@ const layout = ref(localStorage.getItem('layout') || 'list') // 'list' | 'cards'
let observer; // Declare observer outside the setup function
let initialLoad = false
// Timestamp (performance.now()) of the most recent programmatic scroll / list
// mutation that moves the page without user intent — currently the list-view
// read-correction below. AppNav's auto-hide handler resyncs its scroll baseline
// (instead of treating the induced jump as a user scroll) for a short window
// after this, so removing read articles can't pop the header in/out mid-read.
const lastProgrammaticScroll = ref(0)
function markProgrammaticScroll() {
lastProgrammaticScroll.value = performance.now()
}
export function authHeaders() {
return {
headers: {
@@ -247,6 +257,9 @@ function handleIntersection(entries, topbarHeight = 0) {
observer = null
}
// Both the array splice (via scroll anchoring) and the scrollBy correction
// below move the page — flag it so AppNav's header auto-hide ignores the jump.
markProgrammaticScroll()
const readIds = new Set(readFeeds.map(feed => feed.id))
feeds.value = feeds.value.filter(feed => !readIds.has(feed.id))
@@ -265,6 +278,7 @@ function handleIntersection(entries, topbarHeight = 0) {
if (first) {
const top = first.getBoundingClientRect().top
if (top < topbarHeight) {
markProgrammaticScroll()
window.scrollBy(0, top - topbarHeight)
}
}
@@ -389,5 +403,7 @@ export function useFeeds() {
disconnectObserver,
setInitialLoad,
handleIntersection,
lastProgrammaticScroll,
markProgrammaticScroll,
}
}