feat(api): implement new API routes for bulk category updates, inventory consumption, and product management with authentication

This commit is contained in:
Nils-Johan Gynther
2026-04-19 19:11:09 +02:00
parent 1ae9b336d8
commit 6f24aee18d
17 changed files with 440 additions and 85 deletions
@@ -1,13 +1,14 @@
'use client';
import { useState, useTransition } from 'react';
import { resetAllProducts } from './actions';
import { useState } from 'react';
import { useRouter } from 'next/navigation';
export default function ResetProductsButton() {
const [isPending, startTransition] = useTransition();
const [isPending, setIsPending] = useState(false);
const [error, setError] = useState<string | null>(null);
const router = useRouter();
function handleClick() {
async function handleClick() {
if (
!confirm(
'⚠️ Detta raderar ALLA produkter, inventory, taggar, kvitto-alias och pantry.\n\nKategorier och användare behålls.\n\nÄr du säker?',
@@ -16,13 +17,19 @@ export default function ResetProductsButton() {
return;
setError(null);
startTransition(async () => {
try {
await resetAllProducts();
} catch (err) {
setError(err instanceof Error ? err.message : 'Okänt fel');
setIsPending(true);
try {
const res = await fetch('/api/admin/reset-products', { method: 'POST' });
if (!res.ok) {
const data = await res.json().catch(() => ({}));
throw new Error(data?.error || 'Återställning misslyckades');
}
});
router.refresh();
} catch (err) {
setError(err instanceof Error ? err.message : 'Okänt fel');
} finally {
setIsPending(false);
}
}
return (