import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query' import { useState } from 'react' import { useTranslation } from '@shared/i18n/react' import { Link } from 'react-router' import { Button } from '@shared/ui/Button' import { listDevices, revokeDevice, type DeviceLink } from '../api' function relativeDate(iso: string): string { return new Intl.DateTimeFormat('ru-RU', { dateStyle: 'long' }).format(new Date(iso)) } function DeviceRow({ device }: { device: DeviceLink }) { const { t } = useTranslation('account') const client = useQueryClient() const [confirming, setConfirming] = useState(false) const mutation = useMutation({ mutationFn: () => revokeDevice(device.id), onSuccess: () => client.invalidateQueries({ queryKey: ['devices'] }), }) return (
  • {t('devices.linkedAt', { date: relativeDate(device.linked_at) })}

    {t('devices.lastSeen', { when: device.last_seen ? relativeDate(device.last_seen) : t('devices.neverSeen') })}

    {confirming ? (
    ) : ( )}
  • ) } /** ClickGui-like rows listing devices the mod linked, each with a two-step confirm to revoke. */ export function DeviceList() { const { t } = useTranslation('account') const query = useQuery({ queryKey: ['devices'], queryFn: listDevices }) const devices = query.data ?? [] return (

    {t('devices.heading')}

    {devices.length === 0 ? (

    {t('devices.empty')}{' '} {t('devices.emptyLink')}

    ) : ( )}
    ) }