import { useState } from 'react' import { createFileRoute } from '@tanstack/react-router' import { useQueryClient } from '@tanstack/react-query' import { KeyRound, CheckCircle2 } from 'lucide-react' import { useGetPairingStatus, useSubmitPairingPin, getGetPairingStatusQueryKey, } from '@/api/gen/pairing/pairing' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { QueryState } from '@/components/query-state' import { m } from '@/paraglide/messages' import { useLocale } from '@/lib/i18n' export const Route = createFileRoute('/pairing')({ component: PairingPage }) function PairingPage() { useLocale() const qc = useQueryClient() const [pin, setPin] = useState('') // Poll: the host flips pin_pending when a Moonlight client begins pairing. const pairing = useGetPairingStatus({ query: { refetchInterval: 2_000 } }) const submit = useSubmitPairingPin() const pending = pairing.data?.pin_pending ?? false const onSubmit = (e: React.FormEvent) => { e.preventDefault() submit.mutate( { data: { pin } }, { onSuccess: () => { setPin('') qc.invalidateQueries({ queryKey: getGetPairingStatusQueryKey() }) }, }, ) } return (
{m.pairing_idle()}
) : ( )}