import { createEffect, createMemo, createSignal, For, Show } from "solid-js" import PageContainer from "@/components/PageContainer" import LoadingState from "@/components/LoadingState" import useMinLoading from "@/components/useMinLoading" import { updateActiveTenantBilling, useTenant, useTenantInvoices } from "@/lib/hooks" export default function Account() { const [tenant, { refetch: refetchTenant }] = useTenant() const [invoices] = useTenantInvoices() const [nwcUrl, setNwcUrl] = createSignal("") const [saving, setSaving] = createSignal(false) const [error, setError] = createSignal("") const invoicesLoading = useMinLoading(() => invoices.loading) const hasBillingChanges = createMemo(() => { const current = tenant()?.nwc_url?.trim() ?? "" const next = nwcUrl().trim() return current !== next }) createEffect(() => { setNwcUrl(tenant()?.nwc_url ?? "") }) async function saveBilling() { setError("") setSaving(true) try { const next = nwcUrl().trim() await updateActiveTenantBilling(next) await refetchTenant() } catch (e) { setError(e instanceof Error ? e.message : "Failed to update billing") } finally { setSaving(false) } } function logout() { localStorage.clear() window.location.href = "/" } return (

My Account

Account Status

tenant

Recurring Billing

Enable automatic payments by providing your Nostr Wallet Connect URL.

setNwcUrl(e.currentTarget.value)} placeholder="nostr+walletconnect://..." class="flex-1 border border-gray-300 rounded-lg px-3 py-2" />

{error()}

Invoice History

0} fallback={

No invoices yet.

}>
    {(invoice) => (
  • {invoice.status}

    {new Date(invoice.created_at * 1000).toLocaleString()}

    {invoice.bolt11}

  • )}
) }