This commit is contained in:
Matthias Hochmeister
2026-03-13 14:01:06 +01:00
parent 3361f1e28d
commit 7215e7f472
10 changed files with 119 additions and 17 deletions

View File

@@ -1,6 +1,6 @@
import { useRef, useEffect, useCallback } from 'react';
import { useState, useRef, useEffect, useCallback } from 'react';
import {
Box, Button, Card, CardContent, Chip, CircularProgress, IconButton, Tooltip, Typography,
Box, Button, Card, CardContent, Checkbox, Chip, CircularProgress, FormControlLabel, IconButton, Tooltip, Typography,
} from '@mui/material';
import SyncIcon from '@mui/icons-material/Sync';
import ContentCopyIcon from '@mui/icons-material/ContentCopy';
@@ -12,6 +12,7 @@ function FdiskSyncTab() {
const queryClient = useQueryClient();
const { showSuccess, showError } = useNotification();
const logBoxRef = useRef<HTMLDivElement>(null);
const [force, setForce] = useState(false);
const { data, isLoading, isError } = useQuery({
queryKey: ['admin', 'fdisk-sync', 'logs'],
@@ -27,7 +28,7 @@ function FdiskSyncTab() {
}, [data?.logs.length]);
const triggerMutation = useMutation({
mutationFn: adminApi.fdiskSyncTrigger,
mutationFn: (forceSync: boolean) => adminApi.fdiskSyncTrigger(forceSync),
onSuccess: () => {
showSuccess('Sync gestartet');
queryClient.invalidateQueries({ queryKey: ['admin', 'fdisk-sync', 'logs'] });
@@ -71,12 +72,16 @@ function FdiskSyncTab() {
<Button
variant="contained"
startIcon={<SyncIcon />}
onClick={() => triggerMutation.mutate()}
onClick={() => triggerMutation.mutate(force)}
disabled={running || triggerMutation.isPending}
>
Jetzt synchronisieren
</Button>
</Box>
<FormControlLabel
control={<Checkbox checked={force} onChange={(e) => setForce(e.target.checked)} />}
label="Alle Mitglieder erzwungen synchronisieren"
/>
</CardContent>
</Card>