import Link from "next/link"; import { redirect } from "next/navigation"; import { createClient } from "@/lib/supabase/server"; import { QuestionsView } from "./questions-view"; export type QuestionRow = { id: string; text: string; position: number; created_at: string; }; export type SubmissionRow = { user_id: string; text: string; updated_at: string; profiles: { pseudo: string; avatar_url: string | null } | null; }; export type SubmissionHistoryRow = { user_id: string; text: string; created_at: string; }; export type ProfileRow = { id: string; pseudo: string; avatar_url: string | null; }; export default async function CharQuestionsPage() { const supabase = await createClient(); const { data: { user }, } = await supabase.auth.getUser(); if (!user) { redirect("/login"); } const { data: callerProfile } = await supabase .from("profiles") .select("role") .eq("id", user.id) .single(); // Page entièrement réservée aux Archontes : contrairement à /char (projeté, // partagé avec tous), rien ici n'a de sens pour un Citoyen — et exposer la // liste complète des questions à venir serait un spoiler du jeu en cours. if (callerProfile?.role !== "judge") { redirect("/char"); } const { data: questions } = await supabase .from("chariot_questions") .select("id, text, position, created_at") .order("position", { ascending: true }) .order("created_at", { ascending: true }); const { data: settings } = await supabase .from("settings") .select("chariot_revealed_question_id") .eq("id", true) .single(); const { data: submissions } = await supabase .from("chariot_submissions") .select("user_id, text, updated_at, profiles(pseudo, avatar_url)") .order("updated_at", { ascending: true }) .returns(); // Versions précédentes des propositions (chariot_submissions ne garde que // la version actuelle) — pour la section "Historique" de la modération. const { data: submissionHistory } = await supabase .from("chariot_submission_history") .select("user_id, text, created_at") .order("created_at", { ascending: false }); // Tout le monde (Archontes compris, comme pour les emplacements du Char // lui-même — voir chariot_slots) peut être visé par un tag "@pseudo" dans // une question. const { data: profiles } = await supabase .from("profiles") .select("id, pseudo, avatar_url") .order("pseudo", { ascending: true }); return (

Les Questions du Char

Réservé aux Archontes — /char (projetée) n'affiche que la question choisie ici.

← Retourner au Char
); }