feat: real Brevo API verifier, auto-reset if campaign missing, and update existing campaign support

This commit is contained in:
Jakub_Hostacny committed 2026-09-24 11:46:40 +02:00
1 parent 2b4d3643cb
commit 99dd0f272e
4 files changed
+250 -27

No files matched your search

+28 -3
View File
@@ -370,7 +370,7 @@ export default function Home() {
saveAs(blob, `coop-newsletter-${new Date().toISOString().split('T')[0]}.zip`);
};
const handleExportBrevo = async () => {
const handleExportBrevo = async (updateExisting = false) => {
setIsExportingBrevo(true);
try {
const rawHtml = renderEmailHtml(campaign);
@@ -391,14 +391,22 @@ export default function Home() {
body: JSON.stringify({
campaignName: `${campaign.title} - ${new Date().toLocaleDateString('sk-SK')}`,
subject: campaign.title,
htmlContent: finalHtml
htmlContent: finalHtml,
updateExisting: updateExisting,
existingCampaignId: campaign.brevoCampaignId
})
});
const resData = await response.json();
if (resData.success && resData.campaignId) {
setCampaign((prev) => ({
...prev,
brevoCampaignId: resData.campaignId,
status: 'exported'
}));
setBrevoUrl(resData.brevoUrl);
if (campaign.id) {
await supabase
.from('templates')
@@ -408,7 +416,12 @@ export default function Home() {
})
.eq('id', campaign.id);
}
alert('Kampaň bola úspešne odoslaná do Brevo!');
alert(
resData.message ||
(updateExisting
? 'Kampaň bola v Brevo úspešne aktualizovaná!'
: 'Kampaň bola úspešne odoslaná do Brevo!')
);
} else {
alert(`Chyba pri exporte do Brevo: ${resData.error || 'Neznáma chyba'}`);
}
@@ -419,6 +432,17 @@ export default function Home() {
}
};
const handleClearBrevoId = async () => {
setCampaign((prev) => ({ ...prev, brevoCampaignId: undefined }));
setBrevoUrl(null);
if (campaign.id) {
await supabase
.from('templates')
.update({ brevo_campaign_id: null })
.eq('id', campaign.id);
}
};
// Vybraný produkt pre editor cenoviek
let targetProduct: ProductItem | null = null;
if (targetProductIdForBadge && selectedModule?.data?.products) {
@@ -465,6 +489,7 @@ export default function Home() {
isExportingBrevo={isExportingBrevo}
brevoCampaignUrl={brevoUrl}
brevoListingUrl="https://app.brevo.com/campaigns/listing"
onClearBrevoId={handleClearBrevoId}
onAddModule={handleAddModule}
/>