mirror of
https://github.com/fosrl/pangolin.git
synced 2026-05-01 02:01:56 +00:00
show site resources
This commit is contained in:
@@ -69,6 +69,7 @@ export default async function PendingSitesPage(props: PendingSitesPageProps) {
|
||||
address: site.address?.split("/")[0],
|
||||
mbIn: formatSize(site.megabytesIn || 0, site.type),
|
||||
mbOut: formatSize(site.megabytesOut || 0, site.type),
|
||||
resourceCount: Number(site.resourceCount ?? 0),
|
||||
orgId: params.orgId,
|
||||
type: site.type as any,
|
||||
online: site.online,
|
||||
|
||||
@@ -42,6 +42,10 @@ export default async function SettingsLayout(props: SettingsLayoutProps) {
|
||||
title: t("general"),
|
||||
href: `/${params.orgId}/settings/sites/${params.niceId}/general`
|
||||
},
|
||||
{
|
||||
title: t("siteResourcesTab"),
|
||||
href: `/${params.orgId}/settings/sites/${params.niceId}/resources`
|
||||
},
|
||||
...(site.type !== "local"
|
||||
? [
|
||||
{
|
||||
|
||||
64
src/app/[orgId]/settings/sites/[niceId]/resources/page.tsx
Normal file
64
src/app/[orgId]/settings/sites/[niceId]/resources/page.tsx
Normal file
@@ -0,0 +1,64 @@
|
||||
import SiteResourcesOverview from "@app/components/SiteResourcesOverview";
|
||||
import { internal } from "@app/lib/api";
|
||||
import { authCookieHeader } from "@app/lib/api/cookies";
|
||||
import type { ListResourcesResponse } from "@server/routers/resource";
|
||||
import type { GetSiteResponse } from "@server/routers/site";
|
||||
import type { ListAllSiteResourcesByOrgResponse } from "@server/routers/siteResource";
|
||||
import type { AxiosResponse } from "axios";
|
||||
|
||||
type SiteResourcesPageProps = {
|
||||
params: Promise<{ orgId: string; niceId: string }>;
|
||||
};
|
||||
|
||||
export default async function SiteResourcesPage(props: SiteResourcesPageProps) {
|
||||
const { orgId, niceId } = await props.params;
|
||||
|
||||
const siteRes = await internal.get<AxiosResponse<GetSiteResponse>>(
|
||||
`/org/${orgId}/site/${niceId}`,
|
||||
await authCookieHeader()
|
||||
);
|
||||
const site = siteRes.data.data;
|
||||
|
||||
const baseSearch = new URLSearchParams({
|
||||
page: "1",
|
||||
pageSize: "5",
|
||||
siteId: String(site.siteId)
|
||||
});
|
||||
|
||||
let initialPublicData: ListResourcesResponse | null = null;
|
||||
let initialPrivateData: ListAllSiteResourcesByOrgResponse | null = null;
|
||||
let initialPublicForbidden = false;
|
||||
let initialPrivateForbidden = false;
|
||||
|
||||
try {
|
||||
const res = await internal.get<AxiosResponse<ListResourcesResponse>>(
|
||||
`/org/${orgId}/resources?${baseSearch.toString()}`,
|
||||
await authCookieHeader()
|
||||
);
|
||||
initialPublicData = res.data.data;
|
||||
} catch (e: any) {
|
||||
initialPublicForbidden = e?.response?.status === 403;
|
||||
}
|
||||
|
||||
try {
|
||||
const res = await internal.get<
|
||||
AxiosResponse<ListAllSiteResourcesByOrgResponse>
|
||||
>(
|
||||
`/org/${orgId}/site-resources?${baseSearch.toString()}`,
|
||||
await authCookieHeader()
|
||||
);
|
||||
initialPrivateData = res.data.data;
|
||||
} catch (e: any) {
|
||||
initialPrivateForbidden = e?.response?.status === 403;
|
||||
}
|
||||
|
||||
return (
|
||||
<SiteResourcesOverview
|
||||
siteId={site.siteId}
|
||||
initialPublicData={initialPublicData}
|
||||
initialPrivateData={initialPrivateData}
|
||||
initialPublicForbidden={initialPublicForbidden}
|
||||
initialPrivateForbidden={initialPrivateForbidden}
|
||||
/>
|
||||
);
|
||||
}
|
||||
@@ -64,6 +64,7 @@ export default async function SitesPage(props: SitesPageProps) {
|
||||
address: site.address?.split("/")[0],
|
||||
mbIn: formatSize(site.megabytesIn || 0, site.type),
|
||||
mbOut: formatSize(site.megabytesOut || 0, site.type),
|
||||
resourceCount: Number(site.resourceCount ?? 0),
|
||||
orgId: params.orgId,
|
||||
type: site.type as any,
|
||||
online: site.online,
|
||||
|
||||
Reference in New Issue
Block a user