diff options
| author | Adam Soltys <[email protected]> | 2026-09-27 00:02:33 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-09-27 00:02:33 -0700 |
| commit | 1500c642e222208d3c17b13f17520478abd68234 (patch) | |
| tree | ee6bdb1199edb9f2675806975577d425f30c65b6 /src | |
| parent | 3395ccc44a7455a4b9de73e78ab655b38b7a827d (diff) | |
| download | coinosv3-1500c642e222208d3c17b13f17520478abd68234.tar.gz coinosv3-1500c642e222208d3c17b13f17520478abd68234.zip | |
Feed: the foot says when older posts are loading, and when there are none left.
Co-Authored-By: Claude Fable 5.1 <[email protected]>
Claude-Session: https://claude.ai/code/session_01VhUKyXKtsJ67QAFfb7QR9D
Diffstat (limited to 'src')
| -rw-r--r-- | src/features/messages.js | 14 | ||||
| -rw-r--r-- | src/i18n.js | 2 |
2 files changed, 13 insertions, 3 deletions
diff --git a/src/features/messages.js b/src/features/messages.js index 2b0af4a..dc3c4ee 100644 --- a/src/features/messages.js +++ b/src/features/messages.js @@ -4600,6 +4600,7 @@ export function messagesFeature(ctx) { const c = feedNow(); if (c.booting || c.loadingMore || (c.shown >= c.notes.length && (c.end || c.status !== 'ready'))) return; c.loadingMore = true; + if (c === feed) render(); // the footer says so while it happens try { if (c.shown < c.notes.length) { const end = Math.min(c.shown + FEED_PAGE, c.notes.length); @@ -6994,9 +6995,16 @@ export function messagesFeature(ctx) { : !visible.length ? h('div', { class: 'small faint', style: 'text-align:center;padding:12px 0' }, t('feedEmpty')) : h('div', { class: 'card col notes-feed', style: 'gap:0', 'data-booting': c.booting ? '1' : undefined }, ...rows), - // Older posts prepare offscreen; a background fetch should not add - // a spinner to an already readable feed. - + // The foot of the feed says what is happening down there: older + // posts on their way, or nothing older left to fetch. (Older pages + // prepare offscreen, so the line is mostly seen by a reader who + // outruns them.) + c.loadingMore + ? h('div', { class: 'row gap6 feed-foot', style: 'justify-content:center;align-items:center;padding:10px 0' }, + h('span', { class: 'spinner sm' }), h('span', { class: 'small muted' }, t('feedLoadingMore'))) + : c.end && visible.length && !(c.win && c.win.bottom) && c.shown >= visible.length + ? h('div', { class: 'small faint feed-foot', style: 'text-align:center;padding:10px 0' }, t('feedEnd')) + : null, ...noteOverlays()); } diff --git a/src/i18n.js b/src/i18n.js index 3e20a98..bab913d 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -327,6 +327,8 @@ const STR = { feedNoFollows: "You don't follow anyone yet. Their posts will show up here.", feedFindPeople: 'Find people', feedEmpty: 'Nothing posted yet.', + feedLoadingMore: 'Loading more posts…', + feedEnd: 'You’re all caught up.', feedAttach: 'Attach a picture or video', postLike: 'Like', postBoost: 'Boost', |
