feat: add delete functionality for leases, catch books, and permits; implement newsletter update feature
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import { createNewsletterApi } from '@kit/newsletter/api';
|
||||
import { CreateNewsletterForm } from '@kit/newsletter/components';
|
||||
import { getSupabaseServerClient } from '@kit/supabase/server-client';
|
||||
|
||||
import { AccountNotFound } from '~/components/account-not-found';
|
||||
import { CmsPageShell } from '~/components/cms-page-shell';
|
||||
|
||||
interface Props {
|
||||
params: Promise<{ account: string; campaignId: string }>;
|
||||
}
|
||||
|
||||
export default async function EditNewsletterPage({ params }: Props) {
|
||||
const { account, campaignId } = await params;
|
||||
const client = getSupabaseServerClient();
|
||||
|
||||
const { data: acct } = await client
|
||||
.from('accounts')
|
||||
.select('id')
|
||||
.eq('slug', account)
|
||||
.single();
|
||||
|
||||
if (!acct) return <AccountNotFound />;
|
||||
|
||||
const api = createNewsletterApi(client);
|
||||
const newsletter = await api.getNewsletter(campaignId);
|
||||
if (!newsletter) return <AccountNotFound />;
|
||||
|
||||
const n = newsletter as Record<string, unknown>;
|
||||
|
||||
return (
|
||||
<CmsPageShell account={account} title="Newsletter bearbeiten">
|
||||
<CreateNewsletterForm
|
||||
accountId={acct.id}
|
||||
account={account}
|
||||
newsletterId={campaignId}
|
||||
initialData={{
|
||||
subject: String(n.subject ?? ''),
|
||||
bodyHtml: String(n.body_html ?? ''),
|
||||
bodyText: String(n.body_text ?? ''),
|
||||
scheduledAt: String(n.scheduled_at ?? ''),
|
||||
}}
|
||||
/>
|
||||
</CmsPageShell>
|
||||
);
|
||||
}
|
||||
@@ -1,10 +1,11 @@
|
||||
import Link from 'next/link';
|
||||
|
||||
import { ArrowLeft, Send, Users } from 'lucide-react';
|
||||
import { ArrowLeft, Pencil, Send, Users } from 'lucide-react';
|
||||
|
||||
import { createNewsletterApi } from '@kit/newsletter/api';
|
||||
import { getSupabaseServerClient } from '@kit/supabase/server-client';
|
||||
import { Badge } from '@kit/ui/badge';
|
||||
import { Button } from '@kit/ui/button';
|
||||
import { Card, CardContent, CardHeader, CardTitle } from '@kit/ui/card';
|
||||
|
||||
import { AccountNotFound } from '~/components/account-not-found';
|
||||
@@ -74,9 +75,19 @@ export default async function NewsletterDetailPage({ params }: PageProps) {
|
||||
<CardTitle>
|
||||
{String(newsletter.subject ?? '(Kein Betreff)')}
|
||||
</CardTitle>
|
||||
<Badge variant={NEWSLETTER_STATUS_VARIANT[status] ?? 'secondary'}>
|
||||
{NEWSLETTER_STATUS_LABEL[status] ?? status}
|
||||
</Badge>
|
||||
<div className="flex items-center gap-2">
|
||||
{status === 'draft' && (
|
||||
<Button asChild variant="outline" size="sm">
|
||||
<Link href={`/home/${account}/newsletter/${campaignId}/edit`}>
|
||||
<Pencil className="mr-2 h-4 w-4" />
|
||||
Bearbeiten
|
||||
</Link>
|
||||
</Button>
|
||||
)}
|
||||
<Badge variant={NEWSLETTER_STATUS_VARIANT[status] ?? 'secondary'}>
|
||||
{NEWSLETTER_STATUS_LABEL[status] ?? status}
|
||||
</Badge>
|
||||
</div>
|
||||
</CardHeader>
|
||||
<CardContent>
|
||||
<div className="grid grid-cols-1 gap-4 sm:grid-cols-3">
|
||||
|
||||
Reference in New Issue
Block a user