31 lines
1012 B
TypeScript
31 lines
1012 B
TypeScript
import { fail } from '@sveltejs/kit';
|
|
import type { Actions, PageServerLoad } from './$types';
|
|
import { requireUser } from '#lib/server/auth.js';
|
|
import { captureInbox, listPieces } from '#lib/server/content.js';
|
|
|
|
export const load: PageServerLoad = ({ locals }) => {
|
|
requireUser(locals.user);
|
|
return { pieces: listPieces({ statuses: ['inbox'] }) };
|
|
};
|
|
|
|
export const actions = {
|
|
capture: async ({ locals, request }) => {
|
|
requireUser(locals.user);
|
|
const data = await request.formData();
|
|
try {
|
|
const id = captureInbox(String(data.get('title') || ''), String(data.get('url') || ''));
|
|
return { captured: true, capturedId: id };
|
|
} catch (cause) {
|
|
const code = cause instanceof Error ? cause.message : '';
|
|
return fail(400, {
|
|
title: String(data.get('title') || ''),
|
|
url: String(data.get('url') || ''),
|
|
error:
|
|
code === 'INVALID_SOURCES'
|
|
? 'Bitte eine vollständige HTTP- oder HTTPS-Adresse eingeben.'
|
|
: 'Ein Titel ist erforderlich.'
|
|
});
|
|
}
|
|
}
|
|
} satisfies Actions;
|