'use client' import { useState, useTransition } from 'react' import { useRouter } from 'next/navigation' import { Bell, BellOff, Link2, Loader2, Trash2 } from 'lucide-react' import { toast } from 'sonner' import { Button } from '@/components/ui/button' import { chatEntfernen, chatMeldungenUmschalten, kopplungAnfordern, } from '@/server/aktionen/integrationen' export type ChatAnzeige = { id: string chatId: string bezeichnung: string | null meldungen: boolean erstelltAm: string zuletztBenutzt: string | null } export function TelegramChats({ chats }: { chats: ChatAnzeige[] }) { const router = useRouter() const [laeuft, starte] = useTransition() const [code, setCode] = useState<{ code: string; minuten: number } | null>(null) function anfordern() { starte(async () => { const antwort = await kopplungAnfordern() if (antwort.ok) { setCode({ code: antwort.code, minuten: antwort.minuten }) } else { toast.error(antwort.fehler) } }) } function mitRueckmeldung( tun: () => Promise<{ ok: boolean; meldung?: string; fehler?: string }>, ) { starte(async () => { const antwort = await tun() if (antwort.ok) { toast.success(antwort.meldung ?? 'Erledigt.') router.refresh() } else { toast.error(antwort.fehler ?? 'Das hat nicht geklappt.') } }) } return (
Noch kein Chat verbunden. Ohne Verbindung nimmt der Bot nichts an.
) : ({chat.bezeichnung ?? `Chat ${chat.chatId}`}
Verbunden {chat.erstelltAm} {chat.zuletztBenutzt ? ` · zuletzt benutzt ${chat.zuletztBenutzt}` : ' · noch nichts geschickt'}
Schick dem Bot jetzt diesen Code — als Nachricht oder als{' '}
/start {code.code}:
{code.code}
Gültig für {code.minuten} Minuten und nur ein einziges Mal. Danach erscheint der Chat hier — spätestens nach dem nächsten Abholen.