'use client'; import React, { useState, useEffect } from 'react'; import { Download, Send, ExternalLink, CheckCircle2, Plus, FolderOpen, Save, Copy, Edit2, RefreshCw, UploadCloud, Check, MessageSquare } from 'lucide-react'; import { NewsletterCampaign } from '@/types/newsletter'; import { getBrevoCampaignUrl } from '@/lib/brevo'; interface TopBarProps { campaign: NewsletterCampaign; isSaving: boolean; onSave: () => void; onUpdateTitle: (title: string) => void; onOpenSavedCampaigns: () => void; onDuplicateCampaign: () => void; onExportZip: () => void; onExportBrevo: (updateExisting?: boolean) => void; isExportingBrevo: boolean; brevoCampaignUrl?: string | null; brevoListingUrl?: string | null; onClearBrevoId?: () => void; onAddModule: (type: any) => void; onOpenReviews?: () => void; reviewOpenCount?: number; // počet otvorených pripomienok } export const TopBar: React.FC = ({ campaign, isSaving, onSave, onUpdateTitle, onOpenSavedCampaigns, onDuplicateCampaign, onExportZip, onExportBrevo, isExportingBrevo, onClearBrevoId, onAddModule, onOpenReviews, reviewOpenCount = 0 }) => { const [isEditingTitle, setIsEditingTitle] = useState(false); const [isVerifyingBrevo, setIsVerifyingBrevo] = useState(false); const [isVerifiedInBrevo, setIsVerifiedInBrevo] = useState(false); const [brevoCampaignStatus, setBrevoCampaignStatus] = useState(null); // Funkcia na reálne overenie existencie kampane priamo cez Brevo API const verifyCampaignInBrevo = async (campaignId?: number) => { const idToCheck = campaignId || campaign.brevoCampaignId; if (!idToCheck) { setIsVerifiedInBrevo(false); setBrevoCampaignStatus(null); return; } setIsVerifyingBrevo(true); try { const res = await fetch(`/api/brevo/verify?campaignId=${encodeURIComponent(idToCheck)}`); const data = await res.json(); if (data.exists) { setIsVerifiedInBrevo(true); setBrevoCampaignStatus(data.status || 'draft'); } else { // Kampaň v Brevo reálne neexistuje (vymazaná alebo prenos zlyhal) setIsVerifiedInBrevo(false); setBrevoCampaignStatus(null); if (onClearBrevoId) { onClearBrevoId(); } } } catch (err) { console.warn('Chyba pri overovaní Brevo kampane:', err); } finally { setIsVerifyingBrevo(false); } }; // Pri zmene brevoCampaignId automaticky overíme stav v Brevo useEffect(() => { if (campaign.brevoCampaignId) { verifyCampaignInBrevo(campaign.brevoCampaignId); } else { setIsVerifiedInBrevo(false); setBrevoCampaignStatus(null); } }, [campaign.brevoCampaignId]); return (
{/* Ľavá časť: Logo, Moje newslettre, Titulok a stav */}
COOP
{/* Tlačidlo Moje newslettre */}
{/* Názov kampane */}
{isEditingTitle ? ( onUpdateTitle(e.target.value)} onBlur={() => setIsEditingTitle(false)} onKeyDown={(e) => { if (e.key === 'Enter') setIsEditingTitle(false); }} className="text-xs font-bold text-gray-900 border border-blue-400 rounded px-2 py-0.5 outline-none bg-blue-50/50 w-56" /> ) : (
setIsEditingTitle(true)} className="group flex items-center gap-1.5 cursor-pointer" title="Kliknite pre úpravu názvu" >

{campaign.title || 'COOP Jednota Newsletter'}

)}
{isSaving ? ( Ukladám... ) : ( Uložené )}
{/* Pridanie sekcie */}
{/* Pravá časť: Uložiť, Duplikovať, Export do ZIP a Inteligentné Brevo akcie */}
{/* Pripomienky cez zdieľaný odkaz */} {onOpenReviews && ( )} {/* Tlačidlo manuálneho uloženia */} {/* Tlačidlo duplikovania celej kampane */} {/* BREVO SEKČNÉ OVLÁDANIE S REÁLNYM OVERENÍM */} {isVerifyingBrevo ? (
Overujem v Brevo...
) : isVerifiedInBrevo && campaign.brevoCampaignId ? ( /* Kampaň je overená priamo v Brevo: Ponúkame úpravu, aktualizáciu alebo odoslanie ako novú */
{/* Odkaz na zoznam / úpravu v Brevo */} Otvoriť v Brevo {/* Tlačidlo na aktualizáciu existujúcej kampane */} {/* Tlačidlo na odoslanie ako úplne novej kampane */} {/* Tlačidlo na overenie stavu */}
) : ( /* Kampaň v Brevo nie je overená / neexistuje: Zobrazujeme tlačidlo na prvotné odoslanie */ )}
); };