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:
1 parent
2c3f09f18f
commit
21320e792b
5 files changed
+15
-7
No files matched your search
@@ -1,4 +1,5 @@
|
|||||||
import { NextRequest, NextResponse } from 'next/server';
|
import { NextRequest, NextResponse } from 'next/server';
|
||||||
|
import { getBrevoCampaignUrl } from '@/lib/brevo';
|
||||||
|
|
||||||
export async function POST(req: NextRequest) {
|
export async function POST(req: NextRequest) {
|
||||||
try {
|
try {
|
||||||
@@ -63,7 +64,7 @@ export async function POST(req: NextRequest) {
|
|||||||
success: true,
|
success: true,
|
||||||
updated: true,
|
updated: true,
|
||||||
campaignId: Number(existingCampaignId),
|
campaignId: Number(existingCampaignId),
|
||||||
brevoUrl: 'https://app.brevo.com/campaigns/listing',
|
brevoUrl: getBrevoCampaignUrl(existingCampaignId),
|
||||||
brevoListingUrl: 'https://app.brevo.com/campaigns/listing',
|
brevoListingUrl: 'https://app.brevo.com/campaigns/listing',
|
||||||
message: 'Kampaň bola úspešne aktualizovaná v Brevo!'
|
message: 'Kampaň bola úspešne aktualizovaná v Brevo!'
|
||||||
});
|
});
|
||||||
@@ -113,7 +114,7 @@ export async function POST(req: NextRequest) {
|
|||||||
success: true,
|
success: true,
|
||||||
updated: false,
|
updated: false,
|
||||||
campaignId: data.id,
|
campaignId: data.id,
|
||||||
brevoUrl: 'https://app.brevo.com/campaigns/listing',
|
brevoUrl: getBrevoCampaignUrl(data.id),
|
||||||
brevoListingUrl: 'https://app.brevo.com/campaigns/listing',
|
brevoListingUrl: 'https://app.brevo.com/campaigns/listing',
|
||||||
message: 'Kampaň bola úspešne vytvorená v Brevo!'
|
message: 'Kampaň bola úspešne vytvorená v Brevo!'
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { NextRequest, NextResponse } from 'next/server';
|
import { NextRequest, NextResponse } from 'next/server';
|
||||||
|
import { getBrevoCampaignUrl } from '@/lib/brevo';
|
||||||
|
|
||||||
export async function GET(req: NextRequest) {
|
export async function GET(req: NextRequest) {
|
||||||
try {
|
try {
|
||||||
@@ -51,7 +52,7 @@ export async function GET(req: NextRequest) {
|
|||||||
name: data.name,
|
name: data.name,
|
||||||
status: data.status,
|
status: data.status,
|
||||||
subject: data.subject,
|
subject: data.subject,
|
||||||
brevoUrl: 'https://app.brevo.com/campaigns/listing',
|
brevoUrl: getBrevoCampaignUrl(data.id),
|
||||||
brevoListingUrl: 'https://app.brevo.com/campaigns/listing'
|
brevoListingUrl: 'https://app.brevo.com/campaigns/listing'
|
||||||
});
|
});
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
|
|||||||
+3
-2
@@ -6,6 +6,7 @@ import { DEFAULT_CAMPAIGN, SUPABASE_ASSETS_BASE } from '@/lib/defaultCampaign';
|
|||||||
import { renderEmailHtml, renderSingleModuleHtml } from '@/lib/emailRenderer';
|
import { renderEmailHtml, renderSingleModuleHtml } from '@/lib/emailRenderer';
|
||||||
import { supabase } from '@/lib/supabase';
|
import { supabase } from '@/lib/supabase';
|
||||||
import { DEFAULT_BADGE_TEMPLATES } from '@/lib/badgeUtils';
|
import { DEFAULT_BADGE_TEMPLATES } from '@/lib/badgeUtils';
|
||||||
|
import { getBrevoCampaignUrl } from '@/lib/brevo';
|
||||||
import { TopBar } from '@/components/editor/TopBar';
|
import { TopBar } from '@/components/editor/TopBar';
|
||||||
import { ConfigPanel } from '@/components/editor/ConfigPanel';
|
import { ConfigPanel } from '@/components/editor/ConfigPanel';
|
||||||
import { ProductImportModal } from '@/components/editor/ProductImportModal';
|
import { ProductImportModal } from '@/components/editor/ProductImportModal';
|
||||||
@@ -144,7 +145,7 @@ export default function Home() {
|
|||||||
modules: enforceAnchors(dbItem.data.modules)
|
modules: enforceAnchors(dbItem.data.modules)
|
||||||
});
|
});
|
||||||
if (dbItem.brevo_campaign_id) {
|
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) });
|
setCampaign({ ...selected, modules: enforceAnchors(selected.modules) });
|
||||||
setSelectedModuleId(selected.modules[1]?.id || selected.modules[0]?.id || null);
|
setSelectedModuleId(selected.modules[1]?.id || selected.modules[0]?.id || null);
|
||||||
if (selected.brevoCampaignId) {
|
if (selected.brevoCampaignId) {
|
||||||
setBrevoUrl('https://app.brevo.com/campaigns');
|
setBrevoUrl(getBrevoCampaignUrl(selected.brevoCampaignId));
|
||||||
} else {
|
} else {
|
||||||
setBrevoUrl(null);
|
setBrevoUrl(null);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import {
|
|||||||
Check
|
Check
|
||||||
} from 'lucide-react';
|
} from 'lucide-react';
|
||||||
import { NewsletterCampaign } from '@/types/newsletter';
|
import { NewsletterCampaign } from '@/types/newsletter';
|
||||||
|
import { getBrevoCampaignUrl } from '@/lib/brevo';
|
||||||
|
|
||||||
interface TopBarProps {
|
interface TopBarProps {
|
||||||
campaign: NewsletterCampaign;
|
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">
|
<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 */}
|
{/* Odkaz na zoznam / úpravu v Brevo */}
|
||||||
<a
|
<a
|
||||||
href={brevoCampaignUrl || brevoListingUrl || 'https://app.brevo.com/campaigns/listing'}
|
href={getBrevoCampaignUrl(campaign.brevoCampaignId)}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
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"
|
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" />
|
<ExternalLink className="w-3.5 h-3.5" />
|
||||||
<span>Otvoriť v Brevo</span>
|
<span>Otvoriť v Brevo</span>
|
||||||
|
|||||||
@@ -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))}`;
|
||||||
|
}
|
||||||
Reference in new issue
Block a user