fix: Migrate over to new pagination format in dashboard

This commit is contained in:
Dries Augustyns
2026-01-02 10:40:39 +01:00
parent 49824aff93
commit 8790c45edc
7 changed files with 26 additions and 68 deletions
@@ -21,18 +21,11 @@ import {
} from '@plunk/ui';
import type {Campaign} from '@plunk/db';
import {CampaignStatus} from '@plunk/db';
import type {PaginatedResponse} from '@plunk/types';
import {ArrowLeft, Calendar, Mail, Users} from 'lucide-react';
import {useState} from 'react';
import useSWR from 'swr';
interface PaginatedCampaigns {
campaigns: Campaign[];
total: number;
page: number;
pageSize: number;
totalPages: number;
}
interface CampaignSelectionDialogProps {
open: boolean;
onOpenChange: (open: boolean) => void;
@@ -62,7 +55,7 @@ export function CampaignSelectionDialog({open, onOpenChange, onSelectCampaign}:
audience: true,
});
const {data, isLoading} = useSWR<PaginatedCampaigns>(
const {data, isLoading} = useSWR<PaginatedResponse<Campaign>>(
open ? `/campaigns?page=${page}&pageSize=10${statusFilter !== 'ALL' ? `&status=${statusFilter}` : ''}` : null,
{revalidateOnFocus: false},
);
@@ -192,7 +185,7 @@ export function CampaignSelectionDialog({open, onOpenChange, onSelectCampaign}:
</div>
)}
{!isLoading && data?.campaigns.length === 0 && (
{!isLoading && data?.data.length === 0 && (
<div className="text-center py-12">
<Mail className="h-12 w-12 text-neutral-400 mx-auto mb-4" />
<h3 className="text-lg font-medium text-neutral-900 mb-2">No campaigns found</h3>
@@ -202,7 +195,7 @@ export function CampaignSelectionDialog({open, onOpenChange, onSelectCampaign}:
</div>
)}
{data?.campaigns.map(campaign => (
{data?.data.map(campaign => (
<Card
key={campaign.id}
className="cursor-pointer hover:border-primary/50 hover:shadow-md transition-all"
@@ -16,18 +16,11 @@ import {
Label,
} from '@plunk/ui';
import type {Template} from '@plunk/db';
import type {PaginatedResponse} from '@plunk/types';
import {ArrowLeft, FileText, Search} from 'lucide-react';
import {useState} from 'react';
import useSWR from 'swr';
interface PaginatedTemplates {
templates: Template[];
total: number;
page: number;
pageSize: number;
totalPages: number;
}
interface TemplateSelectionDialogProps {
open: boolean;
onOpenChange: (open: boolean) => void;
@@ -57,7 +50,7 @@ export function TemplateSelectionDialog({open, onOpenChange, onSelectTemplate}:
replyTo: true,
});
const {data, isLoading} = useSWR<PaginatedTemplates>(
const {data, isLoading} = useSWR<PaginatedResponse<Template>>(
open
? `/templates?page=${page}&pageSize=10${search ? `&search=${search}` : ''}${typeFilter !== 'ALL' ? `&type=${typeFilter}` : ''}`
: null,
@@ -219,7 +212,7 @@ export function TemplateSelectionDialog({open, onOpenChange, onSelectTemplate}:
</div>
)}
{!isLoading && data?.templates.length === 0 && (
{!isLoading && data?.data.length === 0 && (
<div className="text-center py-12">
<FileText className="h-12 w-12 text-neutral-400 mx-auto mb-4" />
<h3 className="text-lg font-medium text-neutral-900 mb-2">No templates found</h3>
@@ -229,7 +222,7 @@ export function TemplateSelectionDialog({open, onOpenChange, onSelectTemplate}:
</div>
)}
{data?.templates.map(template => (
{data?.data.map(template => (
<Card
key={template.id}
className="cursor-pointer hover:border-primary/50 hover:shadow-md transition-all"