diff --git a/api/api.go b/api/api.go index 84e09d47..77d4ac76 100644 --- a/api/api.go +++ b/api/api.go @@ -104,6 +104,8 @@ func (api *api) CreateApp(createAppRequest *CreateAppRequest) (*CreateAppRespons responseBody.Name = createAppRequest.Name responseBody.Pubkey = app.AppPubkey responseBody.PairingSecret = pairingSecretKey + responseBody.WalletPubkey = *app.WalletPubkey + responseBody.RelayUrl = relayUrl lightningAddress, err := api.albyOAuthSvc.GetLightningAddress() if err != nil { diff --git a/api/models.go b/api/models.go index 8f68613c..f0d510ac 100644 --- a/api/models.go +++ b/api/models.go @@ -153,6 +153,8 @@ type CreateAppResponse struct { PairingUri string `json:"pairingUri"` PairingSecret string `json:"pairingSecretKey"` Pubkey string `json:"pairingPublicKey"` + RelayUrl string `json:"relayUrl"` + WalletPubkey string `json:"walletPubkey"` Id uint `json:"id"` Name string `json:"name"` ReturnTo string `json:"returnTo"` diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index a6b4094e..23f44e30 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,4 +1,8 @@ -import { RouterProvider, createHashRouter } from "react-router-dom"; +import { + RouterProvider, + createBrowserRouter, + createHashRouter, +} from "react-router-dom"; import { ThemeProvider } from "src/components/ui/theme-provider"; @@ -6,8 +10,10 @@ import { Toaster } from "src/components/ui/toaster"; import { TouchProvider } from "src/components/ui/tooltip"; import { useInfo } from "src/hooks/useInfo"; import routes from "src/routes.tsx"; +import { isHttpMode } from "src/utils/isHttpMode"; -const router = createHashRouter(routes); +const createRouterFunc = isHttpMode() ? createBrowserRouter : createHashRouter; +const router = createRouterFunc(routes); function App() { const { data: info } = useInfo(); diff --git a/frontend/src/components/SuggestedAppData.tsx b/frontend/src/components/SuggestedAppData.tsx index acdc9394..0c695059 100644 --- a/frontend/src/components/SuggestedAppData.tsx +++ b/frontend/src/components/SuggestedAppData.tsx @@ -429,7 +429,7 @@ export const suggestedApps: SuggestedApp[] = [
  • 4. Click{" "} Connect to BTCPay Server @@ -506,7 +506,7 @@ export const suggestedApps: SuggestedApp[] = [
  • 4. Click{" "} Connect to LNbits @@ -585,7 +585,7 @@ export const suggestedApps: SuggestedApp[] = [
  • 4. Click{" "} Connect to Coracle @@ -657,7 +657,7 @@ export const suggestedApps: SuggestedApp[] = [
  • 3. Click{" "} Connect to Nostter diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx index a5485e4b..cf3ea5dc 100644 --- a/frontend/src/main.tsx +++ b/frontend/src/main.tsx @@ -1,11 +1,18 @@ import React from "react"; import ReactDOM from "react-dom/client"; import App from "src/App.tsx"; -import "src/index.css"; import "src/fonts.css"; +import "src/index.css"; +import { isHttpMode } from "src/utils/isHttpMode"; -ReactDOM.createRoot(document.getElementById("root")!).render( - - - -); +// redirect hash router links to browser router links +// TODO: remove after 2026-01-01 +if (isHttpMode() && window.location.href.indexOf("/#/") > -1) { + window.location.href = window.location.href.replace("/#/", "/"); +} else { + ReactDOM.createRoot(document.getElementById("root")!).render( + + + + ); +} diff --git a/frontend/src/screens/apps/AppCreated.tsx b/frontend/src/screens/apps/AppCreated.tsx index e329c906..2d90c7aa 100644 --- a/frontend/src/screens/apps/AppCreated.tsx +++ b/frontend/src/screens/apps/AppCreated.tsx @@ -56,12 +56,14 @@ function AppCreatedInternal() { }, [app?.lastEventAt, navigate, toast]); useEffect(() => { - if (appstoreApp) { - return; - } // dispatch a success event which can be listened to by the opener or by the app that embedded the webview // this gives those apps the chance to know the user has enabled the connection - const nwcEvent = new CustomEvent("nwc:success", { detail: {} }); + const nwcEvent = new CustomEvent("nwc:success", { + detail: { + relayUrl: createAppResponse.relayUrl, + walletPubkey: createAppResponse.walletPubkey, + }, + }); window.dispatchEvent(nwcEvent); // notify the opener of the successful connection @@ -69,12 +71,13 @@ function AppCreatedInternal() { window.opener.postMessage( { type: "nwc:success", - payload: { success: true }, + relayUrl: createAppResponse.relayUrl, + walletPubkey: createAppResponse.walletPubkey, }, "*" ); } - }, [appstoreApp]); + }, [createAppResponse.relayUrl, createAppResponse.walletPubkey]); if (!createAppResponse) { return ; diff --git a/frontend/src/types.ts b/frontend/src/types.ts index 5a103f36..c10953be 100644 --- a/frontend/src/types.ts +++ b/frontend/src/types.ts @@ -201,6 +201,8 @@ export interface CreateAppResponse { pairingUri: string; pairingPublicKey: string; pairingSecretKey: string; + relayUrl: string; + walletPubkey: string; returnTo: string; }