diff options
| author | Jay V <[email protected]> | 2025-09-16 16:16:30 -0400 |
|---|---|---|
| committer | Jay V <[email protected]> | 2025-09-16 16:16:30 -0400 |
| commit | 4b1eca73eb64c62ebdf668eb18d587510066bd9d (patch) | |
| tree | 19be45b8df61b5db1514887e4307c2bc17f6b19d /cloud/app/src/component/workspace/payment-section.tsx | |
| parent | fffcf69cd45ce98cee37b7bf455a81a69f0fe83c (diff) | |
| download | opencode-4b1eca73eb64c62ebdf668eb18d587510066bd9d.tar.gz opencode-4b1eca73eb64c62ebdf668eb18d587510066bd9d.zip | |
ignore: zen
Diffstat (limited to 'cloud/app/src/component/workspace/payment-section.tsx')
| -rw-r--r-- | cloud/app/src/component/workspace/payment-section.tsx | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/cloud/app/src/component/workspace/payment-section.tsx b/cloud/app/src/component/workspace/payment-section.tsx new file mode 100644 index 000000000..f802fa96a --- /dev/null +++ b/cloud/app/src/component/workspace/payment-section.tsx @@ -0,0 +1,56 @@ +import { Billing } from "@opencode/cloud-core/billing.js" +import { query, useParams, createAsync } from "@solidjs/router" +import { For } from "solid-js" +import { withActor } from "~/context/auth.withActor" +import { formatDateUTC, formatDateForTable } from "./common" + +const getPaymentsInfo = query(async (workspaceID: string) => { + "use server" + return withActor(async () => { + return await Billing.payments() + }, workspaceID) +}, "payment.list") + +export function PaymentSection() { + const params = useParams() + const payments = createAsync(() => getPaymentsInfo(params.id)) + + return ( + payments() && + payments()!.length > 0 && ( + <section data-component="payments-section"> + <div data-slot="section-title"> + <h2>Payments History</h2> + <p>Recent payment transactions.</p> + </div> + <div data-slot="payments-table"> + <table data-slot="payments-table-element"> + <thead> + <tr> + <th>Date</th> + <th>Payment ID</th> + <th>Amount</th> + </tr> + </thead> + <tbody> + <For each={payments()!}> + {(payment) => { + const date = new Date(payment.timeCreated) + return ( + <tr> + <td data-slot="payment-date" title={formatDateUTC(date)}> + {formatDateForTable(date)} + </td> + <td data-slot="payment-id">{payment.id}</td> + <td data-slot="payment-amount">${((payment.amount ?? 0) / 100000000).toFixed(2)}</td> + </tr> + ) + }} + </For> + </tbody> + </table> + </div> + </section> + ) + ) +} |
