Files
homepage/src/routes/[recipeLang=recipeLang]/admin/untranslated/+page.server.ts
Alexander Bocken f3b92e8b1a refactor: clean up recipe routes and reduce bundle size
- Eliminate duplicate API fetch in recipe page by passing item from
  server load to universal load instead of fetching twice
- Replace cheerio with simple regex in stripHtmlTags, removing ~200KB
  dependency
- Refactor multiplier buttons in IngredientsPage to use loop instead
  of 5 repeated form elements
- Move /rezepte/untranslated to /[recipeLang]/admin/untranslated and
  delete legacy /rezepte/ layout files
2026-01-23 15:04:58 +01:00

46 lines
1.1 KiB
TypeScript

import type { PageServerLoad } from "./$types";
import { redirect, error } from '@sveltejs/kit';
export const load: PageServerLoad = async ({ fetch, locals, url, params }) => {
const session = await locals.auth();
// Redirect to login if not authenticated
if (!session?.user?.nickname) {
const callbackUrl = encodeURIComponent(url.pathname);
throw redirect(302, `/login?callbackUrl=${callbackUrl}`);
}
// Check user group permission
if (!session.user.groups?.includes('rezepte_users')) {
throw error(403, 'Zugriff verweigert. Du hast keine Berechtigung für diesen Bereich.');
}
try {
const res = await fetch('/api/rezepte/translate/untranslated');
if (!res.ok) {
return {
untranslated: [],
session,
recipeLang: params.recipeLang,
error: 'Fehler beim Laden der unübersetzten Rezepte'
};
}
const untranslated = await res.json();
return {
untranslated,
session,
recipeLang: params.recipeLang
};
} catch (e) {
return {
untranslated: [],
session,
recipeLang: params.recipeLang,
error: 'Fehler beim Laden der unübersetzten Rezepte'
};
}
};