From 2f0c8821f367dc01e82e094a36dbe7995bd1fc4e Mon Sep 17 00:00:00 2001 From: "Moon.eth" Date: Wed, 29 Jul 2026 11:04:22 +0900 Subject: [PATCH] pics timeline --- src/components/profile/PicStream.svelte | 120 ++++++++++++++++++++++++ src/routes/Profile.svelte | 21 +++-- src/routes/Profile.test.ts | 73 ++++++++++++++ src/routes/Settings.svelte | 1 + src/styles/profile.css | 71 ++++++++++++++ 5 files changed, 279 insertions(+), 7 deletions(-) create mode 100644 src/components/profile/PicStream.svelte diff --git a/src/components/profile/PicStream.svelte b/src/components/profile/PicStream.svelte new file mode 100644 index 0000000..81dea01 --- /dev/null +++ b/src/components/profile/PicStream.svelte @@ -0,0 +1,120 @@ + + +

+ Pictures from {ownerName}'s Blog Entries. Click a picture to view the full-size original. +

+ +{#if !feed.initialized && feed.loading} +

Loading pictures…

+{:else if pictures.length === 0 && feed.items.length > 0} +

+ No image attachments in the entries loaded so far. +

+{:else} + +{/if} + + 0 ? 'That’s the whole picture stream.' : ''} +/> diff --git a/src/routes/Profile.svelte b/src/routes/Profile.svelte index 7d0366e..79ea3eb 100644 --- a/src/routes/Profile.svelte +++ b/src/routes/Profile.svelte @@ -29,6 +29,7 @@ import InterestsTable from '$components/profile/InterestsTable.svelte' import DetailsTable from '$components/profile/DetailsTable.svelte' import FriendSpace from '$components/profile/FriendSpace.svelte' + import PicStream from '$components/profile/PicStream.svelte' import BlogEntry from '$components/blog/BlogEntry.svelte' import Pager from '$components/common/Pager.svelte' @@ -107,12 +108,17 @@ entries = new Feed( async (cursor) => { - const preview = currentView !== 'blog' + const preview = currentView === 'profile' + const pictures = currentView === 'pics' const page = await endpoints.fetchAccountStatuses( session.api, found.id, cursor, - preview ? { exclude_replies: true, exclude_reblogs: true } : {}, + preview + ? { exclude_replies: true, exclude_reblogs: true } + : pictures + ? { only_media: true, exclude_reblogs: true } + : {}, ) // Pleroma-compatible forks do not all honour both exclusion flags. @@ -125,7 +131,7 @@ } : page }, - currentView === 'blog' ? 20 : 10, + currentView === 'blog' || currentView === 'pics' ? 20 : 10, ) void entries.reload() @@ -295,10 +301,11 @@ {:else if view === 'pics'} -

- Photos appear here as they're attached to blog entries. - Read the blog to see them in context. -

+ {#snippet action()} + [Back to Profile] + {/snippet} + +
{:else}