import { useNavigate } from 'react-router';
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
import { useTranslation } from 'react-i18next';
import { serversApi, ServerListItem } from '../api/servers';
import { SyncIcon, EditIcon, CheckIcon, XIcon, UsersIcon, GiftIcon } from '../components/icons';
import { usePlatform } from '../platform/hooks/usePlatform';
import Twemoji from 'react-twemoji';
// BackIcon
const BackIcon = () => (
);
// Country flags (simple emoji mapping)
import { getFlagEmoji as getCountryFlag } from '../utils/subscriptionHelpers';
export default function AdminServers() {
const { t } = useTranslation();
const navigate = useNavigate();
const queryClient = useQueryClient();
const { capabilities } = usePlatform();
// Queries
const { data: serversData, isLoading } = useQuery({
queryKey: ['admin-servers'],
queryFn: () => serversApi.getServers(true),
});
// Mutations
const toggleMutation = useMutation({
mutationFn: serversApi.toggleServer,
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['admin-servers'] });
},
});
const toggleTrialMutation = useMutation({
mutationFn: serversApi.toggleTrial,
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['admin-servers'] });
},
});
const syncMutation = useMutation({
mutationFn: serversApi.syncServers,
onSuccess: (result) => {
queryClient.invalidateQueries({ queryKey: ['admin-servers'] });
alert(result.message);
},
});
const servers = serversData?.servers || [];
return (
{/* Header */}
{/* Show back button only on web, not in Telegram Mini App */}
{!capabilities.hasBackButton && (
)}
{t('admin.servers.title')}
{t('admin.servers.subtitle')}
{/* Servers List */}
{isLoading ? (
) : servers.length === 0 ? (
{t('admin.servers.noServers')}
) : (
{servers.map((server: ServerListItem) => (
{getCountryFlag(server.country_code)}
{server.display_name}
{server.is_trial_eligible && (
{t('admin.servers.trial')}
)}
{!server.is_available && (
{t('admin.servers.unavailable')}
)}
{server.is_full && (
{t('admin.servers.full')}
)}
{server.current_users}
{server.max_users ? ` / ${server.max_users}` : ''}
{server.price_rubles} ₽
{server.squad_uuid}
{/* Toggle Available */}
{/* Toggle Trial */}
{/* Edit */}
))}
)}
);
}