File
Blob: src/client/lib/api/admin.ts
| 1 | import { |
| 2 | AdminDomainRequest, |
| 3 | AdminDomainStatusRequest, |
| 4 | AdminDomainsResponse, |
| 5 | AdminInboxesResponse, |
| 6 | AdminTempInboxPage, |
| 7 | OkResponse, |
| 8 | } from "@/shared/contracts"; |
| 9 | import { ADMIN_BOOKMARK_SCOPE } from "./shared"; |
| 10 | import { encodeJsonBody, request } from "./http"; |
| 11 | |
| 12 | export async function listAdminInboxes() { |
| 13 | const response = await request("/api/protected/admin/inboxes", AdminInboxesResponse, { |
| 14 | bookmarkScope: ADMIN_BOOKMARK_SCOPE, |
| 15 | }); |
| 16 | return response.inboxes; |
| 17 | } |
| 18 | |
| 19 | export async function listAdminDomains() { |
| 20 | const response = await request("/api/protected/admin/domains", AdminDomainsResponse, { |
| 21 | bookmarkScope: ADMIN_BOOKMARK_SCOPE, |
| 22 | }); |
| 23 | return response.domains; |
| 24 | } |
| 25 | |
| 26 | export async function listAdminTempInboxes(page = 0, hasEmails = false) { |
| 27 | const params = new URLSearchParams({ page: String(page) }); |
| 28 | if (hasEmails) { |
| 29 | params.set("hasEmails", "true"); |
| 30 | } |
| 31 | |
| 32 | return request(`/api/protected/admin/temp-inboxes?${params.toString()}`, AdminTempInboxPage, { |
| 33 | bookmarkScope: ADMIN_BOOKMARK_SCOPE, |
| 34 | }); |
| 35 | } |
| 36 | |
| 37 | export async function addAdminDomain(domain: string, isActive = true) { |
| 38 | const response = await request("/api/protected/admin/domains", AdminDomainsResponse, { |
| 39 | method: "POST", |
| 40 | bookmarkScope: ADMIN_BOOKMARK_SCOPE, |
| 41 | body: encodeJsonBody(AdminDomainRequest, { domain, isActive }), |
| 42 | }); |
| 43 | return response.domains; |
| 44 | } |
| 45 | |
| 46 | export async function updateAdminDomain(domain: string, isActive: boolean) { |
| 47 | return request(`/api/protected/admin/domains/${encodeURIComponent(domain)}`, OkResponse, { |
| 48 | method: "PATCH", |
| 49 | bookmarkScope: ADMIN_BOOKMARK_SCOPE, |
| 50 | body: encodeJsonBody(AdminDomainStatusRequest, { isActive }), |
| 51 | }); |
| 52 | } |
| 53 | |
| 54 | export async function deleteAdminDomain(domain: string) { |
| 55 | return request(`/api/protected/admin/domains/${encodeURIComponent(domain)}`, OkResponse, { |
| 56 | method: "DELETE", |
| 57 | bookmarkScope: ADMIN_BOOKMARK_SCOPE, |
| 58 | }); |
| 59 | } |