From cf469a1a9fca612c11568f8b0e57fcd7f8f3e427 Mon Sep 17 00:00:00 2001 From: c0mrade Date: Tue, 26 May 2026 15:24:01 +0300 Subject: [PATCH] chore(types): replace deprecated FormEvent with SyntheticEvent MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit React 19's @types/react flags FormEvent as deprecated — quote: 'FormEvent doesn't actually exist. You probably meant to use ChangeEvent, InputEvent, SubmitEvent, or just SyntheticEvent'. All 17 call sites in this repo typed form onSubmit handlers and only called e.preventDefault(), so SyntheticEvent is the correct general replacement. No behavior change — pure type-level cleanup that clears the chronic deprecation hint that has been showing up after every edit to any form-bearing page. --- src/components/PromptDialogHost.tsx | 4 ++-- src/pages/AdminBulkActions.tsx | 2 +- src/pages/AdminPartnerSettings.tsx | 2 +- src/pages/AdminPolicyEdit.tsx | 2 +- src/pages/AdminRoleAssign.tsx | 2 +- src/pages/AdminRoleEdit.tsx | 2 +- src/pages/AdminServerEdit.tsx | 2 +- src/pages/AdminTicketSettings.tsx | 2 +- src/pages/AdminTickets.tsx | 2 +- src/pages/AdminTrafficUsage.tsx | 2 +- src/pages/AdminUsers.tsx | 2 +- src/pages/AdminWheel.tsx | 2 +- src/pages/ConnectedAccounts.tsx | 2 +- src/pages/Login.tsx | 4 ++-- src/pages/ReferralPartnerApply.tsx | 4 ++-- src/pages/ReferralWithdrawalRequest.tsx | 4 ++-- src/pages/ResetPassword.tsx | 2 +- 17 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/components/PromptDialogHost.tsx b/src/components/PromptDialogHost.tsx index 204943e..c4f577d 100644 --- a/src/components/PromptDialogHost.tsx +++ b/src/components/PromptDialogHost.tsx @@ -1,4 +1,4 @@ -import { useEffect, useState, type FormEvent } from 'react'; +import { useEffect, useState, type SyntheticEvent } from 'react'; import { createPortal } from 'react-dom'; import { useTranslation } from 'react-i18next'; import { useFocusTrap } from '../hooks/useFocusTrap'; @@ -25,7 +25,7 @@ export function PromptDialogHost() { if (!request) return null; - const handleSubmit = (e: FormEvent) => { + const handleSubmit = (e: SyntheticEvent) => { e.preventDefault(); const trimmed = value.trim(); if (!trimmed) { diff --git a/src/pages/AdminBulkActions.tsx b/src/pages/AdminBulkActions.tsx index 15116da..a53500f 100644 --- a/src/pages/AdminBulkActions.tsx +++ b/src/pages/AdminBulkActions.tsx @@ -1704,7 +1704,7 @@ export default function AdminBulkActions() { return () => clearTimeout(searchTimerRef.current); }, []); - const handleSearchSubmit = (e: React.FormEvent) => { + const handleSearchSubmit = (e: React.SyntheticEvent) => { e.preventDefault(); clearTimeout(searchTimerRef.current); setOffset(0); diff --git a/src/pages/AdminPartnerSettings.tsx b/src/pages/AdminPartnerSettings.tsx index 319ba8e..ee96514 100644 --- a/src/pages/AdminPartnerSettings.tsx +++ b/src/pages/AdminPartnerSettings.tsx @@ -82,7 +82,7 @@ export default function AdminPartnerSettings() { formData.withdrawal_cooldown_days <= 365; const isValid = !formData.withdrawal_enabled || (isMinAmountValid && isCooldownValid); - const handleSubmit = (e: React.FormEvent) => { + const handleSubmit = (e: React.SyntheticEvent) => { e.preventDefault(); if (!isValid) return; updateMutation.mutate({ diff --git a/src/pages/AdminPolicyEdit.tsx b/src/pages/AdminPolicyEdit.tsx index dc2b710..e3f6504 100644 --- a/src/pages/AdminPolicyEdit.tsx +++ b/src/pages/AdminPolicyEdit.tsx @@ -320,7 +320,7 @@ export default function AdminPolicyEdit() { }, []); const handleSubmit = useCallback( - (e: React.FormEvent) => { + (e: React.SyntheticEvent) => { e.preventDefault(); setFormError(null); diff --git a/src/pages/AdminRoleAssign.tsx b/src/pages/AdminRoleAssign.tsx index e099336..8789a86 100644 --- a/src/pages/AdminRoleAssign.tsx +++ b/src/pages/AdminRoleAssign.tsx @@ -351,7 +351,7 @@ export default function AdminRoleAssign() { }, []); const handleAssign = useCallback( - (e: React.FormEvent) => { + (e: React.SyntheticEvent) => { e.preventDefault(); setFormError(null); setFormSuccess(null); diff --git a/src/pages/AdminRoleEdit.tsx b/src/pages/AdminRoleEdit.tsx index 0e8f609..9833c63 100644 --- a/src/pages/AdminRoleEdit.tsx +++ b/src/pages/AdminRoleEdit.tsx @@ -334,7 +334,7 @@ export default function AdminRoleEdit() { }, []); const handleSubmit = useCallback( - (e: React.FormEvent) => { + (e: React.SyntheticEvent) => { e.preventDefault(); setFormError(null); diff --git a/src/pages/AdminServerEdit.tsx b/src/pages/AdminServerEdit.tsx index 344c1b0..8ab1ba1 100644 --- a/src/pages/AdminServerEdit.tsx +++ b/src/pages/AdminServerEdit.tsx @@ -54,7 +54,7 @@ export default function AdminServerEdit() { }, }); - const handleSubmit = (e: React.FormEvent) => { + const handleSubmit = (e: React.SyntheticEvent) => { e.preventDefault(); const data: ServerUpdateRequest = { display_name: displayName, diff --git a/src/pages/AdminTicketSettings.tsx b/src/pages/AdminTicketSettings.tsx index f69c44f..bc3d0c9 100644 --- a/src/pages/AdminTicketSettings.tsx +++ b/src/pages/AdminTicketSettings.tsx @@ -87,7 +87,7 @@ export default function AdminTicketSettings() { const isValid = !formData.sla_enabled || (isSlaMinutesValid && isCheckIntervalValid && isReminderCooldownValid); - const handleSubmit = (e: React.FormEvent) => { + const handleSubmit = (e: React.SyntheticEvent) => { e.preventDefault(); if (!isValid) return; updateMutation.mutate({ diff --git a/src/pages/AdminTickets.tsx b/src/pages/AdminTickets.tsx index 91dc570..7f67df8 100644 --- a/src/pages/AdminTickets.tsx +++ b/src/pages/AdminTickets.tsx @@ -177,7 +177,7 @@ export default function AdminTickets() { } }; - const handleReply = async (e: React.FormEvent) => { + const handleReply = async (e: React.SyntheticEvent) => { e.preventDefault(); if (!selectedTicketId) return; if (attachments.some((a) => a.uploading || a.error)) return; diff --git a/src/pages/AdminTrafficUsage.tsx b/src/pages/AdminTrafficUsage.tsx index eb350b7..e8b0a58 100644 --- a/src/pages/AdminTrafficUsage.tsx +++ b/src/pages/AdminTrafficUsage.tsx @@ -1221,7 +1221,7 @@ export default function AdminTrafficUsage() { } }, [toast]); - const handleSearch = (e: React.FormEvent) => { + const handleSearch = (e: React.SyntheticEvent) => { e.preventDefault(); setOffset(0); setCommittedSearch(searchInput); diff --git a/src/pages/AdminUsers.tsx b/src/pages/AdminUsers.tsx index f9cf57e..31e8636 100644 --- a/src/pages/AdminUsers.tsx +++ b/src/pages/AdminUsers.tsx @@ -210,7 +210,7 @@ export default function AdminUsers() { }); const stats = statsQuery.data ?? null; - const handleSearch = (e: React.FormEvent) => { + const handleSearch = (e: React.SyntheticEvent) => { e.preventDefault(); }; diff --git a/src/pages/AdminWheel.tsx b/src/pages/AdminWheel.tsx index bb1c6b2..d14bc25 100644 --- a/src/pages/AdminWheel.tsx +++ b/src/pages/AdminWheel.tsx @@ -1076,7 +1076,7 @@ function InlinePrizeForm({ promo_traffic_gb: prize?.promo_traffic_gb || 0, }); - const handleSubmit = (e: React.FormEvent) => { + const handleSubmit = (e: React.SyntheticEvent) => { e.preventDefault(); onSave({ ...formData, diff --git a/src/pages/ConnectedAccounts.tsx b/src/pages/ConnectedAccounts.tsx index 94d84a1..43df293 100644 --- a/src/pages/ConnectedAccounts.tsx +++ b/src/pages/ConnectedAccounts.tsx @@ -420,7 +420,7 @@ export default function ConnectedAccounts() { }, }); - const handleEmailSubmit = (e: React.FormEvent) => { + const handleEmailSubmit = (e: React.SyntheticEvent) => { e.preventDefault(); setEmailError(null); setEmailSuccess(null); diff --git a/src/pages/Login.tsx b/src/pages/Login.tsx index 776c92f..cf0b45d 100644 --- a/src/pages/Login.tsx +++ b/src/pages/Login.tsx @@ -221,7 +221,7 @@ export default function Login() { } }; - const handleEmailSubmit = async (e: React.FormEvent) => { + const handleEmailSubmit = async (e: React.SyntheticEvent) => { e.preventDefault(); setError(''); @@ -282,7 +282,7 @@ export default function Login() { } }; - const handleForgotPassword = async (e: React.FormEvent) => { + const handleForgotPassword = async (e: React.SyntheticEvent) => { e.preventDefault(); setForgotPasswordError(''); diff --git a/src/pages/ReferralPartnerApply.tsx b/src/pages/ReferralPartnerApply.tsx index c845fd0..e812755 100644 --- a/src/pages/ReferralPartnerApply.tsx +++ b/src/pages/ReferralPartnerApply.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect, type FormEvent } from 'react'; +import { useState, useEffect, type SyntheticEvent } from 'react'; import { useNavigate } from 'react-router'; import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { useTranslation } from 'react-i18next'; @@ -41,7 +41,7 @@ export default function ReferralPartnerApply() { }, }); - const handleSubmit = (e: FormEvent) => { + const handleSubmit = (e: SyntheticEvent) => { e.preventDefault(); const payload: PartnerApplicationRequest = {}; if (form.company_name) payload.company_name = form.company_name; diff --git a/src/pages/ReferralWithdrawalRequest.tsx b/src/pages/ReferralWithdrawalRequest.tsx index 455c334..7e3e701 100644 --- a/src/pages/ReferralWithdrawalRequest.tsx +++ b/src/pages/ReferralWithdrawalRequest.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect, type FormEvent } from 'react'; +import { useState, useEffect, type SyntheticEvent } from 'react'; import { useNavigate } from 'react-router'; import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { useTranslation } from 'react-i18next'; @@ -37,7 +37,7 @@ export default function ReferralWithdrawalRequest() { }, }); - const handleSubmit = (e: FormEvent) => { + const handleSubmit = (e: SyntheticEvent) => { e.preventDefault(); if (form.payment_details.length < 5) return; if (form.amount_rubles <= 0) return; diff --git a/src/pages/ResetPassword.tsx b/src/pages/ResetPassword.tsx index 8a9849a..f518075 100644 --- a/src/pages/ResetPassword.tsx +++ b/src/pages/ResetPassword.tsx @@ -15,7 +15,7 @@ export default function ResetPassword() { const [status, setStatus] = useState<'form' | 'loading' | 'success' | 'error'>('form'); const [error, setError] = useState(''); - const handleSubmit = async (e: React.FormEvent) => { + const handleSubmit = async (e: React.SyntheticEvent) => { e.preventDefault(); setError('');