types: Abstract inline interfaces to @plunk/types

This commit is contained in:
Dries Augustyns
2026-01-01 10:52:43 +01:00
parent 38da58e5e9
commit 85c992a9f9
95 changed files with 1370 additions and 1350 deletions
+1 -1
View File
@@ -7,7 +7,7 @@ import {
CardTitle,
ConfirmDialog,
Input,
Label
Label,
} from '@plunk/ui';
import type {Contact} from '@plunk/db';
import {DashboardLayout} from '../../components/DashboardLayout';
+4 -10
View File
@@ -17,6 +17,7 @@ import {
Switch,
} from '@plunk/ui';
import type {Contact} from '@plunk/db';
import type {CursorPaginatedResponse} from '@plunk/types';
import {DashboardLayout} from '../../components/DashboardLayout';
import {KeyValueEditor} from '../../components/KeyValueEditor';
import {network} from '../../lib/network';
@@ -44,13 +45,6 @@ import useSWR from 'swr';
import {ContactSchemas} from '@plunk/shared';
import dayjs from 'dayjs';
interface PaginatedContacts {
contacts: Contact[];
total: number;
cursor?: string;
hasMore: boolean;
}
export default function ContactsPage() {
const [cursor, setCursor] = useState<string | undefined>(undefined);
const [cursorHistory, setCursorHistory] = useState<(string | undefined)[]>([undefined]);
@@ -68,7 +62,7 @@ export default function ContactsPage() {
const [bulkOperation, setBulkOperation] = useState<'subscribe' | 'unsubscribe' | 'delete' | null>(null);
const pageSize = 50;
const {data, mutate, isLoading} = useSWR<PaginatedContacts>(
const {data, mutate, isLoading} = useSWR<CursorPaginatedResponse<Contact>>(
`/contacts?limit=${pageSize}${cursor ? `&cursor=${cursor}` : ''}${search ? `&search=${search}` : ''}`,
{revalidateOnFocus: false},
);
@@ -76,9 +70,9 @@ export default function ContactsPage() {
// Update contacts when data changes
useEffect(() => {
if (data) {
setContacts(data.contacts);
setContacts(data.data);
if (!cursor) {
setTotalCount(data.total || data.contacts.length);
setTotalCount(data.total || data.data.length);
}
}
}, [data, cursor]);