import { useParams } from "@solidjs/router" import { For, Show } from "solid-js" import { getProfilePicture } from "applesauce-core/helpers/profile" import BackLink from "@/components/BackLink" import PageContainer from "@/components/PageContainer" import RelayListItem from "@/components/RelayListItem" import AdminInvoiceListItem from "@/components/AdminInvoiceListItem" import ResourceState from "@/components/ResourceState" import useMinLoading from "@/lib/useMinLoading" import { useAdminTenant, useAdminTenantInvoices, useAdminTenantRelays, useProfileMetadata } from "@/lib/hooks" import { shortenPubkey } from "@/lib/pubkey" export default function AdminTenantDetail() { const params = useParams() const tenantId = () => params.id ?? "" const [tenant] = useAdminTenant(tenantId) const [relays] = useAdminTenantRelays(tenantId) const [invoices] = useAdminTenantInvoices(tenantId) const loading = useMinLoading(() => tenant.loading || relays.loading || invoices.loading) const metadata = useProfileMetadata(tenantId) const churnedLabel = () => { const ts = tenant()?.churned_at if (!ts) return null return new Date(ts * 1000).toLocaleString() } return (
{((metadata()?.name || metadata()?.display_name) || tenantId()).slice(0, 1).toUpperCase()}
} > Profile

{(metadata()?.name || metadata()?.display_name) || shortenPubkey(tenantId())}

{tenantId()}

Status

{(t) => (
Status:
{t().churned_at ? "delinquent" : "active"}
Stripe Customer:
{t().stripe_customer_id}
Delinquent Since:
{churnedLabel()}
NWC Error:
{t().nwc_error}
Stripe Error:
{t().stripe_error}
)}

Relays

0} fallback={

No relays.

}>
    {(relay) => }

Invoices

0} fallback={

No invoices.

}>
    {(invoice) => }
) }