Skip to content

Full post view #76

Description

@Darkkal

Problem

The gallery currently has no dedicated view for a single post. Post content, metadata, and full media collections are only accessible through the lightbox sidebar — which is constrained to a narrow panel alongside the current media item. For posts with many media items (Pixiv manga, e-hentai galleries), there's no way to see all items at a glance or browse them in an ordered, paginated grid.

Goal

Create a full post view page at /post/[id] that shows the complete post with all content, metadata, and media items in a browsable layout that preserves strict reading order.

Proposed Design

Page Layout (/post/[id])

  1. Author Header: Avatar, name, handle, platform badge, link to original post
  2. Full Content: Uncondensed post text rendered via FormattedContent
  3. Post Metadata Panel: Platform-specific stats (likes, retweets, views, bookmarks, score, rating), dates (original + imported), source deleted banner
  4. Tags: Read-only tag chips with category colors
  5. Playlists: Links to associated playlists
  6. Media Grid: All media items displayed in strict sequential order (page 1, 2, 3...). Standard ordered grid by default (preserving order for manga/e-hentai), with an optional Masonry layout toggle. Clicking an item opens the lightbox scoped to this post's media only
  7. Media Pagination: For posts exceeding postViewMediaPageSize items (new setting, default 50), show paginated controls below the grid

Lightbox Integration

  • Add a "View Full Post" button in the lightbox sidebar that navigates to /post/[postId]
  • Visible whenever the current item has an associated post ID

Data Layer

  • New repository function: getPostById(id) — returns full post data with all platform-specific details and media items
  • New route handler or server component: /post/[id]/page.tsx (server component for SSR, following existing data fetching patterns)

Out of Scope / Follow-up Tasks

  • Replies/Comments (Follow-up Sub-issue): No parent-child post relationship exists in the current data model. Displaying reply threads & downloaded comments will be tracked as a dedicated follow-up issue once thread/parent-child database schemas are established.
  • Inline Lightbox Media Strip & Grid (Deferred to More controls for media in lightbox #74): Inline single row/column scrollable filmstrip with fit/peek position indicators and lightbox grid view will be handled under More controls for media in lightbox #74.

Technical Design Decisions

  1. Ordered Grid vs Masonry: Single posts (especially manga / e-hentai) require strict sequential page order (#1, #2, #3). Standard uniform CSS Grid will be the primary layout, with an opt-in toggle to Masonry view.
  2. New Setting: postViewMediaPageSize added to AppSettings (default: 50).

Acceptance Criteria

  • /post/[id] route renders a full post view with author, content, metadata, tags, playlists, and source link
  • Media grid displays all items in strict sequential order, with page index badges (1, 2, 3)
  • Layout defaults to standard ordered grid with optional Masonry view toggle
  • Media grid paginates when item count exceeds postViewMediaPageSize setting
  • Clicking a media item in the grid opens the lightbox scoped to that post's media
  • Lightbox sidebar has a "View Full Post" button that navigates to /post/[id]
  • Page handles all supported platforms (Twitter, Pixiv, Gelbooru, E-Hentai)
  • Source deleted banner shown for posts marked isSourceDeleted
  • Page is responsive (mobile/tablet/desktop)
  • New postViewMediaPageSize setting added to AppSettings with default of 50

Dependencies

Related Issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions