aboutsummaryrefslogtreecommitdiffstats
path: root/src/features
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-10-10 08:04:59 -0700
committerAdam Soltys <[email protected]>2026-10-10 08:04:59 -0700
commit89b16d6363920129744665ceeda5218f6786aaaa (patch)
treefea7e76644233d51db10fe61d6052c15bd817a26 /src/features
parent9abd654e8ef57de59a4f4bd5cbfbba560ed7e523 (diff)
downloadcoinosv3-89b16d6363920129744665ceeda5218f6786aaaa.tar.gz
coinosv3-89b16d6363920129744665ceeda5218f6786aaaa.zip
Feed: your own posts are in Following. The follows feed read only the people you follow, so your own post was there just after you sent it (the optimistic row) and gone after a reload — Adam didn't see his latest. Like every other client, a follows feed now includes you. Someone who follows nobody still gets the "find people" invitation, with their own posts under it. feed-live-test's catch-up queue now goes only to an ask naming the post's author (the feed also asks for yours); tools/feed-repost-test.js checks your own post shows.
Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Vps2H27rhbG9ZqseGfMrc3
Diffstat (limited to 'src/features')
-rw-r--r--src/features/messages.js11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/features/messages.js b/src/features/messages.js
index 99b5c48..b271bc9 100644
--- a/src/features/messages.js
+++ b/src/features/messages.js
@@ -5605,6 +5605,9 @@ export function messagesFeature(ctx) {
const feedAuthors = (def = feedDef()) => {
if (!def) return [];
const set = new Set(def.follows ? followsNow().set : []);
+ // your own posts belong in the feed of the people you follow, as in
+ // every other client — not only for the moment after posting
+ if (def.follows && mePk()) set.add(mePk());
for (const pk of def.authors || []) if (pk) set.add(pk);
for (const pk of def.priv || []) if (pk) set.add(pk); // a list's private members
for (const pk of packAuthors(def)) set.add(pk);
@@ -11772,6 +11775,8 @@ export function messagesFeature(ctx) {
});
const authors = feedAuthors(def);
const hasQuery = feedHasQuery(def);
+ // the follows feed of someone who follows nobody: only their own posts
+ const noFollows = !!def.follows && !followsNow().set.size && !(def.authors || []).length && !(def.priv || []).length && !feedTopics(def).length;
prepareFeedAhead(c);
// Never a bare spinner over posts we already hold: while the opening
// page's faces and pictures are still being decoded, the cached rows
@@ -11851,11 +11856,13 @@ export function messagesFeature(ctx) {
h('span', { class: 'spinner sm' }), h('span', { class: 'small muted' }, t('feedOfLoading')))
: def.of && !hasQuery
? h('div', { class: 'small muted', style: 'text-align:center;padding:12px 0' }, t('feedNoFollowsOf'))
- : !hasQuery
+ : !hasQuery || noFollows
? def.builtin
? h('div', { class: 'col', style: 'gap:8px' },
h('div', { class: 'small muted' }, t('feedNoFollows')),
- h('button', { class: 'btn-sm', onClick: () => { stopFeedWatch(); hook('openUserSearch'); render(); } }, t('feedFindPeople')))
+ h('button', { class: 'btn-sm', onClick: () => { stopFeedWatch(); hook('openUserSearch'); render(); } }, t('feedFindPeople')),
+ // your own posts, under the invitation
+ noFollows && visible.length && mediaMode === 'all' ? h('div', { class: 'card col notes-feed', style: 'gap:0' }, ...rows) : null)
: h('div', { class: 'col', style: 'gap:8px' },
h('div', { class: 'small muted' }, t('feedNoQuery')),
h('button', { class: 'btn-sm', onClick: () => openFeedEditor(def) }, t('feedEdit')))