fonctionnalité majeure : setup ultra simplifié (installation/configuration des infos supabase directement du web)

This commit is contained in:
Yannick Le Duc
2025-08-28 14:05:32 +02:00
parent b7ce1145e3
commit f93c995815
26 changed files with 3066 additions and 341 deletions

View File

@@ -35,19 +35,31 @@ function CampaignParticipantsPageContent() {
const [copiedParticipantId, setCopiedParticipantId] = useState<string | null>(null);
useEffect(() => {
// Vérifier la configuration Supabase
const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL;
const supabaseAnonKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY;
// Si pas de configuration ou valeurs par défaut, rediriger vers setup
if (!supabaseUrl || !supabaseAnonKey ||
supabaseUrl === 'https://placeholder.supabase.co' ||
supabaseAnonKey === 'your-anon-key') {
console.log('🔧 Configuration Supabase manquante, redirection vers /setup');
window.location.href = '/setup';
return;
}
loadData();
}, [campaignId]);
const loadData = async () => {
try {
setLoading(true);
const [campaigns, participantsWithVoteStatus] = await Promise.all([
campaignService.getAll(),
const [campaignData, participantsWithVoteStatus] = await Promise.all([
campaignService.getById(campaignId),
voteService.getParticipantVoteStatus(campaignId)
]);
const campaignData = campaigns.find(c => c.id === campaignId);
setCampaign(campaignData || null);
setCampaign(campaignData);
setParticipants(participantsWithVoteStatus);
} catch (error) {
console.error('Erreur lors du chargement des données:', error);

View File

@@ -32,19 +32,31 @@ function CampaignPropositionsPageContent() {
const [selectedProposition, setSelectedProposition] = useState<Proposition | null>(null);
useEffect(() => {
// Vérifier la configuration Supabase
const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL;
const supabaseAnonKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY;
// Si pas de configuration ou valeurs par défaut, rediriger vers setup
if (!supabaseUrl || !supabaseAnonKey ||
supabaseUrl === 'https://placeholder.supabase.co' ||
supabaseAnonKey === 'your-anon-key') {
console.log('🔧 Configuration Supabase manquante, redirection vers /setup');
window.location.href = '/setup';
return;
}
loadData();
}, [campaignId]);
const loadData = async () => {
try {
setLoading(true);
const [campaigns, propositionsData] = await Promise.all([
campaignService.getAll(),
const [campaignData, propositionsData] = await Promise.all([
campaignService.getById(campaignId),
propositionService.getByCampaign(campaignId)
]);
const campaignData = campaigns.find(c => c.id === campaignId);
setCampaign(campaignData || null);
setCampaign(campaignData);
setPropositions(propositionsData);
} catch (error) {
console.error('Erreur lors du chargement des données:', error);

View File

@@ -74,6 +74,19 @@ function CampaignStatsPageContent() {
const [sortBy, setSortBy] = useState<SortOption>('total_impact');
useEffect(() => {
// Vérifier la configuration Supabase
const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL;
const supabaseAnonKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY;
// Si pas de configuration ou valeurs par défaut, rediriger vers setup
if (!supabaseUrl || !supabaseAnonKey ||
supabaseUrl === 'https://placeholder.supabase.co' ||
supabaseAnonKey === 'your-anon-key') {
console.log('🔧 Configuration Supabase manquante, redirection vers /setup');
window.location.href = '/setup';
return;
}
if (campaignId) {
loadData();
}
@@ -82,14 +95,13 @@ function CampaignStatsPageContent() {
const loadData = async () => {
try {
setLoading(true);
const [campaigns, participantsData, propositionsData, votesData] = await Promise.all([
campaignService.getAll(),
const [campaignData, participantsData, propositionsData, votesData] = await Promise.all([
campaignService.getById(campaignId),
participantService.getByCampaign(campaignId),
propositionService.getByCampaign(campaignId),
voteService.getByCampaign(campaignId)
]);
const campaignData = campaigns.find(c => c.id === campaignId);
if (!campaignData) {
throw new Error('Campagne non trouvée');
}