import { useDeviceId } from "@/shared/hooks/use-device-id" import { useEffect, useState } from "react" import { useLegislation } from "../hooks/use-legislation" import { useUserVote } from "../hooks/use-user-vote" import { fetchLegislationResults } from "../lib/legislation-api" import { VoteResult } from "./vote-result" import { VoteWidget } from "./vote-widget" interface LegislationDetailProps { legislationId: number } export function LegislationDetail({ legislationId }: LegislationDetailProps) { const { legislation, loading, error } = useLegislation(legislationId) const { vote, castVote } = useUserVote(legislationId) const [showFullText, setShowFullText] = useState(false) const deviceId = useDeviceId() const [results, setResults] = useState<{ pollId: number votes: { politicianId: number name: string fraction: string | null vote: string }[] } | null>(null) useEffect(() => { if (!deviceId) return fetchLegislationResults(legislationId, deviceId) .then(setResults) .catch(() => null) }, [legislationId, deviceId]) if (loading) { return
Laden…
} if (error || !legislation) { return (
{error ?? "Gesetzesvorlage nicht gefunden"}
) } return (

{legislation.title}

{legislation.beratungsstand && ( {legislation.beratungsstand} )}
{/* Summary or abstract */}
{legislation.summary ? (

{legislation.summary}

) : legislation.abstract ? (

{legislation.abstract}

) : (

Keine Zusammenfassung verfügbar

)}
{/* Full text toggle */} {legislation.fullText && (
{showFullText && (
							{legislation.fullText}
						
)}
)} {/* Vote section */}

Dein Vote

{vote && (

Du hast mit{" "} {vote === "ja" ? "Ja" : vote === "nein" ? "Nein" : "Enthaltung"} {" "} gestimmt. Du kannst deine Stimme jederzeit ändern.

)}
{results && vote && (

Ergebnis

)}
) }