import { useState } from 'react' import { createFileRoute } from '@tanstack/react-router' import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query' import { useTranslation } from 'react-i18next' import { toast } from '@/shared/ui/toast-store' import { Button } from '@/shared/ui/button' import { Badge } from '@/shared/ui/badge' import { listAdminApps, deleteApp } from '@/features/admin/apps/api' import { AppFormDialog } from '@/features/admin/apps/AppFormDialog' import type { AdminAppDto, OsPlatform } from '@/shared/api/types' export const Route = createFileRoute('/admin/apps')({ component: AdminAppsPage }) const OS_ORDER: OsPlatform[] = ['IOS', 'Android', 'Windows', 'MacOS', 'Linux'] function AdminAppsPage() { const { t } = useTranslation() const queryClient = useQueryClient() const [editing, setEditing] = useState(null) const { data, isLoading, isError, refetch } = useQuery({ queryKey: ['admin-apps'], queryFn: listAdminApps }) const deleteMutation = useMutation({ mutationFn: deleteApp, onSuccess: async () => { toast.success(t('admin.apps.deleted')) await queryClient.invalidateQueries({ queryKey: ['admin-apps'] }) }, onError: () => toast.error(t('auth.genericError')), }) return (
{isLoading &&

} {isError && (

{t('auth.genericError')}

)} {data?.length === 0 &&

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

} {data && (
{OS_ORDER.filter((os) => data.some((a) => a.operatingSystem === os)).map((os) => (

{t(`instructions.os.${os}`)}

{data .filter((a) => a.operatingSystem === os) .map((app) => (
{app.name} {!app.isEnabled && {t('admin.apps.disabled')}}
))}
))}
)} {editing && !open && setEditing(null)} />}
) }