2023-02-15 01:19:54 +00:00
|
|
|
import { error } from '@sveltejs/kit';
|
2023-02-12 21:15:50 +00:00
|
|
|
import type { PageServerLoad } from './$types';
|
2023-02-15 01:19:54 +00:00
|
|
|
import { WALLABAG_MAX_PAGES } from '$env/static/private';
|
|
|
|
|
import type { Article } from '$lib/types/article';
|
2023-02-12 21:15:50 +00:00
|
|
|
|
2023-02-12 21:28:40 +00:00
|
|
|
export type ArticlePageLoad = {
|
|
|
|
|
articles: Article[];
|
|
|
|
|
currentPage: number;
|
|
|
|
|
totalPages: number;
|
|
|
|
|
limit: number;
|
|
|
|
|
totalArticles: number;
|
2023-02-13 18:07:17 +00:00
|
|
|
cacheControl: string;
|
2023-02-12 21:28:40 +00:00
|
|
|
};
|
|
|
|
|
|
2023-02-13 18:07:17 +00:00
|
|
|
export const load: PageServerLoad = async ({ fetch, params, setHeaders }) => {
|
2023-02-12 21:15:50 +00:00
|
|
|
const { page } = params;
|
2023-02-15 01:56:07 +00:00
|
|
|
if (+page > +WALLABAG_MAX_PAGES) {
|
2023-02-15 01:19:54 +00:00
|
|
|
throw error(404, {
|
|
|
|
|
message: 'Not found'
|
|
|
|
|
});
|
|
|
|
|
}
|
2023-02-12 21:15:50 +00:00
|
|
|
const resp = await fetch(`/api/articles?page=${page}`);
|
2023-02-13 18:07:17 +00:00
|
|
|
const { articles, currentPage, totalPages, limit, totalArticles, cacheControl }: ArticlePageLoad =
|
2023-02-12 21:28:40 +00:00
|
|
|
await resp.json();
|
2023-02-13 18:07:17 +00:00
|
|
|
|
|
|
|
|
if (cacheControl?.includes('no-cache')) {
|
|
|
|
|
setHeaders({
|
|
|
|
|
'cache-control': cacheControl
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
setHeaders({
|
|
|
|
|
'cache-control': 'max-age=43200' // 12 hours
|
|
|
|
|
});
|
|
|
|
|
}
|
2023-02-12 21:15:50 +00:00
|
|
|
return {
|
|
|
|
|
articles,
|
|
|
|
|
currentPage,
|
|
|
|
|
totalPages,
|
|
|
|
|
limit,
|
|
|
|
|
totalArticles
|
|
|
|
|
};
|
|
|
|
|
};
|