aboutsummaryrefslogtreecommitdiffstats
path: root/src/features
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-10-07 08:26:57 -0700
committerAdam Soltys <[email protected]>2026-10-07 08:26:57 -0700
commitf247eb1de2941c4ef51378f0b773d1d2a1434c7f (patch)
tree2bb1edb7744dc540b998888909a54e8730ed5caf /src/features
parentf5450cd46cf752a843205ff51e6d12cf0da4dac8 (diff)
downloadcoinosv3-f247eb1de2941c4ef51378f0b773d1d2a1434c7f.tar.gz
coinosv3-f247eb1de2941c4ef51378f0b773d1d2a1434c7f.zip
Feed URLs: the default feed is not opened (and fetched) a tick before the URL's
A /feed?r=… (or any /feed/… link) set the feed view up synchronously but chose its feed in a setTimeout, so the first paint opened the remembered/ default feed — Popular since c89050e — and fetched the shared snapshot for it before switching. The frame now holds (header only) for that tick, the way a note link's pending frame does. public-feed-browser-test: custom relays bypass the snapshot again. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'src/features')
-rw-r--r--src/features/messages.js5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/features/messages.js b/src/features/messages.js
index 02a19b4..241ab5c 100644
--- a/src/features/messages.js
+++ b/src/features/messages.js
@@ -2149,7 +2149,11 @@ export function messagesFeature(ctx) {
// public data, and Back lands on the app's own front door.
if (urlFeed) {
ui.pubProf = true; ui.chatOpen = true; ui.msgView = 'feed';
+ // hold the frame until the URL's feed is chosen: painted a tick early,
+ // the feed view would open (and fetch) the default feed first
+ ui.pubFeedPending = true;
setTimeout(() => {
+ ui.pubFeedPending = null;
if (openFeedUrl(urlFeed.path, urlFeed.search)) return;
ui.pubProf = null; ui.chatOpen = false; ui.msgView = null; // not a feed we know: the front door
render();
@@ -12829,6 +12833,7 @@ export function messagesFeature(ctx) {
ctx.brandHeader(false),
h('div', { class: 'card row gap6', style: 'justify-content:center;align-items:center;padding:16px' },
h('span', { class: 'spinner sm' }), h('span', { class: 'small faint' }, t('noteRefLoading'))));
+ if (ui.pubFeedPending) return h('div', { class: 'col', style: 'gap:16px' }, ctx.brandHeader(false));
if (ui.pubProfPending) return h('div', { class: 'col', style: 'gap:16px' },
ctx.brandHeader(false),
h('div', { class: 'card col', style: 'gap:12px' },