From 60f2a44178ccab54b792c4995a7fad00025e53f1 Mon Sep 17 00:00:00 2001 From: iqubik Date: Sun, 5 Apr 2026 00:09:17 +0300 Subject: [PATCH] =?UTF-8?q?fix(client):=20=D0=B4=D0=B8=D0=BD=D0=B0=D0=BC?= =?UTF-8?q?=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=B8=D0=B9=20=D1=82=D0=B5=D0=BA?= =?UTF-8?q?=D1=81=D1=82=20=D0=B8=20=D1=86=D0=B2=D0=B5=D1=82=20=D0=BA=D0=BD?= =?UTF-8?q?=D0=BE=D0=BF=D0=BA=D0=B8=20=D0=B2=20confirmDialog?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/pages/SettingsPage.tsx | 13 ++++++++++--- client/src/pages/SubscriptionsPage.tsx | 13 ++++++++++--- client/test/pages/SettingsPage.spec.tsx | 10 +++++----- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/client/src/pages/SettingsPage.tsx b/client/src/pages/SettingsPage.tsx index 4be44d3..66b6d0e 100644 --- a/client/src/pages/SettingsPage.tsx +++ b/client/src/pages/SettingsPage.tsx @@ -36,7 +36,10 @@ export default function SettingsPage() { const [msg, setMsg] = useState({ open: false, type: 'success' as 'success' | 'error', text: '' }); const [loadingRotate, setLoadingRotate] = useState(false); - const [confirmDialog, setConfirmDialog] = useState({ open: false, title: '', onConfirm: () => {} }); + const [confirmDialog, setConfirmDialog] = useState({ + open: false, title: '', onConfirm: () => {}, + confirmText: 'Удалить', confirmColor: 'error' as 'error' | 'primary' + }); const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down('md')); @@ -215,6 +218,8 @@ export default function SettingsPage() { setConfirmDialog({ open: true, title: 'ВНИМАНИЕ: Это немедленно обновит конфиги в подписках.\n\nИнтервал автоматической ротации НЕ будет сброшен.\n\nПродолжить?', + confirmText: 'Сгенерировать', + confirmColor: 'primary', onConfirm: async () => { try { Logger.debug('Starting forced rotation', 'Rotation'); @@ -268,6 +273,8 @@ export default function SettingsPage() { setConfirmDialog({ open: true, title: `Обновить подписку "${sub.name}" сейчас?`, + confirmText: 'Обновить', + confirmColor: 'primary', onConfirm: async () => { try { Logger.debug(`Starting manual rotation for subscription: ${sub.id}`, 'Settings'); @@ -597,9 +604,9 @@ export default function SettingsPage() { confirmDialog.onConfirm(); }} variant="contained" - color="warning" + color={confirmDialog.confirmColor} > - Продолжить + {confirmDialog.confirmText} diff --git a/client/src/pages/SubscriptionsPage.tsx b/client/src/pages/SubscriptionsPage.tsx index 944a9af..c47dc5d 100644 --- a/client/src/pages/SubscriptionsPage.tsx +++ b/client/src/pages/SubscriptionsPage.tsx @@ -116,7 +116,10 @@ export default function SubscriptionsPage() { const [snackbar, setSnackbar] = useState({ open: false, type: 'success' as 'success' | 'error', message: '' }); // Confirmation dialog state - const [confirmDialog, setConfirmDialog] = useState({ open: false, title: '', onConfirm: () => {} }); + const [confirmDialog, setConfirmDialog] = useState({ + open: false, title: '', onConfirm: () => {}, + confirmText: 'Удалить', confirmColor: 'error' as 'error' | 'primary' + }); const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down('md')); @@ -276,6 +279,8 @@ export default function SubscriptionsPage() { setConfirmDialog({ open: true, title: 'Удалить подписку и все соединения?', + confirmText: 'Удалить', + confirmColor: 'error', onConfirm: async () => { Logger.debug(`Deleting subscription: ${id}`, 'Subs'); await api.delete(`/subscriptions/${id}`); @@ -312,6 +317,8 @@ export default function SubscriptionsPage() { setConfirmDialog({ open: true, title: `Обновить подписку "${sub.name}" сейчас?`, + confirmText: 'Обновить', + confirmColor: 'primary', onConfirm: async () => { try { Logger.debug(`Starting manual rotation for subscription: ${sub.id}`, 'Subs'); @@ -622,9 +629,9 @@ export default function SubscriptionsPage() { setConfirmDialog({ ...confirmDialog, open: false }); }} variant="contained" - color="error" + color={confirmDialog.confirmColor} > - Удалить + {confirmDialog.confirmText} diff --git a/client/test/pages/SettingsPage.spec.tsx b/client/test/pages/SettingsPage.spec.tsx index 22b0e19..67f9966 100644 --- a/client/test/pages/SettingsPage.spec.tsx +++ b/client/test/pages/SettingsPage.spec.tsx @@ -380,10 +380,10 @@ describe('SettingsPage', () => { const rotateButton = await screen.findByText('Сгенерировать сейчас') fireEvent.click(rotateButton) - - const confirmButton = await screen.findByText('Продолжить') + + const confirmButton = await screen.findByText('Сгенерировать') fireEvent.click(confirmButton) - + await waitFor(() => { expect(mockPost).toHaveBeenCalledWith('/rotation/rotate-all') }) @@ -462,9 +462,9 @@ describe('SettingsPage', () => { const refreshButton = await screen.findByRole('button', { name: /Обновить подписку вручную/i }) fireEvent.click(refreshButton) - const confirmButton = await screen.findByText('Продолжить') + const confirmButton = await screen.findByText('Обновить') fireEvent.click(confirmButton) - + await waitFor(() => { expect(mockPost).toHaveBeenCalledWith('/rotation/rotate-one/1') })