Felix Zieger
updates
1a45d5d
import { Dialog, DialogContent } from "@/components/ui/dialog";
import { useTranslation } from "@/hooks/useTranslation";
import { ExternalLink } from "lucide-react";
import { useQuery } from "@tanstack/react-query";
import { supabase } from "@/integrations/supabase/client";
export const StatsDialog = ({
open,
onOpenChange,
}: {
open: boolean;
onOpenChange: (open: boolean) => void;
}) => {
const t = useTranslation();
const { data: todayResults } = useQuery({
queryKey: ["game-results-today"],
queryFn: async () => {
const today = new Date();
today.setHours(0, 0, 0, 0);
const { count } = await supabase
.from("game_results")
.select("*", { count: "exact" })
.gte("created_at", today.toISOString());
return count || 0;
},
});
const { data: totalResults } = useQuery({
queryKey: ["game-results-total"],
queryFn: async () => {
const { count } = await supabase
.from("game_results")
.select("*", { count: "exact" });
return count || 0;
},
});
return (
<Dialog open={open} onOpenChange={onOpenChange}>
<DialogContent>
<div className="space-y-4">
<div>
<h3 className="font-semibold text-lg">{t.welcome.stats.title}</h3>
</div>
<div className="space-y-2">
<p>
{t.welcome.stats.dailyGuesses}: {todayResults || 0}
</p>
<p>
{t.welcome.stats.totalGuesses}: {totalResults || 0}
</p>
</div>
<div>
<a
href="https://plausible.sonnenhof-zieger.de/think-in-sync.com"
target="_blank"
rel="noopener noreferrer"
className="inline-flex items-center gap-2 text-primary hover:text-primary/80 transition-colors"
>
{t.welcome.stats.visitDashboard}
<ExternalLink className="w-4 h-4" />
</a>
</div>
</div>
</DialogContent>
</Dialog>
);
};