Files
sign/apps/web/src/app/(dashboard)/admin/users/page.tsx

48 lines
1.3 KiB
TypeScript
Raw Normal View History

2024-08-27 20:34:39 +09:00
import { Trans } from '@lingui/macro';
import { getPricesByPlan } from '@documenso/ee/server-only/stripe/get-prices-by-plan';
2024-08-27 20:34:39 +09:00
import { setupI18nSSR } from '@documenso/lib/client-only/providers/i18n.server';
import { STRIPE_PLAN_TYPE } from '@documenso/lib/constants/billing';
import { UsersDataTable } from './data-table-users';
2023-10-11 16:20:04 +03:00
import { search } from './fetch-users.actions';
2023-09-21 12:43:36 +01:00
type AdminManageUsersProps = {
searchParams?: {
2023-10-11 16:20:04 +03:00
search?: string;
2023-09-21 12:43:36 +01:00
page?: number;
perPage?: number;
};
};
2023-10-11 16:20:04 +03:00
export default async function AdminManageUsers({ searchParams = {} }: AdminManageUsersProps) {
2024-08-27 20:34:39 +09:00
setupI18nSSR();
2023-09-21 12:43:36 +01:00
const page = Number(searchParams.page) || 1;
const perPage = Number(searchParams.perPage) || 10;
2023-10-11 16:20:04 +03:00
const searchString = searchParams.search || '';
const [{ users, totalPages }, individualPrices] = await Promise.all([
search(searchString, page, perPage),
2024-06-12 21:33:17 +10:00
getPricesByPlan([STRIPE_PLAN_TYPE.REGULAR, STRIPE_PLAN_TYPE.COMMUNITY]).catch(() => []),
]);
const individualPriceIds = individualPrices.map((price) => price.id);
2023-09-21 12:43:36 +01:00
return (
<div>
2024-08-27 20:34:39 +09:00
<h2 className="text-4xl font-semibold">
<Trans>Manage users</Trans>
</h2>
<UsersDataTable
users={users}
individualPriceIds={individualPriceIds}
totalPages={totalPages}
page={page}
perPage={perPage}
/>
2023-09-21 12:43:36 +01:00
</div>
);
}