fix: odkaz Otvorit v Brevo vedie priamo na upravu kampane (uloha 17)

Namiesto napevno zadaneho zoznamu kampani (404) sa odkaz sklada z ID
kampane: app.brevo.com/marketing-campaign/edit/{id}.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Jakub_HostacnyandClaude Opus 5.5 committed 2026-10-19 10:22:36 +02:00
1 parent 2c3f09f18f
commit 21320e792b
5 files changed
+15 -7

No files matched your search

+3 -2
View File
@@ -1,4 +1,5 @@
import { NextRequest, NextResponse } from 'next/server';
import { getBrevoCampaignUrl } from '@/lib/brevo';
export async function POST(req: NextRequest) {
try {
@@ -63,7 +64,7 @@ export async function POST(req: NextRequest) {
success: true,
updated: true,
campaignId: Number(existingCampaignId),
brevoUrl: 'https://app.brevo.com/campaigns/listing',
brevoUrl: getBrevoCampaignUrl(existingCampaignId),
brevoListingUrl: 'https://app.brevo.com/campaigns/listing',
message: 'Kampaň bola úspešne aktualizovaná v Brevo!'
});
@@ -113,7 +114,7 @@ export async function POST(req: NextRequest) {
success: true,
updated: false,
campaignId: data.id,
brevoUrl: 'https://app.brevo.com/campaigns/listing',
brevoUrl: getBrevoCampaignUrl(data.id),
brevoListingUrl: 'https://app.brevo.com/campaigns/listing',
message: 'Kampaň bola úspešne vytvorená v Brevo!'
});
+2 -1
View File
@@ -1,4 +1,5 @@
import { NextRequest, NextResponse } from 'next/server';
import { getBrevoCampaignUrl } from '@/lib/brevo';
export async function GET(req: NextRequest) {
try {
@@ -51,7 +52,7 @@ export async function GET(req: NextRequest) {
name: data.name,
status: data.status,
subject: data.subject,
brevoUrl: 'https://app.brevo.com/campaigns/listing',
brevoUrl: getBrevoCampaignUrl(data.id),
brevoListingUrl: 'https://app.brevo.com/campaigns/listing'
});
} catch (err: any) {
+3 -2
View File
@@ -6,6 +6,7 @@ import { DEFAULT_CAMPAIGN, SUPABASE_ASSETS_BASE } from '@/lib/defaultCampaign';
import { renderEmailHtml, renderSingleModuleHtml } from '@/lib/emailRenderer';
import { supabase } from '@/lib/supabase';
import { DEFAULT_BADGE_TEMPLATES } from '@/lib/badgeUtils';
import { getBrevoCampaignUrl } from '@/lib/brevo';
import { TopBar } from '@/components/editor/TopBar';
import { ConfigPanel } from '@/components/editor/ConfigPanel';
import { ProductImportModal } from '@/components/editor/ProductImportModal';
@@ -144,7 +145,7 @@ export default function Home() {
modules: enforceAnchors(dbItem.data.modules)
});
if (dbItem.brevo_campaign_id) {
setBrevoUrl('https://app.brevo.com/campaigns/listing');
setBrevoUrl(getBrevoCampaignUrl(dbItem.brevo_campaign_id));
}
}
}
@@ -831,7 +832,7 @@ export default function Home() {
setCampaign({ ...selected, modules: enforceAnchors(selected.modules) });
setSelectedModuleId(selected.modules[1]?.id || selected.modules[0]?.id || null);
if (selected.brevoCampaignId) {
setBrevoUrl('https://app.brevo.com/campaigns');
setBrevoUrl(getBrevoCampaignUrl(selected.brevoCampaignId));
} else {
setBrevoUrl(null);
}
+3 -2
View File
@@ -16,6 +16,7 @@ import {
Check
} from 'lucide-react';
import { NewsletterCampaign } from '@/types/newsletter';
import { getBrevoCampaignUrl } from '@/lib/brevo';
interface TopBarProps {
campaign: NewsletterCampaign;
@@ -214,11 +215,11 @@ export const TopBar: React.FC<TopBarProps> = ({
<div className="flex items-center gap-1.5 bg-emerald-50 border border-emerald-200 p-1 rounded-xl">
{/* Odkaz na zoznam / úpravu v Brevo */}
<a
href={brevoCampaignUrl || brevoListingUrl || 'https://app.brevo.com/campaigns/listing'}
href={getBrevoCampaignUrl(campaign.brevoCampaignId)}
target="_blank"
rel="noreferrer"
className="flex items-center gap-1 text-xs font-bold text-white bg-emerald-600 hover:bg-emerald-700 px-3 py-1.2 rounded-lg transition-all shadow-xs"
title={`Kampaň #${campaign.brevoCampaignId} je v Brevo (${brevoCampaignStatus || 'draft'}). Kliknutím otvoríte zoznam kampaní v Brevo.`}
title={`Kampaň #${campaign.brevoCampaignId} je v Brevo (${brevoCampaignStatus || 'draft'}). Kliknutím ju otvoríte v Brevo.`}
>
<ExternalLink className="w-3.5 h-3.5" />
<span>Otvoriť v Brevo</span>
+4
View File
@@ -0,0 +1,4 @@
// Priamy odkaz na úpravu konkrétnej kampane v Brevo
export function getBrevoCampaignUrl(campaignId: number | string): string {
return `https://app.brevo.com/marketing-campaign/edit/${encodeURIComponent(String(campaignId))}`;
}