feat: real Brevo API verifier, auto-reset if campaign missing, and update existing campaign support
This commit is contained in:
1 parent
2b4d3643cb
commit
99dd0f272e
4 files changed
+250
-27
No files matched your search
+28
-3
@@ -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}
|
||||
/>
|
||||
|
||||
|
||||
Reference in new issue
Block a user