Throttling configuration from the backoffice added

This commit is contained in:
Stephanos A
2026-06-26 12:17:01 +03:00
parent 84a14b7312
commit eefbe6e8ed
8 changed files with 152 additions and 21 deletions

View File

@@ -34,6 +34,7 @@ export default function PackagesPage() {
const [editingId, setEditingId] = useState<string | null>(null);
const [viewPackage, setViewPackage] = useState<any>(null);
const [activateConfirm, setActivateConfirm] = useState<any>(null);
const [deactivateConfirm, setDeactivateConfirm] = useState<any>(null);
const [tiersPackage, setTiersPackage] = useState<any>(null);
const [editingTier, setEditingTier] = useState<any>(null);
const [tierForm, setTierForm] = useState({ seatType: '', label: '', priceMinor: '', availableSeats: '' });
@@ -76,6 +77,11 @@ export default function PackagesPage() {
onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['packages'] }); setActivateConfirm(null); },
});
const deactivateMutation = useMutation({
mutationFn: packagesApi.deactivate,
onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['packages'] }); setDeactivateConfirm(null); },
});
const emptyTierForm = { seatType: '', label: '', priceMinor: '', availableSeats: '' };
const addTierMutation = useMutation({
@@ -261,7 +267,12 @@ export default function PackagesPage() {
{
label: 'Activate', icon: CheckCircle, variant: 'primary' as const,
onClick: (p: any) => setActivateConfirm(p),
hidden: (p: any) => p.status === 'ACTIVE',
show: (p: any) => p.status !== 'ACTIVE',
},
{
label: 'Deactivate', icon: CheckCircle, variant: 'secondary' as const,
onClick: (p: any) => setDeactivateConfirm(p),
show: (p: any) => p.status === 'ACTIVE',
},
{
label: 'Delete', icon: Trash2, variant: 'danger' as const,
@@ -343,6 +354,18 @@ export default function PackagesPage() {
isDanger={false}
/>
{/* Deactivate Confirmation */}
<ConfirmDialog
isOpen={!!deactivateConfirm}
onClose={() => setDeactivateConfirm(null)}
onConfirm={() => deactivateMutation.mutate(deactivateConfirm.id)}
title="Deactivate Package"
message={`Deactivate "${deactivateConfirm?.name}"? It will no longer be available for booking.`}
confirmText="Deactivate"
isDanger={false}
isLoading={deactivateMutation.isPending}
/>
{/* Tiers Modal */}
<Modal isOpen={!!tiersPackage} onClose={() => { setTiersPackage(null); setEditingTier(null); setTierError(null); }} title={`Price Tiers — ${tiersPackage?.name ?? ''}`} size="lg">
{tiersPackage && (