import { useState } from 'react'; import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { useTranslation } from 'react-i18next'; import { Link } from 'react-router-dom'; import { serversApi, ServerListItem, ServerDetail, ServerUpdateRequest } from '../api/servers'; // Icons const BackIcon = () => ( ); const SyncIcon = () => ( ); const EditIcon = () => ( ); const CheckIcon = () => ( ); const XIcon = () => ( ); const UsersIcon = () => ( ); // Country flags (simple emoji mapping) const getCountryFlag = (code: string | null): string => { if (!code) return ''; const codeMap: Record = { RU: '🇷🇺', US: '🇺🇸', DE: '🇩🇪', NL: '🇳🇱', GB: '🇬🇧', FR: '🇫🇷', FI: '🇫🇮', SE: '🇸🇪', PL: '🇵🇱', CZ: '🇨🇿', AT: '🇦🇹', CH: '🇨🇭', UA: '🇺🇦', KZ: '🇰🇿', JP: '🇯🇵', KR: '🇰🇷', SG: '🇸🇬', HK: '🇭🇰', CA: '🇨🇦', AU: '🇦🇺', BR: '🇧🇷', IN: '🇮🇳', TR: '🇹🇷', IL: '🇮🇱', AE: '🇦🇪', }; return codeMap[code.toUpperCase()] || code; }; interface ServerModalProps { server: ServerDetail; onSave: (data: ServerUpdateRequest) => void; onClose: () => void; isLoading?: boolean; } function ServerModal({ server, onSave, onClose, isLoading }: ServerModalProps) { const { t } = useTranslation(); const [displayName, setDisplayName] = useState(server.display_name); const [description, setDescription] = useState(server.description || ''); const [countryCode, setCountryCode] = useState(server.country_code || ''); const [priceKopeks, setPriceKopeks] = useState(server.price_kopeks); const [maxUsers, setMaxUsers] = useState(server.max_users); const [sortOrder, setSortOrder] = useState(server.sort_order); const handleSubmit = () => { const data: ServerUpdateRequest = { display_name: displayName, description: description || undefined, country_code: countryCode || undefined, price_kopeks: priceKopeks, max_users: maxUsers || undefined, sort_order: sortOrder, }; onSave(data); }; return (
{/* Header */}
{getCountryFlag(server.country_code)}

{t('admin.servers.edit')}

{/* Content */}
{/* Original Name (readonly) */}
{server.original_name || server.squad_uuid}
{/* Display Name */}
setDisplayName(e.target.value)} className="w-full rounded-lg border border-dark-600 bg-dark-700 px-3 py-2 text-dark-100 focus:border-accent-500 focus:outline-none" placeholder={t('admin.servers.displayNamePlaceholder')} />
{/* Description */}