Foxnouns.NET/Foxnouns.Frontend/src/routes/@[username]/+page.server.ts

32 lines
860 B
TypeScript
Raw Normal View History

import { apiRequest } from "$api";
import ApiError, { ErrorCode } from "$api/error.js";
2024-12-09 14:52:31 +01:00
import type { UserWithMembers } from "$api/models";
import log from "$lib/log.js";
2024-12-09 14:52:31 +01:00
import paginate from "$lib/paginate";
import { error } from "@sveltejs/kit";
2024-11-25 17:35:24 +01:00
const MEMBERS_PER_PAGE = 20;
export const load = async ({ params, fetch, cookies, url }) => {
let user: UserWithMembers;
try {
user = await apiRequest<UserWithMembers>("GET", `/users/${params.username}`, {
fetch,
cookies,
});
} catch (e) {
if (e instanceof ApiError && e.code === ErrorCode.UserNotFound) error(404, "User not found");
log.error("Error fetching user %s:", params.username, e);
throw e;
}
2024-12-09 14:52:31 +01:00
const { data, currentPage, pageCount } = paginate(
user.members,
url.searchParams.get("page"),
MEMBERS_PER_PAGE,
);
2024-12-09 14:52:31 +01:00
return { user, members: data, currentPage, pageCount };
};