Fix following past 48 entries and make the e621 page size configurable
Follow lists were paginated at the API default of 48, but the SPA treats them as complete sets: the tag/pool toggles read their state from page one (so the 49th follow looked unfollowed and its spinner waited for a page that could never contain it) and the Followed page rendered only 48 cards while showing that as the count. Both follow endpoints are now unpaginated — they are per-user sets and still restricted to the caller's rows — and the three consumers take plain arrays. Post visibility: the old J621-Django online view fetched limit=320 (e621's maximum) while ours hard-coded 48, and fetchPostsByIds capped id batches at 100. The Online browser now has a 'Posts per page' setting (48/100/200/320) in its sidebar, mirrored in Account -> Browsing preferences, stored per user as e621_per_page and also used for pool loading; the id-batch cap is raised to 320. Tests: follow list shape/isolation (4) and preference validation/merge (3) added; the full backend suite is 46 green. Live-checked the array response shape and the preference bounds (200 accepted, 500 rejected).
This commit is contained in:
@@ -16,6 +16,9 @@ interface UiState {
|
||||
/** Minimum thumbnail width in px; media grids derive their column count. */
|
||||
zoom: number;
|
||||
setZoom: (zoom: number) => void;
|
||||
/** Posts per e621 request for the Online browser and pool loading (max 320). */
|
||||
e621PerPage: number;
|
||||
setE621PerPage: (value: number) => void;
|
||||
}
|
||||
|
||||
export const useUi = create<UiState>()(
|
||||
@@ -39,6 +42,9 @@ export const useUi = create<UiState>()(
|
||||
|
||||
zoom: 190,
|
||||
setZoom: (zoom) => set({ zoom }),
|
||||
|
||||
e621PerPage: 48,
|
||||
setE621PerPage: (e621PerPage) => set({ e621PerPage }),
|
||||
}),
|
||||
{ name: "j621.ui" },
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user