import { useNavigate } from 'react-router'; import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { useTranslation } from 'react-i18next'; import { adminAppsApi } from '../api/adminApps'; import { usePlatform } from '../platform/hooks/usePlatform'; import { BackIcon } from '@/components/icons'; export default function AdminApps() { const { t } = useTranslation(); const navigate = useNavigate(); const queryClient = useQueryClient(); const { capabilities } = usePlatform(); // Remnawave status const { data: status } = useQuery({ queryKey: ['remnawave-status'], queryFn: adminAppsApi.getRemnaWaveStatus, staleTime: 60000, }); // Available configs const { data: configs, isLoading: isLoadingConfigs } = useQuery({ queryKey: ['remnawave-configs-list'], queryFn: adminAppsApi.listRemnaWaveConfigs, staleTime: 30000, }); // Set UUID mutation const setUuidMutation = useMutation({ mutationFn: adminAppsApi.setRemnaWaveUuid, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['remnawave-status'] }); queryClient.invalidateQueries({ queryKey: ['remnawave-config'] }); queryClient.invalidateQueries({ queryKey: ['appConfig'] }); }, }); const currentUuid = status?.config_uuid || ''; return (
{/* Header */}
{!capabilities.hasBackButton && ( )}

{t('admin.apps.title')}

{/* Status card */}
{status?.enabled ? t('admin.apps.remnaWaveConnected', 'Remnawave connected') : t('admin.apps.remnaWaveDisconnected', 'Remnawave not connected')}
{status?.config_uuid && (
UUID: {status.config_uuid}
)}
{/* Available configs */}

{t('admin.apps.availableConfigs', 'Available configs')}

{isLoadingConfigs ? (
) : configs && configs.length > 0 ? (
{configs.map((config) => ( ))}
) : (
{t('admin.apps.noConfigs', 'No configs available')}
)}
); }