From 5bc1e2f146e8e6368848eb9cacf735af25e4568b Mon Sep 17 00:00:00 2001 From: Selem Delul Date: Wed, 3 Sep 2025 14:03:38 -0400 Subject: [PATCH 1/3] connect dashboard to cloud --- .../pages/cloud/tenants/ledgers/documents.tsx | 37 +++++++++++++++---- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/dashboard/src/pages/cloud/tenants/ledgers/documents.tsx b/dashboard/src/pages/cloud/tenants/ledgers/documents.tsx index acfb1a0c3..833624fed 100644 --- a/dashboard/src/pages/cloud/tenants/ledgers/documents.tsx +++ b/dashboard/src/pages/cloud/tenants/ledgers/documents.tsx @@ -1,10 +1,12 @@ -import React from "react"; +import React, { useContext } from "react"; // import { rawConnect } from "@fireproof/cloud"; import { Link, useNavigate, useParams } from "react-router-dom"; -import { useFireproof } from "use-fireproof"; +import { toCloud, useFireproof } from "use-fireproof"; +import { AppContext } from "../../../../app-context.jsx"; import { Button } from "../../../../components/Button.jsx"; import { DynamicTable } from "../../../../components/DynamicTable.jsx"; import { headersForDocs } from "../../../../components/dynamicTableHelpers.js"; +import { SimpleTokenStrategy } from "../../../../../../core/gateways/cloud/to-cloud.js"; // import { DEFAULT_ENDPOINT } from "../../../../helpers.js"; interface Document { @@ -14,14 +16,33 @@ interface Document { export function LedgerDocuments() { const { tenantId, ledgerId } = useParams(); - // const { cloud } = useContext(AppContext); + const { cloud } = useContext(AppContext); + const cloudToken = cloud.getCloudToken(); + + // Wait for token before rendering the main component + if (cloudToken.isPending) { + return
Loading...
; + } + if (!cloudToken.data) { + return
Not found
; + } + + return ; +} + +function LedgerDocumentsContent({ tenantId, ledgerId, token }: { tenantId?: string; ledgerId?: string; token: string }) { const navigate = useNavigate(); - const { useLiveQuery, database } = useFireproof(ledgerId || ""); - // Connect to Fireproof Cloud - // if (database && ledgerId && tenantId) { - // rawConnect(database as any, `${tenantId}-${ledgerId}`, DEFAULT_ENDPOINT); - // } + const { useLiveQuery, database, attach } = useFireproof(ledgerId || "", { + attach: toCloud({ + urls: { base: "fpcloud://localhost:8787?protocol=ws" }, + tenant: tenantId, + ledger: ledgerId, + strategy: new SimpleTokenStrategy(token), + }), + }); + + console.log(attach.ctx); const allDocs = useLiveQuery("_id"); const docs = allDocs.docs.filter((doc) => !!doc); From 7a18db497ce1f0d5133728da5319007ab93b96e4 Mon Sep 17 00:00:00 2001 From: Selem Delul Date: Wed, 3 Sep 2025 14:14:56 -0400 Subject: [PATCH 2/3] remove log Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- dashboard/src/pages/cloud/tenants/ledgers/documents.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/dashboard/src/pages/cloud/tenants/ledgers/documents.tsx b/dashboard/src/pages/cloud/tenants/ledgers/documents.tsx index 833624fed..cff23c5d2 100644 --- a/dashboard/src/pages/cloud/tenants/ledgers/documents.tsx +++ b/dashboard/src/pages/cloud/tenants/ledgers/documents.tsx @@ -42,7 +42,6 @@ function LedgerDocumentsContent({ tenantId, ledgerId, token }: { tenantId?: stri }), }); - console.log(attach.ctx); const allDocs = useLiveQuery("_id"); const docs = allDocs.docs.filter((doc) => !!doc); From 9dd8a776f1998ba634f269e90fc19281046dae75 Mon Sep 17 00:00:00 2001 From: Selem Delul Date: Wed, 3 Sep 2025 14:53:00 -0400 Subject: [PATCH 3/3] remove hard-coded base url --- dashboard/src/pages/cloud/tenants/ledgers/documents.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/dashboard/src/pages/cloud/tenants/ledgers/documents.tsx b/dashboard/src/pages/cloud/tenants/ledgers/documents.tsx index cff23c5d2..beb39c710 100644 --- a/dashboard/src/pages/cloud/tenants/ledgers/documents.tsx +++ b/dashboard/src/pages/cloud/tenants/ledgers/documents.tsx @@ -2,11 +2,11 @@ import React, { useContext } from "react"; // import { rawConnect } from "@fireproof/cloud"; import { Link, useNavigate, useParams } from "react-router-dom"; import { toCloud, useFireproof } from "use-fireproof"; +import { SimpleTokenStrategy } from "../../../../../../core/gateways/cloud/to-cloud.js"; import { AppContext } from "../../../../app-context.jsx"; import { Button } from "../../../../components/Button.jsx"; import { DynamicTable } from "../../../../components/DynamicTable.jsx"; import { headersForDocs } from "../../../../components/dynamicTableHelpers.js"; -import { SimpleTokenStrategy } from "../../../../../../core/gateways/cloud/to-cloud.js"; // import { DEFAULT_ENDPOINT } from "../../../../helpers.js"; interface Document { @@ -33,16 +33,14 @@ export function LedgerDocuments() { function LedgerDocumentsContent({ tenantId, ledgerId, token }: { tenantId?: string; ledgerId?: string; token: string }) { const navigate = useNavigate(); - const { useLiveQuery, database, attach } = useFireproof(ledgerId || "", { + const { useLiveQuery, database } = useFireproof(ledgerId || "", { attach: toCloud({ - urls: { base: "fpcloud://localhost:8787?protocol=ws" }, tenant: tenantId, ledger: ledgerId, strategy: new SimpleTokenStrategy(token), }), }); - const allDocs = useLiveQuery("_id"); const docs = allDocs.docs.filter((doc) => !!doc); const headers = headersForDocs(docs);