From 364621bc3500f1dcd631be2788afaceb9d2f44aa Mon Sep 17 00:00:00 2001 From: Adithya Vardhan Date: Mon, 10 Jun 2024 11:34:24 +0530 Subject: [PATCH 01/36] feat: add code signing for macos (#400) --- .github/workflows/wails2.yaml | 48 ++++++++++++++++++---- .gitignore | 2 +- appicon.png | Bin 898 -> 452252 bytes build/darwin/Info.dev.plist | 68 ++++++++++++++++++++++++++++++++ build/darwin/Info.plist | 63 +++++++++++++++++++++++++++++ build/darwin/dmgcover.png | Bin 0 -> 162557 bytes build/darwin/entitlements.plist | 16 ++++++++ build/darwin/gon-notarize.json | 8 ++++ build/darwin/gon-sign.json | 13 ++++++ 9 files changed, 209 insertions(+), 9 deletions(-) create mode 100644 build/darwin/Info.dev.plist create mode 100644 build/darwin/Info.plist create mode 100644 build/darwin/dmgcover.png create mode 100644 build/darwin/entitlements.plist create mode 100644 build/darwin/gon-notarize.json create mode 100644 build/darwin/gon-sign.json diff --git a/.github/workflows/wails2.yaml b/.github/workflows/wails2.yaml index d2798f729..57e1e316a 100644 --- a/.github/workflows/wails2.yaml +++ b/.github/workflows/wails2.yaml @@ -8,11 +8,12 @@ jobs: strategy: fail-fast: false matrix: - build: [ - {name: albyhub, platform: linux/amd64, os: ubuntu-20.04}, - {name: albyhub, platform: windows/amd64, os: windows-2019}, - {name: albyhub, platform: darwin/universal, os: macos-12} - ] + build: + [ + { name: albyhub, platform: linux/amd64, os: ubuntu-20.04 }, + { name: albyhub, platform: windows/amd64, os: windows-2019 }, + { name: albyhub, platform: darwin/universal, os: macos-12 }, + ] runs-on: ${{ matrix.build.os }} steps: - uses: actions/checkout@v2 @@ -47,7 +48,7 @@ jobs: - name: Setup NodeJS uses: actions/setup-node@v3 with: - node-version: '20.x' + node-version: "20.x" - name: Install Wails run: go install github.com/wailsapp/wails/v2/cmd/wails@v2.7.1 @@ -60,7 +61,9 @@ jobs: - name: Install macOS Wails deps if: runner.os == 'macOS' - run: brew install mitchellh/gon/gon + run: | + brew install create-dmg + brew install Bearer/tap/gon shell: bash - name: Wails Doctor @@ -97,6 +100,15 @@ jobs: run: wails build --platform windows/amd64 -webview2 download -o ${{ matrix.build.name }}.exe -tags "wails" shell: bash + - name: Import Code-Signing Certificates for macOS + if: runner.os == 'macOS' + uses: Apple-Actions/import-codesign-certs@v1 + with: + # The certificates in a PKCS12 file encoded as a base64 string + p12-file-base64: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_BASE64 }} + # The password used to import the PKCS12 file. + p12-password: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_PASSWORD }} + - name: Copy DLLs to the output directory if: runner.os == 'Windows' run: | @@ -155,14 +167,34 @@ jobs: rm -Rf ./build/bin/* mv ./build/out/albyhub-${{runner.os}}.tar.bz2 ./build/bin/ + - name: Sign the macOS binary + if: runner.os == 'macOS' + run: | + echo "Signing Package" + /usr/bin/codesign -s "Developer ID Application: Alby Inc." -f -v --deep --timestamp --options runtime --entitlements ./build/darwin/entitlements.plist ./build/bin/AlbyHub.app + env: + AC_USERNAME: ${{ secrets.APPLE_USERNAME }} + AC_PASSWORD: ${{ secrets.APPLE_PASSWORD }} + AC_PROVIDER: ${{ secrets.APPLE_TEAM_ID }} + - name: Make DMG image for macOS if: runner.os == 'macOS' run: | mkdir -p ./build/out - hdiutil create -volname "AlbyHub" -srcfolder ./build/bin/${{ matrix.build.name }}.app -ov -format UDZO ./build/out/albyhub-${{runner.os}}.dmg + create-dmg --volname "AlbyHub" --background "./build/darwin/dmgcover.png" --window-pos 200 120 --window-size 800 400 --icon-size 80 --icon "AlbyHub.app" 200 160 --hide-extension "AlbyHub.app" --app-drop-link 600 160 "./build/out/albyhub-${{runner.os}}.dmg" "./build/bin/${{ matrix.build.name }}.app" rm -Rf ./build/bin/* mv ./build/out/albyhub-${{runner.os}}.dmg ./build/bin/ + - name: Notarize the DMG image + if: runner.os == 'macOS' + run: | + echo "Notarizing Zip Files" + gon -log-level=info -log-json ./build/darwin/gon-notarize.json + env: + AC_USERNAME: ${{ secrets.APPLE_USERNAME }} + AC_PASSWORD: ${{ secrets.APPLE_PASSWORD }} + AC_PROVIDER: ${{ secrets.APPLE_TEAM_ID }} + - uses: actions/upload-artifact@v4 if: runner.os == 'Linux' with: diff --git a/.gitignore b/.gitignore index d2e89e340..3d56ca075 100644 --- a/.gitignore +++ b/.gitignore @@ -14,7 +14,7 @@ frontend/node_modules frontend/wailsjs package.json.md5 -build +build/bin *.log diff --git a/appicon.png b/appicon.png index 37a74c5bf74ba914d99e17227c750db5360081eb..27ff80fa07f49372b174b5da8ff78e025248f631 100644 GIT binary patch literal 452252 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%0DteRUn41dQu1UlFx^4`xDN1>eW+X#0eg)! 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 - - diff --git a/frontend/src/screens/Welcome.tsx b/frontend/src/screens/Welcome.tsx index 12602cf3c..e0e6fc7db 100644 --- a/frontend/src/screens/Welcome.tsx +++ b/frontend/src/screens/Welcome.tsx @@ -37,16 +37,25 @@ export function Welcome() {

- - + + + + + + - {!info?.backendType && ( - - - - )}
By continuing, you agree to our
diff --git a/frontend/src/screens/setup/ImportMnemonic.tsx b/frontend/src/screens/setup/ImportMnemonic.tsx index 8146842e0..2b111fc7c 100644 --- a/frontend/src/screens/setup/ImportMnemonic.tsx +++ b/frontend/src/screens/setup/ImportMnemonic.tsx @@ -1,7 +1,7 @@ import * as bip39 from "@scure/bip39"; import { wordlist } from "@scure/bip39/wordlists/english"; import { LifeBuoy, ShieldCheck } from "lucide-react"; -import { useState } from "react"; +import { useEffect, useState } from "react"; import { useNavigate } from "react-router-dom"; import MnemonicInputs from "src/components/MnemonicInputs"; @@ -16,6 +16,12 @@ export function ImportMnemonic() { const navigate = useNavigate(); const setupStore = useSetupStore(); + useEffect(() => { + // in case the user presses back, remove their last-saved mnemonic + useSetupStore.getState().updateNodeInfo({ + mnemonic: undefined, + }); + }, []); const [mnemonic, setMnemonic] = useState(""); async function onSubmit(e: React.FormEvent) { @@ -40,7 +46,8 @@ export function ImportMnemonic() { mnemonic, nextBackupReminder: sixMonthsLater.toISOString(), }); - navigate(`/setup/finish`); + + navigate(`/setup/node`); } return ( @@ -77,7 +84,7 @@ export function ImportMnemonic() { - + ); diff --git a/frontend/src/screens/setup/RestoreNode.tsx b/frontend/src/screens/setup/RestoreNode.tsx index e06346796..08bd4ce8f 100644 --- a/frontend/src/screens/setup/RestoreNode.tsx +++ b/frontend/src/screens/setup/RestoreNode.tsx @@ -98,7 +98,9 @@ export function RestoreNode() { const handleChangeFile = (e: ChangeEvent) => { const files = e.currentTarget.files; - if (files) setFile(files[0]); + if (files) { + setFile(files[0]); + } }; return ( @@ -108,8 +110,8 @@ export function RestoreNode() { className="flex flex-col gap-5 mx-auto max-w-2xl text-sm" >
@@ -135,7 +137,7 @@ export function RestoreNode() { />
)} - Restore Node + Import Wallet ); diff --git a/frontend/src/screens/setup/SetupAdvanced.tsx b/frontend/src/screens/setup/SetupAdvanced.tsx new file mode 100644 index 000000000..fba99fadf --- /dev/null +++ b/frontend/src/screens/setup/SetupAdvanced.tsx @@ -0,0 +1,35 @@ +import { Link } from "react-router-dom"; + +import Container from "src/components/Container"; +import TwoColumnLayoutHeader from "src/components/TwoColumnLayoutHeader"; +import { Button } from "src/components/ui/button"; + +export function SetupAdvanced() { + return ( + <> + +
+ +
+ + + + + + + + + +
+
+
+ + ); +} diff --git a/frontend/src/screens/setup/SetupNode.tsx b/frontend/src/screens/setup/SetupNode.tsx index c54fff61a..9f3299947 100644 --- a/frontend/src/screens/setup/SetupNode.tsx +++ b/frontend/src/screens/setup/SetupNode.tsx @@ -1,343 +1,102 @@ -import React from "react"; +import React, { ReactElement } from "react"; import { useNavigate } from "react-router-dom"; import Container from "src/components/Container"; -import ExternalLink from "src/components/ExternalLink"; import TwoColumnLayoutHeader from "src/components/TwoColumnLayoutHeader"; +import { BreezIcon } from "src/components/icons/Breez"; +import { GreenlightIcon } from "src/components/icons/Greenlight"; +import { LDKIcon } from "src/components/icons/LDK"; +import { PhoenixdIcon } from "src/components/icons/Phoenixd"; import { Button } from "src/components/ui/button"; -import { Input } from "src/components/ui/input"; -import { Label } from "src/components/ui/label"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "src/components/ui/select"; -import { useToast } from "src/components/ui/use-toast"; -import useSetupStore from "src/state/SetupStore"; +import { backendTypeHasMnemonic, cn } from "src/lib/utils"; import { BackendType } from "src/types"; +import cashu from "src/assets/images/node/cashu.png"; +import lnd from "src/assets/images/node/lnd.png"; +import useSetupStore from "src/state/SetupStore"; + +type BackendTypeDefinition = { + id: BackendType; + title: string; + icon: ReactElement; +}; + +const backendTypes: BackendTypeDefinition[] = [ + { + id: "LDK", + title: "LDK", + icon: , + }, + { + id: "PHOENIX", + title: "phoenixd", + icon: , + }, + { + id: "BREEZ", + title: "Breez SDK", + icon: , + }, + { + id: "GREENLIGHT", + title: "Greenlight", + icon: , + }, + { + id: "LND", + title: "LND", + icon: , + }, + { + id: "CASHU", + title: "Cashu Mint", + icon: , + }, +]; + export function SetupNode() { - const setupStore = useSetupStore(); - const [backendType, setBackendType] = React.useState( - setupStore.nodeInfo.backendType || "LDK" - ); const navigate = useNavigate(); + const setupStore = useSetupStore(); + const [selectedBackendType, setSelectedBackupType] = + React.useState(); - async function handleSubmit(data: object) { - setupStore.updateNodeInfo({ - backendType, - ...data, - }); - navigate( - backendType === "BREEZ" || - backendType === "GREENLIGHT" || - backendType === "LDK" - ? `/setup/import-mnemonic` - : `/setup/finish` - ); + function next() { + navigate(`/setup/node/${selectedBackendType?.id.toLowerCase()}`); } + const hasImportedMnemonic = !!setupStore.nodeInfo.mnemonic; + return ( <> -
- - - {backendType === "BREEZ" && } - {backendType === "GREENLIGHT" && ( - - )} - {backendType === "LDK" && } - {backendType === "LND" && } - {backendType === "PHOENIX" && ( - - )} - {backendType === "CASHU" && } +
+
+ {backendTypes + .filter((item) => + hasImportedMnemonic ? backendTypeHasMnemonic(item.id) : true + ) + .map((item) => ( +
setSelectedBackupType(item)} + > +
{item.icon}
+ {item.title} +
+ ))} +
+
); } - -type SetupFormProps = { - handleSubmit(data: unknown): void; -}; - -function CashuForm({ handleSubmit }: SetupFormProps) { - const [cashuMintUrl, setCashuMintUrl] = React.useState(""); - - function onSubmit(e: React.FormEvent) { - e.preventDefault(); - handleSubmit({ cashuMintUrl }); - } - - return ( -
-
- - setCashuMintUrl(e.target.value)} - value={cashuMintUrl} - id="cashu-mint-url" - placeholder="https://8333.space:3338" - /> -
- - -
- ); -} - -function BreezForm({ handleSubmit }: SetupFormProps) { - const { toast } = useToast(); - const setupStore = useSetupStore(); - const [greenlightInviteCode, setGreenlightInviteCode] = - React.useState(setupStore.nodeInfo.greenlightInviteCode || ""); - const [breezApiKey, setBreezApiKey] = React.useState( - setupStore.nodeInfo.breezApiKey || "" - ); - - function onSubmit(e: React.FormEvent) { - e.preventDefault(); - if (!greenlightInviteCode || !breezApiKey) { - toast({ - title: "Please fill out all fields", - variant: "destructive", - }); - return; - } - handleSubmit({ - greenlightInviteCode, - breezApiKey, - }); - } - - return ( -
-
- - setGreenlightInviteCode(e.target.value)} - value={greenlightInviteCode} - type="text" - id="greenlight-invite-code" - placeholder="XXXX-YYYY" - /> -
-
- - setBreezApiKey(e.target.value)} - value={breezApiKey} - autoComplete="off" - type="text" - id="breez-api-key" - /> -
- -
- ); -} - -function GreenlightForm({ handleSubmit }: SetupFormProps) { - const setupStore = useSetupStore(); - const { toast } = useToast(); - const [greenlightInviteCode, setGreenlightInviteCode] = - React.useState(setupStore.nodeInfo.greenlightInviteCode || ""); - - function onSubmit(e: React.FormEvent) { - e.preventDefault(); - if (!greenlightInviteCode) { - toast({ - title: "Please fill out all fields", - variant: "destructive", - }); - return; - } - handleSubmit({ - greenlightInviteCode, - }); - } - - return ( -
-
- - setGreenlightInviteCode(e.target.value)} - value={greenlightInviteCode} - type="text" - id="greenlight-invite-code" - placeholder="XXXX-YYYY" - /> -
- -
- ); -} - -function LDKForm({ handleSubmit }: SetupFormProps) { - function onSubmit(e: React.FormEvent) { - e.preventDefault(); - handleSubmit({}); - } - - return ( -
- -
- ); -} - -function LNDForm({ handleSubmit }: SetupFormProps) { - const { toast } = useToast(); - const setupStore = useSetupStore(); - const [lndAddress, setLndAddress] = React.useState( - setupStore.nodeInfo.lndAddress || "" - ); - const [lndCertHex, setLndCertHex] = React.useState( - setupStore.nodeInfo.lndCertHex || "" - ); - const [lndMacaroonHex, setLndMacaroonHex] = React.useState( - setupStore.nodeInfo.lndMacaroonHex || "" - ); - // TODO: proper onboarding - - function onSubmit(e: React.FormEvent) { - e.preventDefault(); - if (!lndAddress || !lndCertHex || !lndMacaroonHex) { - toast({ - title: "Please fill out all fields", - variant: "destructive", - }); - return; - } - handleSubmit({ - lndAddress, - lndCertHex, - lndMacaroonHex, - }); - } - - return ( -
-
- - setLndAddress(e.target.value)} - value={lndAddress} - id="lnd-address" - /> -
-
- - setLndCertHex(e.target.value)} - value={lndCertHex} - type="text" - id="lnd-cert-hex" - /> -
-
- - setLndMacaroonHex(e.target.value)} - value={lndMacaroonHex} - type="text" - id="lnd-macaroon-hex" - /> -
- -
- ); -} - -function PhoenixForm({ handleSubmit }: SetupFormProps) { - const { toast } = useToast(); - const setupStore = useSetupStore(); - const [phoenixdAddress, setPhoenixdAddress] = React.useState( - setupStore.nodeInfo.phoenixdAddress || "http://127.0.0.1:9740" - ); - const [phoenixdAuthorization, setPhoenixdAuthorization] = - React.useState(setupStore.nodeInfo.phoenixdAuthorization || ""); - - function onSubmit(e: React.FormEvent) { - e.preventDefault(); - if (!phoenixdAddress || !phoenixdAuthorization) { - toast({ - title: "Please fill out all fields", - variant: "destructive", - }); - return; - } - handleSubmit({ - phoenixdAddress, - phoenixdAuthorization, - }); - } - - return ( -
-
- - setPhoenixdAddress(e.target.value)} - placeholder="http://127.0.0.1:9740" - value={phoenixdAddress} - id="phoenix-address" - /> -
-
- - setPhoenixdAuthorization(e.target.value)} - value={phoenixdAuthorization} - type="password" - id="phoenix-authorization" - /> -
- -
- ); -} diff --git a/frontend/src/screens/setup/SetupPassword.tsx b/frontend/src/screens/setup/SetupPassword.tsx index 78c00dcd4..e872026c1 100644 --- a/frontend/src/screens/setup/SetupPassword.tsx +++ b/frontend/src/screens/setup/SetupPassword.tsx @@ -1,9 +1,7 @@ import React, { useState } from "react"; -import { Link, useNavigate, useSearchParams } from "react-router-dom"; +import { useNavigate, useSearchParams } from "react-router-dom"; import useSetupStore from "src/state/SetupStore"; -import * as bip39 from "@scure/bip39"; -import { wordlist } from "@scure/bip39/wordlists/english"; import TwoColumnLayoutHeader from "src/components/TwoColumnLayoutHeader"; import { Button } from "src/components/ui/button"; import { Checkbox } from "src/components/ui/checkbox"; @@ -11,18 +9,19 @@ import { Input } from "src/components/ui/input"; import { Label } from "src/components/ui/label"; import { useToast } from "src/components/ui/use-toast"; import { useInfo } from "src/hooks/useInfo"; -import { backendTypeHasMnemonic } from "src/lib/utils"; export function SetupPassword() { - const { toast } = useToast(); + const navigate = useNavigate(); const store = useSetupStore(); + const { toast } = useToast(); const { data: info } = useInfo(); const [confirmPassword, setConfirmPassword] = React.useState(""); - const [searchParams] = useSearchParams(); - const navigate = useNavigate(); - const wallet = searchParams.get("wallet"); const [isPasswordSecured, setIsPasswordSecured] = useState(false); + const [searchParams] = useSearchParams(); + const wallet = searchParams.get("wallet") || "new"; + const node = searchParams.get("node") || ""; + function onSubmit(e: React.FormEvent) { e.preventDefault(); if (!info) { @@ -36,24 +35,13 @@ export function SetupPassword() { return; } - if (!backendTypeHasMnemonic(info.backendType)) { - // NOTE: LND flow does not setup a mnemonic - navigate(`/setup/finish`); - return; - } - - // Import flow (All options) if (wallet === "import") { + navigate(`/setup/import-mnemonic`); + } else if (node) { + navigate(`/setup/node/${node}`); + } else { navigate(`/setup/node`); - return; } - - // Default flow (LDK) - useSetupStore.getState().updateNodeInfo({ - backendType: "LDK", - mnemonic: bip39.generateMnemonic(wordlist, 128), - }); - navigate(`/setup/finish`); } return ( @@ -66,7 +54,7 @@ export function SetupPassword() { description="Your password is used to access your wallet, and it can't be reset or recovered if you lose it." />
-
+
-
+
- - {wallet === "import" && ( -
-

or

- - - -
- )}
diff --git a/frontend/src/screens/setup/SetupWallet.tsx b/frontend/src/screens/setup/SetupWallet.tsx deleted file mode 100644 index cf15ae4a3..000000000 --- a/frontend/src/screens/setup/SetupWallet.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import { ChevronRight, WalletMinimal } from "lucide-react"; -import React from "react"; -import { Link } from "react-router-dom"; - -import Container from "src/components/Container"; -import TwoColumnLayoutHeader from "src/components/TwoColumnLayoutHeader"; -import { Button } from "src/components/ui/button"; -import { - Card, - CardContent, - CardDescription, - CardTitle, -} from "src/components/ui/card"; -import { useInfo } from "src/hooks/useInfo"; - -export function SetupWallet() { - const { data: info } = useInfo(); - const [showOtherOptions, setShowOtherOptions] = React.useState(false); - return ( - <> - -
- - {info?.backendType && ( - <> - - - -
- -
- {info.backendType} Wallet - - Connect to preconfigured {info.backendType} Wallet - -
-
- -
-
-
-
- - - {!showOtherOptions && ( - - )} - - )} - - {(showOtherOptions || !info?.backendType) && ( -
- - - - - - -
- )} -
-
- - ); -} diff --git a/frontend/src/screens/setup/node/BreezForm.tsx b/frontend/src/screens/setup/node/BreezForm.tsx new file mode 100644 index 000000000..508ed5f13 --- /dev/null +++ b/frontend/src/screens/setup/node/BreezForm.tsx @@ -0,0 +1,77 @@ +import React from "react"; +import { useNavigate } from "react-router-dom"; +import Container from "src/components/Container"; +import TwoColumnLayoutHeader from "src/components/TwoColumnLayoutHeader"; +import { Button } from "src/components/ui/button"; +import { Input } from "src/components/ui/input"; +import { Label } from "src/components/ui/label"; +import { useToast } from "src/components/ui/use-toast"; +import useSetupStore from "src/state/SetupStore"; + +export function BreezForm() { + const { toast } = useToast(); + const navigate = useNavigate(); + const setupStore = useSetupStore(); + const [greenlightInviteCode, setGreenlightInviteCode] = + React.useState(setupStore.nodeInfo.greenlightInviteCode || ""); + const [breezApiKey, setBreezApiKey] = React.useState( + setupStore.nodeInfo.breezApiKey || "" + ); + + async function handleSubmit(data: object) { + setupStore.updateNodeInfo({ + backendType: "BREEZ", + ...data, + }); + navigate("/setup/import-mnemonic"); + } + + function onSubmit(e: React.FormEvent) { + e.preventDefault(); + if (!greenlightInviteCode || !breezApiKey) { + toast({ + title: "Please fill out all fields", + variant: "destructive", + }); + return; + } + handleSubmit({ + greenlightInviteCode, + breezApiKey, + }); + } + + return ( + + +
+
+ + setGreenlightInviteCode(e.target.value)} + value={greenlightInviteCode} + type="text" + id="greenlight-invite-code" + placeholder="XXXX-YYYY" + /> +
+
+ + setBreezApiKey(e.target.value)} + value={breezApiKey} + autoComplete="off" + type="text" + id="breez-api-key" + /> +
+ +
+
+ ); +} diff --git a/frontend/src/screens/setup/node/CashuForm.tsx b/frontend/src/screens/setup/node/CashuForm.tsx new file mode 100644 index 000000000..2ee446059 --- /dev/null +++ b/frontend/src/screens/setup/node/CashuForm.tsx @@ -0,0 +1,61 @@ +import React from "react"; +import { useNavigate } from "react-router-dom"; +import Container from "src/components/Container"; +import ExternalLink from "src/components/ExternalLink"; +import TwoColumnLayoutHeader from "src/components/TwoColumnLayoutHeader"; +import { Button } from "src/components/ui/button"; +import { Input } from "src/components/ui/input"; +import { Label } from "src/components/ui/label"; +import useSetupStore from "src/state/SetupStore"; + +export function CashuForm() { + const setupStore = useSetupStore(); + const navigate = useNavigate(); + const [cashuMintUrl, setCashuMintUrl] = React.useState(""); + + function onSubmit(e: React.FormEvent) { + e.preventDefault(); + handleSubmit({ cashuMintUrl }); + } + + async function handleSubmit(data: object) { + setupStore.updateNodeInfo({ + backendType: "CASHU", + ...data, + }); + navigate("/setup/finish"); + } + + return ( + + +
+
+ + setCashuMintUrl(e.target.value)} + value={cashuMintUrl} + id="cashu-mint-url" + placeholder="https://8333.space:3338" + /> +
+ +
+
+ ); +} diff --git a/frontend/src/screens/setup/node/GreenlightForm.tsx b/frontend/src/screens/setup/node/GreenlightForm.tsx new file mode 100644 index 000000000..bdc928d2f --- /dev/null +++ b/frontend/src/screens/setup/node/GreenlightForm.tsx @@ -0,0 +1,62 @@ +import React from "react"; +import { useNavigate } from "react-router-dom"; +import Container from "src/components/Container"; +import TwoColumnLayoutHeader from "src/components/TwoColumnLayoutHeader"; +import { Button } from "src/components/ui/button"; +import { Input } from "src/components/ui/input"; +import { Label } from "src/components/ui/label"; +import { useToast } from "src/components/ui/use-toast"; +import useSetupStore from "src/state/SetupStore"; + +export function GreenlightForm() { + const { toast } = useToast(); + const navigate = useNavigate(); + const setupStore = useSetupStore(); + const [greenlightInviteCode, setGreenlightInviteCode] = + React.useState(setupStore.nodeInfo.greenlightInviteCode || ""); + + async function handleSubmit(data: object) { + setupStore.updateNodeInfo({ + backendType: "GREENLIGHT", + ...data, + }); + navigate("/setup/import-mnemonic"); + } + + function onSubmit(e: React.FormEvent) { + e.preventDefault(); + if (!greenlightInviteCode) { + toast({ + title: "Please fill out all fields", + variant: "destructive", + }); + return; + } + handleSubmit({ + greenlightInviteCode, + }); + } + + return ( + + +
+
+ + setGreenlightInviteCode(e.target.value)} + value={greenlightInviteCode} + type="text" + id="greenlight-invite-code" + placeholder="XXXX-YYYY" + /> +
+ +
+
+ ); +} diff --git a/frontend/src/screens/setup/node/LDKForm.tsx b/frontend/src/screens/setup/node/LDKForm.tsx new file mode 100644 index 000000000..ff471d895 --- /dev/null +++ b/frontend/src/screens/setup/node/LDKForm.tsx @@ -0,0 +1,28 @@ +import { wordlist } from "@scure/bip39/wordlists/english"; +import { useEffect } from "react"; +import { useNavigate, useSearchParams } from "react-router-dom"; +import useSetupStore from "src/state/SetupStore"; + +import * as bip39 from "@scure/bip39"; +import Loading from "src/components/Loading"; + +export function LDKForm() { + const navigate = useNavigate(); + const [searchParams] = useSearchParams(); + + // No configuration needed, automatically proceed with the next step + useEffect(() => { + // only generate a mnemonic if one is not already imported + if (!useSetupStore.getState().nodeInfo.mnemonic) { + useSetupStore.getState().updateNodeInfo({ + mnemonic: bip39.generateMnemonic(wordlist, 128), + }); + } + useSetupStore.getState().updateNodeInfo({ + backendType: "LDK", + }); + navigate("/setup/finish"); + }, [navigate, searchParams]); + + return ; +} diff --git a/frontend/src/screens/setup/node/LNDForm.tsx b/frontend/src/screens/setup/node/LNDForm.tsx new file mode 100644 index 000000000..3b595527a --- /dev/null +++ b/frontend/src/screens/setup/node/LNDForm.tsx @@ -0,0 +1,90 @@ +import React from "react"; +import { useNavigate } from "react-router-dom"; +import Container from "src/components/Container"; +import TwoColumnLayoutHeader from "src/components/TwoColumnLayoutHeader"; +import { Button } from "src/components/ui/button"; +import { Input } from "src/components/ui/input"; +import { Label } from "src/components/ui/label"; +import { useToast } from "src/components/ui/use-toast"; +import useSetupStore from "src/state/SetupStore"; + +export function LNDForm() { + const { toast } = useToast(); + const navigate = useNavigate(); + const setupStore = useSetupStore(); + const [lndAddress, setLndAddress] = React.useState( + setupStore.nodeInfo.lndAddress || "" + ); + const [lndCertHex, setLndCertHex] = React.useState( + setupStore.nodeInfo.lndCertHex || "" + ); + const [lndMacaroonHex, setLndMacaroonHex] = React.useState( + setupStore.nodeInfo.lndMacaroonHex || "" + ); + + // TODO: proper onboarding + function onSubmit(e: React.FormEvent) { + e.preventDefault(); + if (!lndAddress || !lndCertHex || !lndMacaroonHex) { + toast({ + title: "Please fill out all fields", + variant: "destructive", + }); + return; + } + handleSubmit({ + lndAddress, + lndCertHex, + lndMacaroonHex, + }); + } + + async function handleSubmit(data: object) { + setupStore.updateNodeInfo({ + backendType: "LND", + ...data, + }); + navigate("/setup/finish"); + } + + return ( + + +
+
+ + setLndAddress(e.target.value)} + value={lndAddress} + id="lnd-address" + /> +
+
+ + setLndCertHex(e.target.value)} + value={lndCertHex} + type="text" + id="lnd-cert-hex" + /> +
+
+ + setLndMacaroonHex(e.target.value)} + value={lndMacaroonHex} + type="text" + id="lnd-macaroon-hex" + /> +
+ +
+
+ ); +} diff --git a/frontend/src/screens/setup/node/PhoenixdForm.tsx b/frontend/src/screens/setup/node/PhoenixdForm.tsx new file mode 100644 index 000000000..d00b8358b --- /dev/null +++ b/frontend/src/screens/setup/node/PhoenixdForm.tsx @@ -0,0 +1,75 @@ +import React from "react"; +import { useNavigate } from "react-router-dom"; +import Container from "src/components/Container"; +import TwoColumnLayoutHeader from "src/components/TwoColumnLayoutHeader"; +import { Button } from "src/components/ui/button"; +import { Input } from "src/components/ui/input"; +import { Label } from "src/components/ui/label"; +import { useToast } from "src/components/ui/use-toast"; +import useSetupStore from "src/state/SetupStore"; + +export function PhoenixdForm() { + const { toast } = useToast(); + const navigate = useNavigate(); + const setupStore = useSetupStore(); + const [phoenixdAddress, setPhoenixdAddress] = React.useState( + setupStore.nodeInfo.phoenixdAddress || "http://127.0.0.1:9740" + ); + const [phoenixdAuthorization, setPhoenixdAuthorization] = + React.useState(setupStore.nodeInfo.phoenixdAuthorization || ""); + + function onSubmit(e: React.FormEvent) { + e.preventDefault(); + if (!phoenixdAddress || !phoenixdAuthorization) { + toast({ + title: "Please fill out all fields", + variant: "destructive", + }); + return; + } + handleSubmit({ + phoenixdAddress, + phoenixdAuthorization, + }); + } + + async function handleSubmit(data: object) { + setupStore.updateNodeInfo({ + backendType: "PHOENIX", + ...data, + }); + navigate("/setup/finish"); + } + + return ( + + +
+
+ + setPhoenixdAddress(e.target.value)} + placeholder="http://127.0.0.1:9740" + value={phoenixdAddress} + id="phoenix-address" + /> +
+
+ + setPhoenixdAuthorization(e.target.value)} + value={phoenixdAuthorization} + type="password" + id="phoenix-authorization" + /> +
+ +
+
+ ); +} diff --git a/frontend/src/screens/setup/node/PresetNodeForm.tsx b/frontend/src/screens/setup/node/PresetNodeForm.tsx new file mode 100644 index 000000000..4d10a4cd4 --- /dev/null +++ b/frontend/src/screens/setup/node/PresetNodeForm.tsx @@ -0,0 +1,31 @@ +import { wordlist } from "@scure/bip39/wordlists/english"; +import { useEffect } from "react"; +import { useNavigate, useSearchParams } from "react-router-dom"; +import useSetupStore from "src/state/SetupStore"; + +import * as bip39 from "@scure/bip39"; +import Loading from "src/components/Loading"; +import { useInfo } from "src/hooks/useInfo"; +import { backendTypeHasMnemonic } from "src/lib/utils"; + +export function PresetNodeForm() { + const navigate = useNavigate(); + const [searchParams] = useSearchParams(); + const { data: info } = useInfo(); + + // No configuration needed, automatically proceed with the next step + useEffect(() => { + if (!info) { + return; + } + if (backendTypeHasMnemonic(info.backendType)) { + useSetupStore.getState().updateNodeInfo({ + mnemonic: bip39.generateMnemonic(wordlist, 128), + }); + } + + navigate("/setup/finish"); + }, [info, navigate, searchParams]); + + return ; +} From b87fc4b9341ecd1b556aaf068b79f3bbb68adad8 Mon Sep 17 00:00:00 2001 From: Roland <33993199+rolznz@users.noreply.github.com> Date: Mon, 10 Jun 2024 16:09:47 +0700 Subject: [PATCH 03/36] Chore: cleanup backend type checks in frontend (#396) Co-authored-by: pavanjoshi914 --- frontend/src/components/SidebarHint.tsx | 12 +-- frontend/src/components/layouts/AppLayout.tsx | 14 +-- .../src/components/layouts/SettingsLayout.tsx | 10 +-- frontend/src/components/ui/carousel.tsx | 3 +- frontend/src/hooks/useInfo.ts | 20 ++++- frontend/src/lib/backendType.ts | 40 +++++++++ frontend/src/lib/utils.ts | 5 -- frontend/src/screens/channels/Channels.tsx | 46 +++++----- frontend/src/screens/setup/SetupNode.tsx | 89 ++++++++++--------- .../src/screens/setup/node/PresetNodeForm.tsx | 4 +- 10 files changed, 147 insertions(+), 96 deletions(-) create mode 100644 frontend/src/lib/backendType.ts diff --git a/frontend/src/components/SidebarHint.tsx b/frontend/src/components/SidebarHint.tsx index 594b6349a..24388e2d1 100644 --- a/frontend/src/components/SidebarHint.tsx +++ b/frontend/src/components/SidebarHint.tsx @@ -14,13 +14,12 @@ import { useAlbyMe } from "src/hooks/useAlbyMe"; import { useChannels } from "src/hooks/useChannels"; import { useInfo } from "src/hooks/useInfo"; import { useNodeConnectionInfo } from "src/hooks/useNodeConnectionInfo"; -import { backendTypeHasMnemonic } from "src/lib/utils"; import useChannelOrderStore from "src/state/ChannelOrderStore"; function SidebarHint() { const { data: channels } = useChannels(); const { data: albyBalance } = useAlbyBalance(); - const { data: info } = useInfo(); + const { data: info, hasChannelManagement, hasMnemonic } = useInfo(); const { data: albyMe } = useAlbyMe(); const { order } = useChannelOrderStore(); const location = useLocation(); @@ -49,7 +48,7 @@ function SidebarHint() { // User has funds to migrate if ( - info?.backendType === "LDK" && + hasChannelManagement && albyBalance && albyBalance.sats * (1 - ALBY_SERVICE_FEE) > ALBY_MIN_BALANCE + 50000 /* accomodate for onchain fees */ @@ -66,10 +65,7 @@ function SidebarHint() { } // User has no channels yet - if ( - (info?.backendType === "LDK" || info?.backendType === "GREENLIGHT") && - channels?.length === 0 - ) { + if (hasChannelManagement && channels?.length === 0) { return ( {/*
*/} - {(info?.backendType === "LDK" || - info?.backendType === "GREENLIGHT") && ( + {hasChannelManagement && ( Liquidity @@ -139,6 +138,7 @@ export default function AppLayout() { { + // eslint-disable-next-line @typescript-eslint/no-explicit-any const chatwoot = (window as any).$chatwoot; if (chatwoot) { chatwoot.toggle("open"); @@ -274,8 +274,12 @@ const MenuItem = ({ { - if (disabled) e.preventDefault(); - if (onClick) onClick(e); + if (disabled) { + e.preventDefault(); + } + if (onClick) { + onClick(e); + } }} className={({ isActive }) => cn( diff --git a/frontend/src/components/layouts/SettingsLayout.tsx b/frontend/src/components/layouts/SettingsLayout.tsx index ed375edb4..312a8039b 100644 --- a/frontend/src/components/layouts/SettingsLayout.tsx +++ b/frontend/src/components/layouts/SettingsLayout.tsx @@ -24,7 +24,7 @@ import { request } from "src/utils/request"; export default function SettingsLayout() { const { data: csrf } = useCSRF(); - const { mutate: refetchInfo } = useInfo(); + const { mutate: refetchInfo, hasMnemonic, hasNodeBackup } = useInfo(); const navigate = useNavigate(); const { toast } = useToast(); const [shuttingDown, setShuttingDown] = useState(false); @@ -57,8 +57,6 @@ export default function SettingsLayout() { } }, [csrf, navigate, refetchInfo, toast]); - const { data: info } = useInfo(); - return ( <> Unlock Password - {(info?.backendType === "LDK" || - info?.backendType === "BREEZ" || - info?.backendType === "GREENLIGHT") && ( + {hasMnemonic && ( Key Backup )} - {info?.backendType === "LDK" && ( + {hasNodeBackup && ( Node Backup )} diff --git a/frontend/src/components/ui/carousel.tsx b/frontend/src/components/ui/carousel.tsx index 61b1eb80a..0807d83db 100644 --- a/frontend/src/components/ui/carousel.tsx +++ b/frontend/src/components/ui/carousel.tsx @@ -255,8 +255,7 @@ const CarouselDots = React.forwardRef< React.HTMLAttributes >((props, ref) => { const { api } = useCarousel(); - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const [_, setUpdateState] = React.useState(false); + const [, setUpdateState] = React.useState(false); const toggleUpdateState = React.useCallback( () => setUpdateState((prevState) => !prevState), [] diff --git a/frontend/src/hooks/useInfo.ts b/frontend/src/hooks/useInfo.ts index d8239c8b6..2aca0d432 100644 --- a/frontend/src/hooks/useInfo.ts +++ b/frontend/src/hooks/useInfo.ts @@ -1,5 +1,7 @@ import useSWR, { SWRConfiguration } from "swr"; +import React from "react"; +import { backendTypeConfigs } from "src/lib/backendType"; import { InfoResponse } from "src/types"; import { swrFetcher } from "src/utils/swr"; @@ -8,9 +10,25 @@ const pollConfiguration: SWRConfiguration = { }; export function useInfo(poll = false) { - return useSWR( + const info = useSWR( "/api/info", swrFetcher, poll ? pollConfiguration : undefined ); + + return React.useMemo( + () => ({ + ...info, + hasChannelManagement: + info.data?.backendType && + backendTypeConfigs[info.data.backendType].hasChannelManagement, + hasMnemonic: + info.data?.backendType && + backendTypeConfigs[info.data.backendType].hasMnemonic, + hasNodeBackup: + info.data?.backendType && + backendTypeConfigs[info.data.backendType].hasNodeBackup, + }), + [info] + ); } diff --git a/frontend/src/lib/backendType.ts b/frontend/src/lib/backendType.ts new file mode 100644 index 000000000..3bb7d72ec --- /dev/null +++ b/frontend/src/lib/backendType.ts @@ -0,0 +1,40 @@ +import { BackendType } from "src/types"; + +type BackendTypeConfig = { + hasMnemonic: boolean; + hasChannelManagement: boolean; + hasNodeBackup: boolean; +}; + +export const backendTypeConfigs: Record = { + LND: { + hasMnemonic: false, + hasChannelManagement: false, // TODO: set to true soon + hasNodeBackup: false, + }, + BREEZ: { + hasMnemonic: true, + hasChannelManagement: false, + hasNodeBackup: false, + }, + GREENLIGHT: { + hasMnemonic: true, + hasChannelManagement: true, + hasNodeBackup: false, + }, + LDK: { + hasMnemonic: true, + hasChannelManagement: true, + hasNodeBackup: true, + }, + PHOENIX: { + hasMnemonic: false, + hasChannelManagement: false, + hasNodeBackup: false, + }, + CASHU: { + hasMnemonic: false, + hasChannelManagement: false, + hasNodeBackup: false, + }, +}; diff --git a/frontend/src/lib/utils.ts b/frontend/src/lib/utils.ts index 3620a5324..22e2116ae 100644 --- a/frontend/src/lib/utils.ts +++ b/frontend/src/lib/utils.ts @@ -1,5 +1,4 @@ import { clsx, type ClassValue } from "clsx"; -import { BackendType } from "src/types"; import { twMerge } from "tailwind-merge"; export function cn(...inputs: ClassValue[]) { @@ -21,7 +20,3 @@ export function splitSocketAddress(socketAddress: string) { const port = socketAddress.slice(lastColonIndex + 1); return { address, port }; } - -export function backendTypeHasMnemonic(backendType: BackendType) { - return ["LND", "PHOENIX", "CASHU"].indexOf(backendType) === -1; -} diff --git a/frontend/src/screens/channels/Channels.tsx b/frontend/src/screens/channels/Channels.tsx index ab63e0922..e4fb97e94 100644 --- a/frontend/src/screens/channels/Channels.tsx +++ b/frontend/src/screens/channels/Channels.tsx @@ -64,7 +64,7 @@ export default function Channels() { const { data: balances } = useBalances(); const { data: albyBalance } = useAlbyBalance(); const [nodes, setNodes] = React.useState([]); - const { data: info, mutate: reloadInfo } = useInfo(); + const { mutate: reloadInfo } = useInfo(); const { data: csrf } = useCSRF(); const redeemOnchainFunds = useRedeemOnchainFunds(); @@ -253,30 +253,26 @@ export default function Channels() { )} - {info?.backendType === "LDK" && ( - <> - - - Management - - - Connected Peers - - - - - Sign Message - - - - Clear Routing Data - - - - )} + + + Management + + + Connected Peers + + + + + Sign Message + + + + Clear Routing Data + + diff --git a/frontend/src/screens/setup/SetupNode.tsx b/frontend/src/screens/setup/SetupNode.tsx index 9f3299947..1e224a022 100644 --- a/frontend/src/screens/setup/SetupNode.tsx +++ b/frontend/src/screens/setup/SetupNode.tsx @@ -7,60 +7,65 @@ import { GreenlightIcon } from "src/components/icons/Greenlight"; import { LDKIcon } from "src/components/icons/LDK"; import { PhoenixdIcon } from "src/components/icons/Phoenixd"; import { Button } from "src/components/ui/button"; -import { backendTypeHasMnemonic, cn } from "src/lib/utils"; +import { cn } from "src/lib/utils"; import { BackendType } from "src/types"; import cashu from "src/assets/images/node/cashu.png"; import lnd from "src/assets/images/node/lnd.png"; +import { backendTypeConfigs } from "src/lib/backendType"; import useSetupStore from "src/state/SetupStore"; -type BackendTypeDefinition = { - id: BackendType; +type BackendTypeDisplayConfig = { title: string; icon: ReactElement; }; -const backendTypes: BackendTypeDefinition[] = [ +const backendTypeDisplayConfigs: Record = { - id: "LDK", - title: "LDK", - icon: , - }, - { - id: "PHOENIX", - title: "phoenixd", - icon: , - }, - { - id: "BREEZ", - title: "Breez SDK", - icon: , - }, - { - id: "GREENLIGHT", - title: "Greenlight", - icon: , - }, - { - id: "LND", - title: "LND", - icon: , - }, - { - id: "CASHU", - title: "Cashu Mint", - icon: , - }, -]; + LDK: { + title: "LDK", + icon: , + }, + PHOENIX: { + title: "phoenixd", + icon: , + }, + BREEZ: { + title: "Breez SDK", + icon: , + }, + GREENLIGHT: { + title: "Greenlight", + icon: , + }, + LND: { + title: "LND", + icon: , + }, + CASHU: { + title: "Cashu Mint", + icon: , + }, + }; + +const backendTypeDisplayConfigList = Object.entries( + backendTypeDisplayConfigs +).map((entry) => ({ + ...entry[1], + backendType: entry[0] as BackendType, +})); export function SetupNode() { const navigate = useNavigate(); const setupStore = useSetupStore(); const [selectedBackendType, setSelectedBackupType] = - React.useState(); + React.useState(); function next() { - navigate(`/setup/node/${selectedBackendType?.id.toLowerCase()}`); + if (!selectedBackendType) { + return; + } + navigate(`/setup/node/${selectedBackendType.toLowerCase()}`); } const hasImportedMnemonic = !!setupStore.nodeInfo.mnemonic; @@ -74,18 +79,20 @@ export function SetupNode() { />
- {backendTypes + {backendTypeDisplayConfigList .filter((item) => - hasImportedMnemonic ? backendTypeHasMnemonic(item.id) : true + hasImportedMnemonic + ? backendTypeConfigs[item.backendType].hasMnemonic + : true ) .map((item) => (
setSelectedBackupType(item)} + onClick={() => setSelectedBackupType(item.backendType)} >
{item.icon}
{item.title} diff --git a/frontend/src/screens/setup/node/PresetNodeForm.tsx b/frontend/src/screens/setup/node/PresetNodeForm.tsx index 4d10a4cd4..3c72bf850 100644 --- a/frontend/src/screens/setup/node/PresetNodeForm.tsx +++ b/frontend/src/screens/setup/node/PresetNodeForm.tsx @@ -6,7 +6,7 @@ import useSetupStore from "src/state/SetupStore"; import * as bip39 from "@scure/bip39"; import Loading from "src/components/Loading"; import { useInfo } from "src/hooks/useInfo"; -import { backendTypeHasMnemonic } from "src/lib/utils"; +import { backendTypeConfigs } from "src/lib/backendType"; export function PresetNodeForm() { const navigate = useNavigate(); @@ -18,7 +18,7 @@ export function PresetNodeForm() { if (!info) { return; } - if (backendTypeHasMnemonic(info.backendType)) { + if (backendTypeConfigs[info.backendType].hasMnemonic) { useSetupStore.getState().updateNodeInfo({ mnemonic: bip39.generateMnemonic(wordlist, 128), }); From 2f5bbf4c6ba9626e3b6f13d8f2f7a2639184879f Mon Sep 17 00:00:00 2001 From: Roland <33993199+rolznz@users.noreply.github.com> Date: Mon, 10 Jun 2024 19:31:54 +0700 Subject: [PATCH 04/36] fix: enable auto vacuum to ensure DB does not grow infinitely (#399) --- migrations/202406071726_vacuum.go | 27 +++++++++++++++++++++++++++ migrations/migrate.go | 1 + service.go | 10 ++++++++-- 3 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 migrations/202406071726_vacuum.go diff --git a/migrations/202406071726_vacuum.go b/migrations/202406071726_vacuum.go new file mode 100644 index 000000000..d405cbfdc --- /dev/null +++ b/migrations/202406071726_vacuum.go @@ -0,0 +1,27 @@ +package migrations + +import ( + _ "embed" + + "github.com/go-gormigrate/gormigrate/v2" + "gorm.io/gorm" +) + +// VACUUM to finish the update the vacuum mode to auto_vacuum +// See https://sqlite.org/pragma.html +// "The database connection can be changed between full and incremental autovacuum mode at any time. +// However, changing from "none" to "full" or "incremental" can only occur when the database is new +// (no tables have yet been created) or by running the VACUUM command." +var _202406071726_vacuum = &gormigrate.Migration{ + ID: "202406071726_vacuum", + Migrate: func(tx *gorm.DB) error { + if err := tx.Exec("VACUUM").Error; err != nil { + return err + } + + return nil + }, + Rollback: func(tx *gorm.DB) error { + return nil + }, +} diff --git a/migrations/migrate.go b/migrations/migrate.go index dbc30ab78..276567e62 100644 --- a/migrations/migrate.go +++ b/migrations/migrate.go @@ -15,6 +15,7 @@ func Migrate(db *gorm.DB, appConfig *config.AppConfig, logger *logrus.Logger) er _202404021909_nullable_expires_at, _202405302121_store_decrypted_request, _202406061259_delete_content, + _202406071726_vacuum, }) return m.Migrate() diff --git a/service.go b/service.go index de2e7eb44..d552fa32a 100644 --- a/service.go +++ b/service.go @@ -125,8 +125,14 @@ func NewService(ctx context.Context) (*Service, error) { if err != nil { return nil, err } - // Enable foreign keys for sqlite - gormDB.Exec("PRAGMA foreign_keys=ON;") + err = gormDB.Exec("PRAGMA foreign_keys=ON;").Error + if err != nil { + return nil, err + } + err = gormDB.Exec("PRAGMA auto_vacuum=FULL;").Error + if err != nil { + return nil, err + } sqlDb, err = gormDB.DB() if err != nil { return nil, err From b7fcca1947c38fd30c5403a26c876160759c4558 Mon Sep 17 00:00:00 2001 From: Michael Bumann Date: Tue, 11 Jun 2024 06:49:13 +0300 Subject: [PATCH 05/36] feat: buy bitcoin link (#405) Co-authored-by: Roland Bewick --- README.md | 2 +- api/api.go | 54 +++- api/esplora.go | 56 ++++ api/models.go | 9 +- config/models.go | 6 +- frontend/src/App.tsx | 8 +- frontend/src/constants.ts | 1 - frontend/src/hooks/useOnchainAddress.ts | 45 ++++ frontend/src/screens/channels/Channels.tsx | 14 +- .../screens/channels/CurrentChannelOrder.tsx | 92 +++---- frontend/src/screens/onchain/BuyBitcoin.tsx | 251 ++++++++++++++++++ .../src/screens/onchain/DepositBitcoin.tsx | 111 ++++++++ frontend/src/screens/onchain/NewAddress.tsx | 173 ------------ frontend/src/types.ts | 4 - http/http_service.go | 20 +- wails_handlers.go | 10 +- 16 files changed, 597 insertions(+), 259 deletions(-) create mode 100644 api/esplora.go create mode 100644 frontend/src/hooks/useOnchainAddress.ts create mode 100644 frontend/src/screens/onchain/BuyBitcoin.tsx create mode 100644 frontend/src/screens/onchain/DepositBitcoin.tsx delete mode 100644 frontend/src/screens/onchain/NewAddress.tsx diff --git a/README.md b/README.md index 4ffbc341f..4a55c3fb6 100644 --- a/README.md +++ b/README.md @@ -181,7 +181,7 @@ Follow the steps to integrate Mutinynet with your NWC Next setup: 3. During onboarding, after setting your password and authorizing via Alby OAuth, you'll be directed to `/onboarding/lightning/migrate-alby`. Click "Skip For Now" to access your wallet interface -4. Navigate to `channels/onchain/new-address`, copy your On-Chain Address, then visit the [Mutinynet Faucet](https://faucet.mutinynet.com/) to deposit sats. Ensure the transaction confirms on [mempool.space](https://mutinynet.com/) +4. Navigate to `channels/onchain/deposit-bitcoin`, copy your On-Chain Address, then visit the [Mutinynet Faucet](https://faucet.mutinynet.com/) to deposit sats. Ensure the transaction confirms on [mempool.space](https://mutinynet.com/) 5. Your On-chain balance will update under `/channels` diff --git a/api/api.go b/api/api.go index 70dc7e16d..84ee3da0e 100644 --- a/api/api.go +++ b/api/api.go @@ -16,6 +16,7 @@ import ( "github.com/getAlby/nostr-wallet-connect/alby" "github.com/getAlby/nostr-wallet-connect/backup" + "github.com/getAlby/nostr-wallet-connect/config" "github.com/getAlby/nostr-wallet-connect/db" "github.com/getAlby/nostr-wallet-connect/lnclient" "github.com/getAlby/nostr-wallet-connect/lsp" @@ -375,17 +376,57 @@ func (api *api) CloseChannel(ctx context.Context, peerId, channelId string, forc }) } -func (api *api) GetNewOnchainAddress(ctx context.Context) (*NewOnchainAddressResponse, error) { +func (api *api) GetNewOnchainAddress(ctx context.Context) (string, error) { if api.svc.GetLNClient() == nil { - return nil, errors.New("LNClient not started") + return "", errors.New("LNClient not started") } address, err := api.svc.GetLNClient().GetNewOnchainAddress(ctx) if err != nil { - return nil, err + return "", err } - return &NewOnchainAddressResponse{ - Address: address, - }, nil + + api.svc.GetConfig().SetUpdate(config.OnchainAddressKey, address, "") + + return address, nil +} + +func (api *api) GetUnusedOnchainAddress(ctx context.Context) (string, error) { + if api.svc.GetLNClient() == nil { + return "", errors.New("LNClient not started") + } + + currentAddress, err := api.svc.GetConfig().Get(config.OnchainAddressKey, "") + if err != nil { + api.logger.WithError(err).Error("Failed to get current address from config") + return "", err + } + + if currentAddress != "" { + // check if address has any transactions + response, err := api.RequestEsploraApi("/address/" + currentAddress + "/txs") + if err != nil { + api.logger.WithError(err).Error("Failed to get current address transactions") + return currentAddress, nil + } + + transactions, ok := response.([]interface{}) + if !ok { + api.logger.WithField("response", response).Error("Failed to cast esplora address txs response", response) + return currentAddress, nil + } + + if len(transactions) == 0 { + // address has not been used yet + return currentAddress, nil + } + } + + newAddress, err := api.GetNewOnchainAddress(ctx) + if err != nil { + api.logger.WithError(err).Error("Failed to retrieve new onchain address") + return "", err + } + return newAddress, nil } func (api *api) SignMessage(ctx context.Context, message string) (*SignMessageResponse, error) { @@ -426,6 +467,7 @@ func (api *api) GetBalances(ctx context.Context) (*BalancesResponse, error) { return balances, nil } +// TODO: remove dependency on this endpoint func (api *api) RequestMempoolApi(endpoint string) (interface{}, error) { url := api.svc.GetConfig().GetEnv().MempoolApi + endpoint diff --git a/api/esplora.go b/api/esplora.go new file mode 100644 index 000000000..f1d185501 --- /dev/null +++ b/api/esplora.go @@ -0,0 +1,56 @@ +package api + +import ( + "encoding/json" + "errors" + "fmt" + "io" + "net/http" + "time" + + "github.com/sirupsen/logrus" +) + +func (api *api) RequestEsploraApi(endpoint string) (interface{}, error) { + url := api.svc.GetConfig().GetEnv().LDKEsploraServer + endpoint + + client := http.Client{ + Timeout: time.Second * 10, + } + + req, err := http.NewRequest(http.MethodGet, url, nil) + if err != nil { + api.logger.WithError(err).WithFields(logrus.Fields{ + "url": url, + }).Error("Failed to create http request") + return nil, err + } + + res, err := client.Do(req) + if err != nil { + api.logger.WithError(err).WithFields(logrus.Fields{ + "url": url, + }).Error("Failed to send request") + return nil, err + } + + defer res.Body.Close() + + body, readErr := io.ReadAll(res.Body) + if readErr != nil { + api.logger.WithError(err).WithFields(logrus.Fields{ + "url": url, + }).Error("Failed to read response body") + return nil, errors.New("failed to read response body") + } + + var jsonContent interface{} + jsonErr := json.Unmarshal(body, &jsonContent) + if jsonErr != nil { + api.logger.WithError(jsonErr).WithFields(logrus.Fields{ + "url": url, + }).Error("Failed to deserialize json") + return nil, fmt.Errorf("failed to deserialize json %s %s", url, string(body)) + } + return jsonContent, nil +} diff --git a/api/models.go b/api/models.go index 7e9462964..1f912721f 100644 --- a/api/models.go +++ b/api/models.go @@ -29,7 +29,8 @@ type API interface { DisconnectPeer(ctx context.Context, peerId string) error OpenChannel(ctx context.Context, openChannelRequest *OpenChannelRequest) (*OpenChannelResponse, error) CloseChannel(ctx context.Context, peerId, channelId string, force bool) (*CloseChannelResponse, error) - GetNewOnchainAddress(ctx context.Context) (*NewOnchainAddressResponse, error) + GetNewOnchainAddress(ctx context.Context) (string, error) + GetUnusedOnchainAddress(ctx context.Context) (string, error) SignMessage(ctx context.Context, message string) (*SignMessageResponse, error) RedeemOnchainFunds(ctx context.Context, toAddress string) (*RedeemOnchainFundsResponse, error) GetBalances(ctx context.Context) (*BalancesResponse, error) @@ -98,7 +99,7 @@ type BackupReminderRequest struct { } type SetupRequest struct { - LNBackendType string `json:"backendType"` + LNBackendType string `json:"backendType"` UnlockPassword string `json:"unlockPassword"` // Breez / Greenlight @@ -174,10 +175,6 @@ type RedeemOnchainFundsResponse struct { type OnchainBalanceResponse = lnclient.OnchainBalanceResponse type BalancesResponse = lnclient.BalancesResponse -type NewOnchainAddressResponse struct { - Address string `json:"address"` -} - // debug api type SendPaymentProbesRequest struct { Invoice string `json:"invoice"` diff --git a/config/models.go b/config/models.go index 1d3ed0ca5..e5ccb5fb3 100644 --- a/config/models.go +++ b/config/models.go @@ -9,6 +9,10 @@ const ( CashuBackendType = "CASHU" ) +const ( + OnchainAddressKey = "OnchainAddress" +) + type AppConfig struct { Relay string `envconfig:"RELAY" default:"wss://relay.getalby.com/v1"` LNBackendType string `envconfig:"LN_BACKEND_TYPE"` @@ -21,7 +25,7 @@ type AppConfig struct { CookieSecret string `envconfig:"COOKIE_SECRET"` LogLevel string `envconfig:"LOG_LEVEL"` LDKNetwork string `envconfig:"LDK_NETWORK" default:"bitcoin"` - LDKEsploraServer string `envconfig:"LDK_ESPLORA_SERVER" default:"https://electrs.albylabs.com"` + LDKEsploraServer string `envconfig:"LDK_ESPLORA_SERVER" default:"https://electrs.albylabs.com"` // TODO: remove LDK prefix LDKGossipSource string `envconfig:"LDK_GOSSIP_SOURCE" default:"https://rapidsync.lightningdevkit.org/snapshot"` LDKLogLevel string `envconfig:"LDK_LOG_LEVEL"` MempoolApi string `envconfig:"MEMPOOL_API" default:"https://mempool.space/api"` diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 4b67ca7fd..7109d6de4 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -19,7 +19,7 @@ import AppStore from "src/screens/appstore/AppStore"; import Channels from "src/screens/channels/Channels"; import NewChannel from "src/screens/channels/NewChannel"; import MigrateAlbyFunds from "src/screens/onboarding/MigrateAlbyFunds"; -import NewOnchainAddress from "src/screens/onchain/NewAddress"; +import DepositBitcoin from "src/screens/onchain/DepositBitcoin"; import ConnectPeer from "src/screens/peers/ConnectPeer"; import Settings from "src/screens/settings/Settings"; import { ImportMnemonic } from "src/screens/setup/ImportMnemonic"; @@ -40,6 +40,7 @@ import { Intro } from "src/screens/Intro"; import AlbyAuthRedirect from "src/screens/alby/AlbyAuthRedirect"; import { CurrentChannelOrder } from "src/screens/channels/CurrentChannelOrder"; import { Success } from "src/screens/onboarding/Success"; +import BuyBitcoin from "src/screens/onchain/BuyBitcoin"; import Peers from "src/screens/peers/Peers"; import { ChangeUnlockPassword } from "src/screens/settings/ChangeUnlockPassword"; import DebugTools from "src/screens/settings/DebugTools"; @@ -99,9 +100,10 @@ function App() { } /> } /> } + path="onchain/deposit-bitcoin" + element={} /> + } /> }> } /> diff --git a/frontend/src/constants.ts b/frontend/src/constants.ts index 970c169a8..652db9aa9 100644 --- a/frontend/src/constants.ts +++ b/frontend/src/constants.ts @@ -1,6 +1,5 @@ export const localStorageKeys = { returnTo: "returnTo", - onchainAddress: "onchainAddress", channelOrder: "channelOrder", }; diff --git a/frontend/src/hooks/useOnchainAddress.ts b/frontend/src/hooks/useOnchainAddress.ts new file mode 100644 index 000000000..b85a7ef49 --- /dev/null +++ b/frontend/src/hooks/useOnchainAddress.ts @@ -0,0 +1,45 @@ +import useSWR from "swr"; + +import React from "react"; +import { useCSRF } from "src/hooks/useCSRF"; +import { request } from "src/utils/request"; +import { swrFetcher } from "src/utils/swr"; + +export function useOnchainAddress() { + const { data: csrf } = useCSRF(); + const swr = useSWR("/api/wallet/address", swrFetcher); + const [isLoading, setLoading] = React.useState(false); + + const getNewAddress = React.useCallback(async () => { + if (!csrf) { + return; + } + setLoading(true); + try { + const address = await request("/api/wallet/new-address", { + method: "POST", + headers: { + "X-CSRF-Token": csrf, + "Content-Type": "application/json", + }, + }); + if (!address) { + throw new Error("No address in response"); + } + swr.mutate(address, false); + } catch (error) { + alert("Failed to request a new address: " + error); + } finally { + setLoading(false); + } + }, [csrf, swr]); + + return React.useMemo( + () => ({ + ...swr, + getNewAddress, + loadingAddress: isLoading || !swr.data, + }), + [swr, getNewAddress, isLoading] + ); +} diff --git a/frontend/src/screens/channels/Channels.tsx b/frontend/src/screens/channels/Channels.tsx index e4fb97e94..ae6c40f52 100644 --- a/frontend/src/screens/channels/Channels.tsx +++ b/frontend/src/screens/channels/Channels.tsx @@ -238,8 +238,11 @@ export default function Channels() { - - On-Chain Address + + Deposit Bitcoin {(balances?.onchain.spendable || 0) > ONCHAIN_DUST_SATS && ( @@ -332,8 +335,11 @@ export default function Channels() { )}
- - + + + + + diff --git a/frontend/src/screens/channels/CurrentChannelOrder.tsx b/frontend/src/screens/channels/CurrentChannelOrder.tsx index 5169b6b2a..b99232d98 100644 --- a/frontend/src/screens/channels/CurrentChannelOrder.tsx +++ b/frontend/src/screens/channels/CurrentChannelOrder.tsx @@ -1,9 +1,7 @@ import React from "react"; -import { localStorageKeys } from "src/constants"; import { Channel, ConnectPeerRequest, - GetOnchainAddressResponse, NewChannelOrder, Node, OpenChannelRequest, @@ -14,6 +12,7 @@ import { Payment, init } from "@getalby/bitcoin-connect-react"; import { Copy, QrCode, RefreshCw } from "lucide-react"; import { Link } from "react-router-dom"; import AppHeader from "src/components/AppHeader"; +import ExternalLink from "src/components/ExternalLink"; import Loading from "src/components/Loading"; import QRCode from "src/components/QRCode"; import { Button } from "src/components/ui/button"; @@ -48,6 +47,7 @@ import { useBalances } from "src/hooks/useBalances"; import { useCSRF } from "src/hooks/useCSRF"; import { useChannels } from "src/hooks/useChannels"; import { useMempoolApi } from "src/hooks/useMempoolApi"; +import { useOnchainAddress } from "src/hooks/useOnchainAddress"; import { usePeers } from "src/hooks/usePeers"; import { useSyncWallet } from "src/hooks/useSyncWallet"; import { copyToClipboard } from "src/lib/clipboard"; @@ -205,56 +205,20 @@ function PayBitcoinChannelOrderTopup({ order }: { order: NewChannelOrder }) { } const { data: channels } = useChannels(); - const { data: csrf } = useCSRF(); + const { data: balances } = useBalances(); - const [onchainAddress, setOnchainAddress] = React.useState(); - const [isLoading, setLoading] = React.useState(false); + const { + data: onchainAddress, + getNewAddress, + loadingAddress, + } = useOnchainAddress(); + const { data: mempoolAddressUtxos } = useMempoolApi<{ value: number }[]>( onchainAddress ? `/address/${onchainAddress}/utxo` : undefined, true ); const estimatedTransactionFee = useEstimatedTransactionFee(); - const getNewAddress = React.useCallback(async () => { - if (!csrf) { - return; - } - setLoading(true); - try { - const response = await request( - "/api/wallet/new-address", - { - method: "POST", - headers: { - "X-CSRF-Token": csrf, - "Content-Type": "application/json", - }, - //body: JSON.stringify({}), - } - ); - if (!response?.address) { - throw new Error("No address in response"); - } - localStorage.setItem(localStorageKeys.onchainAddress, response.address); - setOnchainAddress(response.address); - } catch (error) { - alert("Failed to request a new address: " + error); - } finally { - setLoading(false); - } - }, [csrf]); - - React.useEffect(() => { - const existingAddress = localStorage.getItem( - localStorageKeys.onchainAddress - ); - if (existingAddress) { - setOnchainAddress(existingAddress); - return; - } - getNewAddress(); - }, [getNewAddress]); - if (!onchainAddress || !balances || !estimatedTransactionFee) { return (
@@ -282,6 +246,15 @@ function PayBitcoinChannelOrderTopup({ order }: { order: NewChannelOrder }) { 0 ); + const missingAmount = + +order.amount + + estimatedTransactionFee + + estimatedAnchorReserve - + balances.onchain.total; + + const recommendedAmount = Math.ceil(missingAmount / 10000) * 10000; + const topupLink = `https://getalby.com/topup?address=${onchainAddress}&receive_amount=${recommendedAmount}`; + return (
+

+ You currently have{" "} + {new Intl.NumberFormat().format(balances.onchain.total)} sats. We + recommend to deposit another{" "} + {new Intl.NumberFormat().format(recommendedAmount)} sats to open a + channel.{" "} +

- You currently have {balances.onchain.total} sats. You need to - deposit at least another{" "} - {+order.amount + - estimatedTransactionFee + - estimatedAnchorReserve - - balances.onchain.total}{" "} - sats to cover the cost of opening the channel, including onchain - fees and potential onchain channel reserves. + ~{new Intl.NumberFormat().format(+missingAmount)} sats are missing + to cover the cost of opening the channel, including onchain fees and + potential onchain channel reserves.

- + {!loadingAddress && } Generate a new address @@ -369,6 +345,12 @@ function PayBitcoinChannelOrderTopup({ order }: { order: NewChannelOrder }) { {unspentAmount} sats deposited )} + + + +
); diff --git a/frontend/src/screens/onchain/BuyBitcoin.tsx b/frontend/src/screens/onchain/BuyBitcoin.tsx new file mode 100644 index 000000000..b07baad14 --- /dev/null +++ b/frontend/src/screens/onchain/BuyBitcoin.tsx @@ -0,0 +1,251 @@ +import React from "react"; +import { Link } from "react-router-dom"; +import AppHeader from "src/components/AppHeader"; +import { + Breadcrumb, + BreadcrumbItem, + BreadcrumbLink, + BreadcrumbList, + BreadcrumbPage, + BreadcrumbSeparator, +} from "src/components/ui/breadcrumb"; +import { Input } from "src/components/ui/input"; +import { Label } from "src/components/ui/label"; +import { LoadingButton } from "src/components/ui/loading-button"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "src/components/ui/select"; +import { useOnchainAddress } from "src/hooks/useOnchainAddress"; +import { openLink } from "src/utils/openLink"; + +const SUPPORTED_CURRENCIES = [ + { + value: "usd", + label: "USD - US Dollar", + }, + { + value: "ars", + label: "ARS - Argentine Peso", + }, + { + value: "aud", + label: "AUD - Australian Dollar", + }, + { + value: "bgn", + label: "BGN - Bulgarian Lev", + }, + { + value: "brl", + label: "BRL - Brazilian Real", + }, + { + value: "cad", + label: "CAD - Canadian Dollar", + }, + { + value: "chf", + label: "CHF - Swiss Franc", + }, + { + value: "cop", + label: "COP - Colombian Peso", + }, + { + value: "czk", + label: "CZK - Czech Koruna", + }, + { + value: "dkk", + label: "DKK - Danish Krone", + }, + { + value: "dop", + label: "DOP - Dominican Peso", + }, + { + value: "egp", + label: "EGP - Egyptian Pound", + }, + { + value: "eur", + label: "EUR - Euro", + }, + { + value: "gbp", + label: "GBP - Pound Sterling", + }, + { + value: "hkd", + label: "HKD - Hong Kong Dollar", + }, + { + value: "idr", + label: "IDR - Indonesian Rupiah", + }, + { + value: "ils", + label: "ILS - Israeli New Shekel", + }, + { + value: "jod", + label: "JOD - Jordanian Dollar", + }, + { + value: "kes", + label: "KES - Kenyan Shilling", + }, + { + value: "kwd", + label: "KWD - Kuwaiti Dinar", + }, + { + value: "lkr", + label: "LKR - Sri Lankan Rupee", + }, + { + value: "mxn", + label: "MXN - Mexican Peso", + }, + { + value: "ngn", + label: "NGN - Nigerian Naira", + }, + { + value: "nok", + label: "NOK - Norwegian Krone", + }, + { + value: "nzd", + label: "NZD - New Zealand Dollar", + }, + { + value: "omr", + label: "OMR - Omani Rial", + }, + { + value: "pen", + label: "PEN - Peruvian Sol", + }, + { + value: "pln", + label: "PLN - Polish Złoty", + }, + { + value: "ron", + label: "RON - Romanian Leu", + }, + { + value: "sek", + label: "SEK - Swedish Krona", + }, + { + value: "thb", + label: "THB - Thai Baht", + }, + { + value: "try", + label: "TRY - Turkish Lira", + }, + { + value: "twd", + label: "TWD - Taiwan Dollar", + }, + { + value: "vnd", + label: "VND - Vietnamese Dong", + }, + { + value: "zar", + label: "ZAR - South African Rand", + }, +]; + +export default function BuyBitcoin() { + const [currency, setCurrency] = React.useState("usd"); + const [amount, setAmount] = React.useState("250"); + const { data: onchainAddress } = useOnchainAddress(); + + async function launch() { + const url = `https://getalby.com/topup?address=${onchainAddress}&amount=${amount}¤cy=${currency}`; + openLink(url); + } + + return ( +
+ + + + + Liquidity + + + + + + + Deposit Bitcoin + + + + + + Buy Bitcoin + + + + +
+
+
+

+ How much bitcoin you’d like buy? +

+
+ + setAmount(e.target.value)} + value={amount} + type="text" + placeholder="amount" + /> +
+ +
+ + +
+ + + Next + +
+
+
+
+ ); +} diff --git a/frontend/src/screens/onchain/DepositBitcoin.tsx b/frontend/src/screens/onchain/DepositBitcoin.tsx new file mode 100644 index 000000000..480936671 --- /dev/null +++ b/frontend/src/screens/onchain/DepositBitcoin.tsx @@ -0,0 +1,111 @@ +import { Copy, CreditCard, RefreshCw } from "lucide-react"; +import QRCode from "react-qr-code"; +import { Link } from "react-router-dom"; +import AppHeader from "src/components/AppHeader"; +import Loading from "src/components/Loading"; +import { + Breadcrumb, + BreadcrumbItem, + BreadcrumbLink, + BreadcrumbList, + BreadcrumbPage, + BreadcrumbSeparator, +} from "src/components/ui/breadcrumb"; +import { Button } from "src/components/ui/button"; +import { Card, CardContent } from "src/components/ui/card"; +import { LoadingButton } from "src/components/ui/loading-button"; +import { toast } from "src/components/ui/use-toast"; +import { useOnchainAddress } from "src/hooks/useOnchainAddress"; +import { copyToClipboard } from "src/lib/clipboard"; + +export default function DepositBitcoin() { + const { + data: onchainAddress, + getNewAddress, + loadingAddress, + } = useOnchainAddress(); + + if (!onchainAddress) { + return ( +
+ +
+ ); + } + + return ( +
+ ); +} diff --git a/frontend/src/screens/onchain/NewAddress.tsx b/frontend/src/screens/onchain/NewAddress.tsx deleted file mode 100644 index f1875d5f1..000000000 --- a/frontend/src/screens/onchain/NewAddress.tsx +++ /dev/null @@ -1,173 +0,0 @@ -import { - Tooltip, - TooltipContent, - TooltipProvider, - TooltipTrigger, -} from "@radix-ui/react-tooltip"; -import { Copy, QrCode, RefreshCw } from "lucide-react"; -import React from "react"; -import QRCode from "react-qr-code"; -import { Link } from "react-router-dom"; -import AppHeader from "src/components/AppHeader"; -import Loading from "src/components/Loading"; -import { - Breadcrumb, - BreadcrumbItem, - BreadcrumbLink, - BreadcrumbList, - BreadcrumbPage, - BreadcrumbSeparator, -} from "src/components/ui/breadcrumb"; -import { Button } from "src/components/ui/button"; -import { - Dialog, - DialogContent, - DialogDescription, - DialogHeader, - DialogTitle, - DialogTrigger, -} from "src/components/ui/dialog"; -import { Input } from "src/components/ui/input"; -import { Label } from "src/components/ui/label"; -import { LoadingButton } from "src/components/ui/loading-button"; -import { localStorageKeys } from "src/constants"; -import { useCSRF } from "src/hooks/useCSRF"; -import { copyToClipboard } from "src/lib/clipboard"; -import { GetOnchainAddressResponse } from "src/types"; -import { request } from "src/utils/request"; - -export default function NewOnchainAddress() { - const { data: csrf } = useCSRF(); - const [onchainAddress, setOnchainAddress] = React.useState(); - const [isLoading, setLoading] = React.useState(false); - - const getNewAddress = React.useCallback(async () => { - if (!csrf) { - return; - } - setLoading(true); - try { - const response = await request( - "/api/wallet/new-address", - { - method: "POST", - headers: { - "X-CSRF-Token": csrf, - "Content-Type": "application/json", - }, - //body: JSON.stringify({}), - } - ); - if (!response?.address) { - throw new Error("No address in response"); - } - localStorage.setItem(localStorageKeys.onchainAddress, response.address); - setOnchainAddress(response.address); - } catch (error) { - alert("Failed to request a new address: " + error); - } finally { - setLoading(false); - } - }, [csrf]); - - React.useEffect(() => { - const existingAddress = localStorage.getItem( - localStorageKeys.onchainAddress - ); - if (existingAddress) { - setOnchainAddress(existingAddress); - return; - } - getNewAddress(); - }, [getNewAddress]); - - if (!onchainAddress) { - return ( -
- -
- ); - } - - return ( -
- ); -} diff --git a/frontend/src/types.ts b/frontend/src/types.ts index b5cd2371c..987646c47 100644 --- a/frontend/src/types.ts +++ b/frontend/src/types.ts @@ -215,10 +215,6 @@ export type OpenChannelResponse = { // eslint-disable-next-line @typescript-eslint/ban-types export type CloseChannelResponse = {}; -export type GetOnchainAddressResponse = { - address: string; -}; - export type OnchainBalanceResponse = { spendable: number; total: number; diff --git a/http/http_service.go b/http/http_service.go index e32b7d821..905d3dbeb 100644 --- a/http/http_service.go +++ b/http/http_service.go @@ -41,7 +41,6 @@ const ( ) func NewHttpService(svc service.Service, logger *logrus.Logger, db *gorm.DB, eventPublisher events.EventPublisher) *HttpService { - return &HttpService{ api: api.NewAPI(svc, logger, db), albyHttpSvc: alby.NewAlbyHttpService(svc.GetAlbyOAuthSvc(), logger, svc.GetConfig().GetEnv()), @@ -104,6 +103,7 @@ func (httpSvc *HttpService) RegisterSharedRoutes(e *echo.Echo) { e.POST("/api/peers", httpSvc.connectPeerHandler, authMiddleware) e.DELETE("/api/peers/:peerId", httpSvc.disconnectPeerHandler, authMiddleware) e.DELETE("/api/peers/:peerId/channels/:channelId", httpSvc.closeChannelHandler, authMiddleware) + e.GET("/api/wallet/address", httpSvc.onchainAddressHandler, authMiddleware) e.POST("/api/wallet/new-address", httpSvc.newOnchainAddressHandler, authMiddleware) e.POST("/api/wallet/redeem-onchain-funds", httpSvc.redeemOnchainFundsHandler, authMiddleware) e.POST("/api/wallet/sign-message", httpSvc.signMessageHandler, authMiddleware) @@ -522,10 +522,24 @@ func (httpSvc *HttpService) newInstantChannelInvoiceHandler(c echo.Context) erro return c.JSON(http.StatusOK, newWrappedInvoiceResponse) } +func (httpSvc *HttpService) onchainAddressHandler(c echo.Context) error { + ctx := c.Request().Context() + + address, err := httpSvc.api.GetUnusedOnchainAddress(ctx) + + if err != nil { + return c.JSON(http.StatusInternalServerError, ErrorResponse{ + Message: fmt.Sprintf("Failed to request new onchain address: %s", err.Error()), + }) + } + + return c.JSON(http.StatusOK, address) +} + func (httpSvc *HttpService) newOnchainAddressHandler(c echo.Context) error { ctx := c.Request().Context() - newAddressResponse, err := httpSvc.api.GetNewOnchainAddress(ctx) + address, err := httpSvc.api.GetNewOnchainAddress(ctx) if err != nil { return c.JSON(http.StatusInternalServerError, ErrorResponse{ @@ -533,7 +547,7 @@ func (httpSvc *HttpService) newOnchainAddressHandler(c echo.Context) error { }) } - return c.JSON(http.StatusOK, newAddressResponse) + return c.JSON(http.StatusOK, address) } func (httpSvc *HttpService) redeemOnchainFundsHandler(c echo.Context) error { diff --git a/wails_handlers.go b/wails_handlers.go index 4fce710bb..7829498c3 100644 --- a/wails_handlers.go +++ b/wails_handlers.go @@ -300,12 +300,18 @@ func (app *WailsApp) WailsRequestRouter(route string, method string, body string case "/api/wallet/sync": app.api.SyncWallet() return WailsRequestRouterResponse{Body: nil, Error: ""} + case "/api/wallet/address": + address, err := app.api.GetUnusedOnchainAddress(ctx) + if err != nil { + return WailsRequestRouterResponse{Body: nil, Error: err.Error()} + } + return WailsRequestRouterResponse{Body: address, Error: ""} case "/api/wallet/new-address": - newAddressResponse, err := app.api.GetNewOnchainAddress(ctx) + newAddress, err := app.api.GetNewOnchainAddress(ctx) if err != nil { return WailsRequestRouterResponse{Body: nil, Error: err.Error()} } - return WailsRequestRouterResponse{Body: *newAddressResponse, Error: ""} + return WailsRequestRouterResponse{Body: newAddress, Error: ""} case "/api/wallet/redeem-onchain-funds": redeemOnchainFundsRequest := &api.RedeemOnchainFundsRequest{} From 08359976f7bccc4a93104e02bf8d996b848dc8e6 Mon Sep 17 00:00:00 2001 From: Roland <33993199+rolznz@users.noreply.github.com> Date: Tue, 11 Jun 2024 14:57:08 +0700 Subject: [PATCH 06/36] feat: add megalith LSP (#419) --- lnclient/ldk/ldk.go | 13 ++++++++++--- lsp/lsp_service.go | 10 +++++++--- lsp/models.go | 18 ++++++++++++++++++ 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/lnclient/ldk/ldk.go b/lnclient/ldk/ldk.go index 6056f2ca7..b959c3fe5 100644 --- a/lnclient/ldk/ldk.go +++ b/lnclient/ldk/ldk.go @@ -68,17 +68,24 @@ func NewLDKService(ctx context.Context, logger *logrus.Logger, cfg config.Config lsp.VoltageLSP().Pubkey, lsp.OlympusLSP().Pubkey, lsp.AlbyPlebsLSP().Pubkey, + lsp.MegalithLSP().Pubkey, + + // Mutinynet lsp.AlbyMutinynetPlebsLSP().Pubkey, lsp.OlympusMutinynetFlowLSP().Pubkey, + lsp.MegalithMutinynetLSP().Pubkey, } config.AnchorChannelsConfig.TrustedPeersNoReserve = []string{ lsp.VoltageLSP().Pubkey, lsp.OlympusLSP().Pubkey, - lsp.OlympusMutinynetLSPS1LSP().Pubkey, - lsp.OlympusMutinynetFlowLSP().Pubkey, lsp.AlbyPlebsLSP().Pubkey, - lsp.AlbyMutinynetPlebsLSP().Pubkey, + lsp.MegalithLSP().Pubkey, "0296b2db342fcf87ea94d981757fdf4d3e545bd5cef4919f58b5d38dfdd73bf5c9", // blocktank + + // Mutinynet + lsp.AlbyMutinynetPlebsLSP().Pubkey, + lsp.OlympusMutinynetFlowLSP().Pubkey, + lsp.MegalithMutinynetLSP().Pubkey, } config.ListeningAddresses = &listeningAddresses diff --git a/lsp/lsp_service.go b/lsp/lsp_service.go index 197ba2921..c33b5fbd2 100644 --- a/lsp/lsp_service.go +++ b/lsp/lsp_service.go @@ -51,6 +51,10 @@ func (ls *lspService) NewInstantChannelInvoice(ctx context.Context, request *New selectedLsp = AlbyPlebsLSP() case "ALBY_MUTINYNET": selectedLsp = AlbyMutinynetPlebsLSP() + case "MEGALITH": + selectedLsp = MegalithLSP() + case "MEGALITH_MUTINYNET": + selectedLsp = MegalithMutinynetLSP() default: return nil, errors.New("unknown LSP") } @@ -591,8 +595,8 @@ func (ls *lspService) requestLSPS1Invoice(ctx context.Context, selectedLsp *LSP, } type NewLSPS1ChannelPayment struct { - LightningInvoice string `json:"lightning_invoice"` - FeeTotalSat string `json:"fee_total_sat"` + Bolt11Invoice string `json:"bolt11_invoice"` + FeeTotalSat string `json:"fee_total_sat"` } type NewLSPS1ChannelResponse struct { Payment NewLSPS1ChannelPayment `json:"payment"` @@ -608,7 +612,7 @@ func (ls *lspService) requestLSPS1Invoice(ctx context.Context, selectedLsp *LSP, return "", 0, fmt.Errorf("failed to deserialize json %s %s", selectedLsp.Url, string(body)) } - invoice = newChannelResponse.Payment.LightningInvoice + invoice = newChannelResponse.Payment.Bolt11Invoice fee, err = strconv.ParseUint(newChannelResponse.Payment.FeeTotalSat, 10, 64) if err != nil { ls.logger.WithError(err).WithFields(logrus.Fields{ diff --git a/lsp/models.go b/lsp/models.go index 0dc0ae10d..6994ed51b 100644 --- a/lsp/models.go +++ b/lsp/models.go @@ -74,6 +74,24 @@ func AlbyMutinynetPlebsLSP() LSP { return lsp } +func MegalithMutinynetLSP() LSP { + lsp := LSP{ + Pubkey: "03e30fda71887a916ef5548a4d02b06fe04aaa1a8de9e24134ce7f139cf79d7579", + Url: "https://lsp1.mutiny.megalith-node.com/api/lsps1/v1", + LspType: LSP_TYPE_LSPS1, + } + return lsp +} + +func MegalithLSP() LSP { + lsp := LSP{ + Pubkey: "038a9e56512ec98da2b5789761f7af8f280baf98a09282360cd6ff1381b5e889bf", + Url: "https://megalithic.me/api/lsps1/v1", + LspType: LSP_TYPE_LSPS1, + } + return lsp +} + type LSPService interface { NewInstantChannelInvoice(ctx context.Context, request *NewInstantChannelInvoiceRequest) (*NewInstantChannelInvoiceResponse, error) } From 1cb76328c84707856877750922bf2414073ef559 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Aaron?= Date: Tue, 11 Jun 2024 15:06:08 +0200 Subject: [PATCH 07/36] fix: dropdown image size --- frontend/src/screens/channels/NewChannel.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/screens/channels/NewChannel.tsx b/frontend/src/screens/channels/NewChannel.tsx index 98b74c313..9bde23603 100644 --- a/frontend/src/screens/channels/NewChannel.tsx +++ b/frontend/src/screens/channels/NewChannel.tsx @@ -257,12 +257,12 @@ function NewChannelInternal({ network }: { network: Network }) { value={getPeerKey(peer)} key={getPeerKey(peer)} > -
+
{peer.name !== "Custom" && ( )}
From 7ed71e4ad764fb59ca4d04f9a5c1cd283fd84c50 Mon Sep 17 00:00:00 2001 From: Roland <33993199+rolznz@users.noreply.github.com> Date: Tue, 11 Jun 2024 21:48:12 +0700 Subject: [PATCH 08/36] feat: support public channels for lsps1 (#428) --- .../screens/channels/CurrentChannelOrder.tsx | 14 +++-- frontend/src/screens/channels/NewChannel.tsx | 58 ++++++++++--------- .../screens/onboarding/MigrateAlbyFunds.tsx | 12 ++-- frontend/src/types.ts | 1 + lsp/lsp_service.go | 10 +++- lsp/models.go | 1 + 6 files changed, 54 insertions(+), 42 deletions(-) diff --git a/frontend/src/screens/channels/CurrentChannelOrder.tsx b/frontend/src/screens/channels/CurrentChannelOrder.tsx index b99232d98..c6f20a7b2 100644 --- a/frontend/src/screens/channels/CurrentChannelOrder.tsx +++ b/frontend/src/screens/channels/CurrentChannelOrder.tsx @@ -568,10 +568,12 @@ function PayLightningChannelOrder({ order }: { order: NewChannelOrder }) { if (!order.lsp) { throw new Error("no lsp selected"); } - const newJITChannelRequest: NewInstantChannelInvoiceRequest = { - lsp: order.lsp, - amount: parseInt(order.amount), - }; + const newInstantChannelInvoiceRequest: NewInstantChannelInvoiceRequest = + { + lsp: order.lsp, + amount: parseInt(order.amount), + public: order.isPublic, + }; const response = await request( "/api/instant-channel-invoices", { @@ -580,7 +582,7 @@ function PayLightningChannelOrder({ order }: { order: NewChannelOrder }) { "X-CSRF-Token": csrf, "Content-Type": "application/json", }, - body: JSON.stringify(newJITChannelRequest), + body: JSON.stringify(newInstantChannelInvoiceRequest), } ); if (!response?.invoice) { @@ -594,7 +596,7 @@ function PayLightningChannelOrder({ order }: { order: NewChannelOrder }) { } return true; }); - }, [channels, csrf, order.amount, order.lsp]); + }, [channels, csrf, order.amount, order.isPublic, order.lsp]); return (
diff --git a/frontend/src/screens/channels/NewChannel.tsx b/frontend/src/screens/channels/NewChannel.tsx index 9bde23603..858267b27 100644 --- a/frontend/src/screens/channels/NewChannel.tsx +++ b/frontend/src/screens/channels/NewChannel.tsx @@ -52,6 +52,7 @@ export default function NewChannel() { function NewChannelInternal({ network }: { network: Network }) { const { data: channelPeerSuggestions } = useChannelPeerSuggestions(); + const navigate = useNavigate(); const [order, setOrder] = React.useState>({ @@ -64,10 +65,17 @@ function NewChannelInternal({ network }: { network: Network }) { >(); function setPaymentMethod(paymentMethod: "onchain" | "lightning") { - setOrder({ - ...order, + setOrder((current) => ({ + ...current, paymentMethod, - }); + })); + } + + function setPublic(isPublic: boolean) { + setOrder((current) => ({ + ...current, + isPublic, + })); } const setAmount = React.useCallback((amount: string) => { @@ -301,6 +309,24 @@ function NewChannelInternal({ network }: { network: Network }) { {order.paymentMethod === "lightning" && ( )} + +
+ setPublic(!order.isPublic)} + className="mr-2" + /> +
+ +

+ Enable if you want to receive keysend payments. (e.g. podcasting) +

+
+
+ @@ -332,7 +358,7 @@ function NewChannelOnchain(props: NewChannelOnchainProps) { if (props.order.paymentMethod !== "onchain") { throw new Error("unexpected payment method"); } - const { pubkey, host, isPublic } = props.order; + const { pubkey, host } = props.order; const { setOrder } = props; const isAlreadyPeered = pubkey && peers?.some((peer) => peer.nodeId === pubkey); @@ -354,13 +380,6 @@ function NewChannelOnchain(props: NewChannelOnchainProps) { }, [setOrder] ); - function setPublic(isPublic: boolean) { - props.setOrder((current) => ({ - ...current, - paymentMethod: "onchain", - isPublic, - })); - } const fetchNodeDetails = React.useCallback(async () => { if (!pubkey) { @@ -437,23 +456,6 @@ function NewChannelOnchain(props: NewChannelOnchainProps) { )} )} - -
- setPublic(!isPublic)} - className="mr-2" - /> -
- -

- Enable if you want to receive keysend payments. (e.g. podcasting) -

-
-
); diff --git a/frontend/src/screens/onboarding/MigrateAlbyFunds.tsx b/frontend/src/screens/onboarding/MigrateAlbyFunds.tsx index c2aebb8fa..5f5c9948b 100644 --- a/frontend/src/screens/onboarding/MigrateAlbyFunds.tsx +++ b/frontend/src/screens/onboarding/MigrateAlbyFunds.tsx @@ -51,10 +51,12 @@ export default function MigrateAlbyFunds() { if (!csrf) { throw new Error("csrf not loaded"); } - const newJITChannelRequest: NewInstantChannelInvoiceRequest = { - lsp: "ALBY", - amount, - }; + const newInstantChannelInvoiceRequest: NewInstantChannelInvoiceRequest = + { + lsp: "ALBY", + amount, + public: false, + }; const response = await request( "/api/instant-channel-invoices", { @@ -63,7 +65,7 @@ export default function MigrateAlbyFunds() { "X-CSRF-Token": csrf, "Content-Type": "application/json", }, - body: JSON.stringify(newJITChannelRequest), + body: JSON.stringify(newInstantChannelInvoiceRequest), } ); if (!response?.invoice) { diff --git a/frontend/src/types.ts b/frontend/src/types.ts index 987646c47..e3dec5edd 100644 --- a/frontend/src/types.ts +++ b/frontend/src/types.ts @@ -281,6 +281,7 @@ export type AlbyBalance = { export type NewInstantChannelInvoiceRequest = { amount: number; lsp: string; + public: boolean; }; export type NewInstantChannelInvoiceResponse = { diff --git a/lsp/lsp_service.go b/lsp/lsp_service.go index c33b5fbd2..fd57af0d2 100644 --- a/lsp/lsp_service.go +++ b/lsp/lsp_service.go @@ -63,6 +63,10 @@ func (ls *lspService) NewInstantChannelInvoice(ctx context.Context, request *New return nil, errors.New("LNClient not started") } + if selectedLsp.LspType != LSP_TYPE_LSPS1 && request.Public { + return nil, errors.New("This LSP option does not support public channels") + } + ls.logger.Infoln("Requesting LSP info") var lspInfo *lspConnectionInfo @@ -116,7 +120,7 @@ func (ls *lspService) NewInstantChannelInvoice(ctx context.Context, request *New case LSP_TYPE_PMLSP: invoice, fee, err = ls.requestPMLSPInvoice(&selectedLsp, request.Amount, nodeInfo.Pubkey) case LSP_TYPE_LSPS1: - invoice, fee, err = ls.requestLSPS1Invoice(ctx, &selectedLsp, request.Amount, nodeInfo.Pubkey) + invoice, fee, err = ls.requestLSPS1Invoice(ctx, &selectedLsp, request.Amount, nodeInfo.Pubkey, request.Public) default: return nil, fmt.Errorf("unsupported LSP type: %v", selectedLsp.LspType) @@ -516,7 +520,7 @@ func (ls *lspService) requestPMLSPInvoice(selectedLsp *LSP, amount uint64, pubke return invoice, fee, nil } -func (ls *lspService) requestLSPS1Invoice(ctx context.Context, selectedLsp *LSP, amount uint64, pubkey string) (invoice string, fee uint64, err error) { +func (ls *lspService) requestLSPS1Invoice(ctx context.Context, selectedLsp *LSP, amount uint64, pubkey string, public bool) (invoice string, fee uint64, err error) { client := http.Client{ Timeout: time.Second * 10, } @@ -548,7 +552,7 @@ func (ls *lspService) requestLSPS1Invoice(ctx context.Context, selectedLsp *LSP, ChannelExpiryBlocks: 13000, // TODO: this should be customizable Token: "", RefundOnchainAddress: refundAddress, - AnnounceChannel: false, // TODO: this should be customizable + AnnounceChannel: public, } payloadBytes, err := json.Marshal(newLSPS1ChannelRequest) diff --git a/lsp/models.go b/lsp/models.go index 6994ed51b..a7713c0b2 100644 --- a/lsp/models.go +++ b/lsp/models.go @@ -99,6 +99,7 @@ type LSPService interface { type NewInstantChannelInvoiceRequest struct { Amount uint64 `json:"amount"` LSP string `json:"lsp"` + Public bool `json:"public"` } type NewInstantChannelInvoiceResponse struct { From 2d9ec786241328bde57443760d0ae66ebc52a522 Mon Sep 17 00:00:00 2001 From: Roland Bewick Date: Tue, 11 Jun 2024 21:57:41 +0700 Subject: [PATCH 09/36] fix: do not show sidebar hints on settings page --- frontend/src/components/SidebarHint.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/SidebarHint.tsx b/frontend/src/components/SidebarHint.tsx index 24388e2d1..c5fbc3dcf 100644 --- a/frontend/src/components/SidebarHint.tsx +++ b/frontend/src/components/SidebarHint.tsx @@ -25,10 +25,11 @@ function SidebarHint() { const location = useLocation(); const { data: nodeConnectionInfo } = useNodeConnectionInfo(); - // Don't distract with hints while opening a channel + // Don't distract with hints while opening a channel or on the settings page if ( location.pathname.endsWith("/channels/order") || - location.pathname.endsWith("/channels/new") + location.pathname.endsWith("/channels/new") || + location.pathname.startsWith("/settings") ) { return null; } From 5890bbc14a9bbe801d39eb7e347ba6b186c5add9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Aaron?= Date: Tue, 11 Jun 2024 21:55:46 +0200 Subject: [PATCH 10/36] fix: use external link component --- frontend/src/screens/wallet/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/screens/wallet/index.tsx b/frontend/src/screens/wallet/index.tsx index e057a16f6..5feabf709 100644 --- a/frontend/src/screens/wallet/index.tsx +++ b/frontend/src/screens/wallet/index.tsx @@ -40,7 +40,7 @@ function Wallet() {
- +
@@ -67,7 +67,7 @@ function Wallet() { - + {!extensionInstalled && ( From 672d704f847f3248be8880c63dc1ee59b8a98e12 Mon Sep 17 00:00:00 2001 From: Michael Bumann Date: Tue, 11 Jun 2024 22:51:52 +0200 Subject: [PATCH 11/36] fix: correct phoenixd config key --- api/api.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/api.go b/api/api.go index 84ee3da0e..afcfb9656 100644 --- a/api/api.go +++ b/api/api.go @@ -600,7 +600,7 @@ func (api *api) Setup(ctx context.Context, setupRequest *SetupRequest) error { } if setupRequest.PhoenixdAddress != "" { - api.svc.GetConfig().SetUpdate("PhoenixAddress", setupRequest.PhoenixdAddress, setupRequest.UnlockPassword) + api.svc.GetConfig().SetUpdate("PhoenixdAddress", setupRequest.PhoenixdAddress, setupRequest.UnlockPassword) } if setupRequest.PhoenixdAuthorization != "" { api.svc.GetConfig().SetUpdate("PhoenixdAuthorization", setupRequest.PhoenixdAuthorization, setupRequest.UnlockPassword) From a94bd8a621cdc6edbc9a00e25a1ead2f6b1c3e71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Aaron?= Date: Tue, 11 Jun 2024 23:22:33 +0200 Subject: [PATCH 12/36] fix: external links on wallet page --- frontend/src/screens/wallet/index.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/src/screens/wallet/index.tsx b/frontend/src/screens/wallet/index.tsx index 5feabf709..ab50448e1 100644 --- a/frontend/src/screens/wallet/index.tsx +++ b/frontend/src/screens/wallet/index.tsx @@ -1,8 +1,8 @@ -import { ExternalLink } from "lucide-react"; -import { Link } from "react-router-dom"; +import { ExternalLinkIcon } from "lucide-react"; import AlbyHead from "src/assets/images/alby-head.svg"; import AppHeader from "src/components/AppHeader"; import BreezRedeem from "src/components/BreezRedeem"; +import ExternalLink from "src/components/ExternalLink"; import Loading from "src/components/Loading"; import { Button } from "src/components/ui/button"; import { @@ -63,13 +63,13 @@ function Wallet() { {!extensionInstalled && ( - +
@@ -93,11 +93,11 @@ function Wallet() { - + )}
From ef80548ef0b7f59fb66d55a83496e57ca437ae8c Mon Sep 17 00:00:00 2001 From: Michael Bumann Date: Tue, 11 Jun 2024 23:52:11 +0200 Subject: [PATCH 13/36] fix: no phoenixd address default value this is now configurable in the UI and otherwise we would always overwrite the data provided from the UI. --- config/models.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/models.go b/config/models.go index e5ccb5fb3..dd397b658 100644 --- a/config/models.go +++ b/config/models.go @@ -36,7 +36,7 @@ type AppConfig struct { BaseUrl string `envconfig:"BASE_URL" default:"http://localhost:8080"` FrontendUrl string `envconfig:"FRONTEND_URL"` LogEvents bool `envconfig:"LOG_EVENTS" default:"false"` - PhoenixdAddress string `envconfig:"PHOENIXD_ADDRESS" default:"http://127.0.0.1:9740"` + PhoenixdAddress string `envconfig:"PHOENIXD_ADDRESS"` PhoenixdAuthorization string `envconfig:"PHOENIXD_AUTHORIZATION"` GoProfilerAddr string `envconfig:"GO_PROFILER_ADDR"` DdProfilerEnabled bool `envconfig:"DD_PROFILER_ENABLED" default:"false"` From b41eeb22e936355310a5a3cdee8dd1b67a00496f Mon Sep 17 00:00:00 2001 From: Michael Bumann Date: Wed, 12 Jun 2024 00:59:54 +0200 Subject: [PATCH 14/36] chore: do not count phoenix fee balance as balance it is not spendable and thus we should not count it as balance --- lnclient/phoenixd/phoenixd.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lnclient/phoenixd/phoenixd.go b/lnclient/phoenixd/phoenixd.go index 340145900..49ac69dec 100644 --- a/lnclient/phoenixd/phoenixd.go +++ b/lnclient/phoenixd/phoenixd.go @@ -95,8 +95,7 @@ func (svc *PhoenixService) GetBalance(ctx context.Context) (balance int64, err e return 0, err } - balance = balanceRes.BalanceSat + balanceRes.FeeCreditSat - return balance * 1000, nil + return balanceRes.BalanceSat * 1000, nil } func (svc *PhoenixService) GetBalances(ctx context.Context) (*lnclient.BalancesResponse, error) { From 9a8bb490b49b003ba97ea4d2a93835e0f7a54c21 Mon Sep 17 00:00:00 2001 From: Roland Bewick Date: Wed, 12 Jun 2024 11:45:01 +0700 Subject: [PATCH 15/36] fix: also include funding txo vout in channel backup info --- events/models.go | 11 ++++++----- lnclient/ldk/ldk.go | 17 ++++++++++------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/events/models.go b/events/models.go index 315b1917f..bd4987968 100644 --- a/events/models.go +++ b/events/models.go @@ -29,9 +29,10 @@ type ChannelBackupEvent struct { } type ChannelBackupInfo struct { - ChannelID string `json:"channel_id"` - NodeID string `json:"node_id"` - PeerID string `json:"peer_id"` - ChannelSize uint64 `json:"channel_size"` - FundingTxID string `json:"funding_tx_id"` + ChannelID string `json:"channel_id"` + NodeID string `json:"node_id"` + PeerID string `json:"peer_id"` + ChannelSize uint64 `json:"channel_size"` + FundingTxID string `json:"funding_tx_id"` + FundingTxVout uint32 `json:"funding_tx_vout"` } diff --git a/lnclient/ldk/ldk.go b/lnclient/ldk/ldk.go index b959c3fe5..ba512188e 100644 --- a/lnclient/ldk/ldk.go +++ b/lnclient/ldk/ldk.go @@ -1184,17 +1184,20 @@ func (ls *LDKService) publishChannelsBackupEvent() { ldkChannels := ls.node.ListChannels() channels := make([]events.ChannelBackupInfo, 0, len(ldkChannels)) for _, ldkChannel := range ldkChannels { - var fundingTx string + var fundingTxId string + var fundingTxVout uint32 if ldkChannel.FundingTxo != nil { - fundingTx = ldkChannel.FundingTxo.Txid + fundingTxId = ldkChannel.FundingTxo.Txid + fundingTxVout = ldkChannel.FundingTxo.Vout } channels = append(channels, events.ChannelBackupInfo{ - ChannelID: ldkChannel.ChannelId, - NodeID: ls.node.NodeId(), - PeerID: ldkChannel.CounterpartyNodeId, - ChannelSize: ldkChannel.ChannelValueSats, - FundingTxID: fundingTx, + ChannelID: ldkChannel.ChannelId, + NodeID: ls.node.NodeId(), + PeerID: ldkChannel.CounterpartyNodeId, + ChannelSize: ldkChannel.ChannelValueSats, + FundingTxID: fundingTxId, + FundingTxVout: fundingTxVout, }) } From b775c40dc5439053a540bc9ba4cfbc49ec8367d6 Mon Sep 17 00:00:00 2001 From: Pavan Joshi <55848322+pavanjoshi914@users.noreply.github.com> Date: Wed, 12 Jun 2024 11:30:17 +0530 Subject: [PATCH 16/36] fix: linting errors + migrate to new config system (#415) --- frontend/.eslintignore | 2 - frontend/.eslintrc.cjs | 29 --- frontend/eslint.config.mjs | 83 ++++++++ frontend/lint-staged.config.js | 5 +- frontend/package.json | 10 +- .../components/redirects/SetupRedirect.tsx | 2 +- frontend/src/components/ui/badge.tsx | 1 + frontend/src/components/ui/button.tsx | 3 +- .../src/components/ui/navigation-menu.tsx | 12 +- frontend/src/components/ui/theme-provider.tsx | 4 +- frontend/src/components/ui/use-toast.ts | 6 +- frontend/src/hooks/useRedeemOnchainFunds.ts | 2 +- frontend/src/screens/peers/ConnectPeer.tsx | 2 +- frontend/src/screens/peers/Peers.tsx | 2 +- frontend/src/screens/settings/DebugTools.tsx | 11 +- frontend/src/utils/handleRequestError.ts | 10 +- frontend/yarn.lock | 194 +++++++++--------- 17 files changed, 225 insertions(+), 153 deletions(-) delete mode 100644 frontend/.eslintignore delete mode 100644 frontend/.eslintrc.cjs create mode 100644 frontend/eslint.config.mjs diff --git a/frontend/.eslintignore b/frontend/.eslintignore deleted file mode 100644 index 76add878f..000000000 --- a/frontend/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -dist \ No newline at end of file diff --git a/frontend/.eslintrc.cjs b/frontend/.eslintrc.cjs deleted file mode 100644 index 05ceb4551..000000000 --- a/frontend/.eslintrc.cjs +++ /dev/null @@ -1,29 +0,0 @@ -module.exports = { - root: true, - env: { browser: true, es2020: true }, - extends: [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:react-hooks/recommended", - "prettier", - ], - ignorePatterns: ["dist", ".eslintrc.cjs"], - parser: "@typescript-eslint/parser", - plugins: ["react-refresh", "@typescript-eslint"], - rules: { - "react-refresh/only-export-components": [ - "warn", - { allowConstantExport: true }, - ], - "@typescript-eslint/ban-ts-comment": [ - "error", - { - "ts-ignore": "allow-with-description", - }, - ], - "@typescript-eslint/no-unused-vars": ["warn", { args: "none" }], - "no-console": ["error", { allow: ["info", "warn", "error"] }], - "no-constant-binary-expression": "error", - curly: "error", - }, -}; diff --git a/frontend/eslint.config.mjs b/frontend/eslint.config.mjs new file mode 100644 index 000000000..11d0af740 --- /dev/null +++ b/frontend/eslint.config.mjs @@ -0,0 +1,83 @@ +import { fixupConfigRules, fixupPluginRules } from "@eslint/compat"; +import { FlatCompat } from "@eslint/eslintrc"; +import js from "@eslint/js"; +import typescriptEslint from "@typescript-eslint/eslint-plugin"; +import tsParser from "@typescript-eslint/parser"; +import reactRefresh from "eslint-plugin-react-refresh"; +import globals from "globals"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const compat = new FlatCompat({ + baseDirectory: __dirname, + recommendedConfig: js.configs.recommended, + allConfig: js.configs.all, +}); + +export default [ + { + ignores: [ + "**/dist", + "**/node_modules", + "**/dist", + "src/components/ui/navigation-menu.tsx", + ], + }, + ...fixupConfigRules( + compat.extends( + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:react-hooks/recommended", + "prettier" + ) + ), + { + plugins: { + "react-refresh": reactRefresh, + "@typescript-eslint": fixupPluginRules(typescriptEslint), + }, + + languageOptions: { + globals: { + ...globals.browser, + }, + + parser: tsParser, + }, + files: ["**/*.ts", "**/*.tsx"], + rules: { + "react-refresh/only-export-components": [ + "warn", + { + allowConstantExport: true, + }, + ], + + "@typescript-eslint/ban-ts-comment": [ + "error", + { + "ts-ignore": "allow-with-description", + }, + ], + + "@typescript-eslint/no-unused-vars": [ + "warn", + { + args: "none", + }, + ], + + "no-console": [ + "error", + { + allow: ["info", "warn", "error"], + }, + ], + + "no-constant-binary-expression": "error", + curly: "error", + }, + }, +]; diff --git a/frontend/lint-staged.config.js b/frontend/lint-staged.config.js index 653218efc..36a197e72 100644 --- a/frontend/lint-staged.config.js +++ b/frontend/lint-staged.config.js @@ -1,5 +1,8 @@ export default { - "src/**/*.{ts,tsx,json}": ["eslint --fix --max-warnings 0","prettier --write"], + "src/**/*.{ts,tsx,json}": [ + "eslint --fix --no-warn-ignored --max-warnings 0", + "prettier --write", + ], "platform_specific/**/*.ts": ["prettier --write"], "package.json": ["prettier --write"], "src/**/*.ts": () => "tsc --noEmit", diff --git a/frontend/package.json b/frontend/package.json index 0d4544c0a..27f39f839 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -11,8 +11,8 @@ "prepare:wails": "shx cp ./platform_specific/wails/src/utils/*.ts src/utils/", "prepare:http": "shx cp ./platform_specific/http/src/utils/*.ts src/utils/", "lint": "yarn lint:js && yarn tsc:compile && yarn format:fix --report-unused-disable-directives --max-warnings 0", - "lint:js": "eslint src --ext .js,.ts,.tsx --max-warnings 0", - "lint:js:fix": "eslint src --ext .js,.ts,.tsx --fix", + "lint:js": "eslint src --max-warnings 0", + "lint:js:fix": "eslint src --fix", "tsc:compile": "tsc --noEmit", "format": "prettier --check '**/*.(md|json)' 'src/**/*.(js|ts|tsx)' '!src/assets/**/*.json' 'platform_specific/**/*.ts'", "format:fix": "prettier --loglevel silent --write '**/*.(md|json)' 'src/**/*.(js|ts|tsx)' '!src/assets/**/*.json' 'platform_specific/**/*.ts'", @@ -59,6 +59,9 @@ "devDependencies": { "@commitlint/cli": "^19.3.0", "@commitlint/config-conventional": "^19.2.2", + "@eslint/compat": "^1.0.3", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "^9.4.0", "@tailwindcss/aspect-ratio": "^0.4.2", "@tailwindcss/forms": "^0.5.7", "@tailwindcss/typography": "^0.5.10", @@ -71,10 +74,11 @@ "@typescript-eslint/parser": "^7.11.0", "@vitejs/plugin-react-swc": "^3.3.2", "autoprefixer": "^10.4.16", - "eslint": "^8.45.0", + "eslint": "^9.4.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.3", + "globals": "^15.4.0", "husky": "^9.0.11", "lint-staged": "^15.2.5", "postcss": "^8.4.32", diff --git a/frontend/src/components/redirects/SetupRedirect.tsx b/frontend/src/components/redirects/SetupRedirect.tsx index 6bf6e9d0d..9bf611522 100644 --- a/frontend/src/components/redirects/SetupRedirect.tsx +++ b/frontend/src/components/redirects/SetupRedirect.tsx @@ -16,7 +16,7 @@ export function SetupRedirect() { if (didSetupThisSession) { // ensure redirect does not happen as node may still be starting // which would then incorrectly redirect to the login page - console.log("Skipping setup redirect on initial setup"); + console.info("Skipping setup redirect on initial setup"); return; } if (info.setupCompleted) { diff --git a/frontend/src/components/ui/badge.tsx b/frontend/src/components/ui/badge.tsx index 2e019e4d6..ef4d5f4c8 100644 --- a/frontend/src/components/ui/badge.tsx +++ b/frontend/src/components/ui/badge.tsx @@ -33,4 +33,5 @@ function Badge({ className, variant, ...props }: BadgeProps) { ); } +// eslint-disable-next-line react-refresh/only-export-components export { Badge, badgeVariants }; diff --git a/frontend/src/components/ui/button.tsx b/frontend/src/components/ui/button.tsx index a659a0b65..2cb6fe5f8 100644 --- a/frontend/src/components/ui/button.tsx +++ b/frontend/src/components/ui/button.tsx @@ -1,6 +1,6 @@ -import * as React from "react"; import { Slot } from "@radix-ui/react-slot"; import { cva, type VariantProps } from "class-variance-authority"; +import * as React from "react"; import { cn } from "src/lib/utils"; @@ -54,4 +54,5 @@ const Button = React.forwardRef( ); Button.displayName = "Button"; +// eslint-disable-next-line react-refresh/only-export-components export { Button, buttonVariants }; diff --git a/frontend/src/components/ui/navigation-menu.tsx b/frontend/src/components/ui/navigation-menu.tsx index 978457467..6852b82ef 100644 --- a/frontend/src/components/ui/navigation-menu.tsx +++ b/frontend/src/components/ui/navigation-menu.tsx @@ -1,7 +1,7 @@ -import * as React from "react"; import { ChevronDownIcon } from "@radix-ui/react-icons"; import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu"; import { cva } from "class-variance-authority"; +import * as React from "react"; import { cn } from "src/lib/utils"; @@ -116,13 +116,13 @@ NavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName; export { - navigationMenuTriggerStyle, NavigationMenu, - NavigationMenuList, - NavigationMenuItem, NavigationMenuContent, - NavigationMenuTrigger, - NavigationMenuLink, NavigationMenuIndicator, + NavigationMenuItem, + NavigationMenuLink, + NavigationMenuList, + NavigationMenuTrigger, + navigationMenuTriggerStyle, NavigationMenuViewport, }; diff --git a/frontend/src/components/ui/theme-provider.tsx b/frontend/src/components/ui/theme-provider.tsx index 2605a5a58..84596d7f5 100644 --- a/frontend/src/components/ui/theme-provider.tsx +++ b/frontend/src/components/ui/theme-provider.tsx @@ -62,11 +62,13 @@ export function ThemeProvider({ ); } +// eslint-disable-next-line react-refresh/only-export-components export const useTheme = () => { const context = useContext(ThemeProviderContext); - if (context === undefined) + if (context === undefined) { throw new Error("useTheme must be used within a ThemeProvider"); + } return context; }; diff --git a/frontend/src/components/ui/use-toast.ts b/frontend/src/components/ui/use-toast.ts index cff338fb9..fb6a3c4bc 100644 --- a/frontend/src/components/ui/use-toast.ts +++ b/frontend/src/components/ui/use-toast.ts @@ -6,7 +6,7 @@ import type { ToastActionElement, ToastProps } from "src/components/ui/toast"; const TOAST_LIMIT = 1; const TOAST_REMOVE_DELAY = 1000000; -type ToasterToast = ToastProps & { +export type ToasterToast = ToastProps & { id: string; title?: React.ReactNode; description?: React.ReactNode; @@ -135,7 +135,7 @@ function dispatch(action: Action) { }); } -type Toast = Omit; +export type Toast = Omit; function toast({ ...props }: Toast) { const id = genId(); @@ -188,4 +188,4 @@ function useToast() { }; } -export { useToast, toast }; +export { toast, useToast }; diff --git a/frontend/src/hooks/useRedeemOnchainFunds.ts b/frontend/src/hooks/useRedeemOnchainFunds.ts index 60f73267d..9b09ae168 100644 --- a/frontend/src/hooks/useRedeemOnchainFunds.ts +++ b/frontend/src/hooks/useRedeemOnchainFunds.ts @@ -35,7 +35,7 @@ export function useRedeemOnchainFunds() { body: JSON.stringify({ toAddress }), } ); - console.log("Redeemed onchain funds", response); + console.info("Redeemed onchain funds", response); if (!response?.txId) { throw new Error("No address in response"); } diff --git a/frontend/src/screens/peers/ConnectPeer.tsx b/frontend/src/screens/peers/ConnectPeer.tsx index 2c8860c26..e09469621 100644 --- a/frontend/src/screens/peers/ConnectPeer.tsx +++ b/frontend/src/screens/peers/ConnectPeer.tsx @@ -31,7 +31,7 @@ export default function ConnectPeer() { if (!pubkey || !address || !port) { throw new Error("connection details missing"); } - console.log(`🔌 Peering with ${pubkey}`); + console.info(`🔌 Peering with ${pubkey}`); const connectPeerRequest: ConnectPeerRequest = { pubkey, address, diff --git a/frontend/src/screens/peers/Peers.tsx b/frontend/src/screens/peers/Peers.tsx index bcaf4c045..cf6682254 100644 --- a/frontend/src/screens/peers/Peers.tsx +++ b/frontend/src/screens/peers/Peers.tsx @@ -79,7 +79,7 @@ export default function Peers() { ) { return; } - console.log(`Disconnecting from ${peerId}`); + console.info(`Disconnecting from ${peerId}`); await request(`/api/peers/${peerId}`, { method: "DELETE", diff --git a/frontend/src/screens/settings/DebugTools.tsx b/frontend/src/screens/settings/DebugTools.tsx index 0ee4d4dfc..088c5e648 100644 --- a/frontend/src/screens/settings/DebugTools.tsx +++ b/frontend/src/screens/settings/DebugTools.tsx @@ -58,11 +58,12 @@ export default function DebugTools() { const amount = window.prompt("Enter amount in sats:"); if (amount) { const nodeId = window.prompt("Enter node pubkey:"); - if (nodeId) + if (nodeId) { apiRequest("/api/send-spontaneous-payment-probes", "POST", { amount: parseInt(amount) * 1000, nodeId, }); + } } }} > @@ -78,7 +79,9 @@ export default function DebugTools() { onClick={() => { const maxLen = window.prompt("Enter max length (in characters):"); - if (maxLen) apiRequest(`/api/log/app?maxLen=${maxLen}`, "GET"); + if (maxLen) { + apiRequest(`/api/log/app?maxLen=${maxLen}`, "GET"); + } }} > Get App Logs @@ -87,7 +90,9 @@ export default function DebugTools() { onClick={() => { const maxLen = window.prompt("Enter max length (in characters):"); - if (maxLen) apiRequest(`/api/log/node?maxLen=${maxLen}`, "GET"); + if (maxLen) { + apiRequest(`/api/log/node?maxLen=${maxLen}`, "GET"); + } }} > Get Node Logs diff --git a/frontend/src/utils/handleRequestError.ts b/frontend/src/utils/handleRequestError.ts index d96c0512d..aa9f382af 100644 --- a/frontend/src/utils/handleRequestError.ts +++ b/frontend/src/utils/handleRequestError.ts @@ -1,5 +1,13 @@ +import { Toast, ToasterToast } from "src/components/ui/use-toast"; + +type ToastSignature = (props: Toast) => { + id: string; + dismiss: () => void; + update: (props: ToasterToast) => void; +}; + export function handleRequestError( - toast: any, + toast: ToastSignature, message: string, error: unknown ) { diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 7a728d460..be1ef6afc 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -320,25 +320,44 @@ resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz" integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== +"@eslint/compat@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@eslint/compat/-/compat-1.0.3.tgz#6be44cf553a14a2f68fafb304818f7d824a7248f" + integrity sha512-9RaroPQaU2+SDcWav1YfuipwqnHccoiXZdUsicRQsQ/vH2wkEmRVcj344GapG/FnCeZRtqj0n6PshI+s9xkkAQ== + +"@eslint/config-array@^0.15.1": + version "0.15.1" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.15.1.tgz#1fa78b422d98f4e7979f2211a1fde137e26c7d61" + integrity sha512-K4gzNq+yymn/EVsXYmf+SBcBro8MTf+aXJZUphM96CdzUEr+ClGDvAbpmaEK+cGVigVXIgs9gNmvHAlrzzY5JQ== + dependencies: + "@eslint/object-schema" "^2.1.3" + debug "^4.3.1" + minimatch "^3.0.5" + +"@eslint/eslintrc@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.1.0.tgz#dbd3482bfd91efa663cbe7aa1f506839868207b6" + integrity sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" + espree "^10.0.1" + globals "^14.0.0" ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.55.0": - version "8.55.0" - resolved "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz" - integrity sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA== +"@eslint/js@9.4.0", "@eslint/js@^9.4.0": + version "9.4.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.4.0.tgz#96a2edd37ec0551ce5f9540705be23951c008a0c" + integrity sha512-fdI7VJjP3Rvc70lC4xkFXHB0fiPeojiL1PxVG6t1ZvXQrarj893PweuBTujxDUFk0Fxj4R7PIIAZ/aiiyZPZcg== + +"@eslint/object-schema@^2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.3.tgz#e65ae80ee2927b4fd8c5c26b15ecacc2b2a6cc2a" + integrity sha512-HAbhAYKfsAC2EkTqve00ibWIZlaU74Z1EHwAjYr4PXF0YU2VEA1zSIKSSpKszRLRWwHzzRZXvK632u+uXzvsvw== "@floating-ui/core@^1.0.0": version "1.6.0" @@ -398,24 +417,15 @@ eventemitter3 "^5.0.1" nostr-tools "^1.17.0" -"@humanwhocodes/config-array@^0.11.13": - version "0.11.13" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz" - integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== - dependencies: - "@humanwhocodes/object-schema" "^2.0.1" - debug "^4.1.1" - minimatch "^3.0.5" - "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^2.0.1": - version "2.0.1" - resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz" - integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== +"@humanwhocodes/retry@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.0.tgz#6d86b8cb322660f03d3f0aa94b99bdd8e172d570" + integrity sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew== "@jridgewell/gen-mapping@^0.3.2": version "0.3.3" @@ -1235,11 +1245,6 @@ "@typescript-eslint/types" "7.11.0" eslint-visitor-keys "^3.4.3" -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - "@vitejs/plugin-react-swc@^3.3.2": version "3.5.0" resolved "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.5.0.tgz" @@ -1260,10 +1265,10 @@ acorn-jsx@^5.3.2: resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.9.0: - version "8.11.2" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz" - integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== +acorn@^8.11.3: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== ajv@^6.12.4: version "6.12.6" @@ -1675,6 +1680,13 @@ debug@^4.1.1, debug@^4.3.2, debug@^4.3.4, debug@~4.3.4: dependencies: ms "2.1.2" +debug@^4.3.1: + version "4.3.5" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" + integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== + dependencies: + ms "2.1.2" + deep-is@^0.1.3: version "0.1.4" resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" @@ -1702,13 +1714,6 @@ dlv@^1.1.3: resolved "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz" integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - dot-prop@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" @@ -1819,54 +1824,55 @@ eslint-plugin-react-refresh@^0.4.3: resolved "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.5.tgz" integrity sha512-D53FYKJa+fDmZMtriODxvhwrO+IOqrxoEo21gMA0sjHdU6dPVH4OhyFip9ypl8HOF5RV5KdTo+rBQLvnY2cO8w== -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== +eslint-scope@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.0.1.tgz#a9601e4b81a0b9171657c343fb13111688963cfc" + integrity sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.3: version "3.4.3" resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint@^8.45.0: - version "8.55.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz" - integrity sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA== +eslint-visitor-keys@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz#e3adc021aa038a2a8e0b2f8b0ce8f66b9483b1fb" + integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw== + +eslint@^9.4.0: + version "9.4.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.4.0.tgz#79150c3610ae606eb131f1d648d5f43b3d45f3cd" + integrity sha512-sjc7Y8cUD1IlwYcTS9qPSvGjAC8Ne9LctpxKKu3x/1IC9bnOg98Zy6GxEJUfr1NojMgVPlyANXYns8oE2c1TAA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.55.0" - "@humanwhocodes/config-array" "^0.11.13" + "@eslint/config-array" "^0.15.1" + "@eslint/eslintrc" "^3.1.0" + "@eslint/js" "9.4.0" "@humanwhocodes/module-importer" "^1.0.1" + "@humanwhocodes/retry" "^0.3.0" "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.3.2" - doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" + eslint-scope "^8.0.1" + eslint-visitor-keys "^4.0.0" + espree "^10.0.1" esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" + file-entry-cache "^8.0.0" find-up "^5.0.0" glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" is-path-inside "^3.0.3" - js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" @@ -1876,14 +1882,14 @@ eslint@^8.45.0: strip-ansi "^6.0.1" text-table "^0.2.0" -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== +espree@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.0.1.tgz#600e60404157412751ba4a6f3a2ee1a42433139f" + integrity sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww== dependencies: - acorn "^8.9.0" + acorn "^8.11.3" acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" + eslint-visitor-keys "^4.0.0" esquery@^1.4.2: version "1.5.0" @@ -1967,12 +1973,12 @@ fflate@^0.4.8: resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.4.8.tgz#f90b82aefbd8ac174213abb338bd7ef848f0f5ae" integrity sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA== -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== dependencies: - flat-cache "^3.0.4" + flat-cache "^4.0.0" fill-range@^7.0.1: version "7.0.1" @@ -2005,14 +2011,13 @@ find-up@^7.0.0: path-exists "^5.0.0" unicorn-magic "^0.1.0" -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== dependencies: flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" + keyv "^4.5.4" flatted@^3.2.9: version "3.2.9" @@ -2094,9 +2099,9 @@ glob@7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.1.3: +glob@^7.0.0: version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" @@ -2113,12 +2118,15 @@ global-directory@^4.0.1: dependencies: ini "4.1.1" -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== + +globals@^15.4.0: + version "15.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.4.0.tgz#3e36ea6e4d9ddcf1cb42d92f5c4a145a8a2ddc1c" + integrity sha512-unnwvMZpv0eDUyjNyh9DH/yxUaRYrEjW/qK4QcdrHg3oO11igUQrCSgODHEqxlKg8v2CD2Sd7UkqqEBoz5U7TQ== globby@^11.1.0: version "11.1.0" @@ -2373,9 +2381,9 @@ jsonparse@^1.2.0: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== -keyv@^4.5.3: +keyv@^4.5.4: version "4.5.4" - resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" @@ -3069,13 +3077,6 @@ rfdc@^1.3.1: resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f" integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg== -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - rollup@^3.27.1: version "3.29.4" resolved "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz" @@ -3367,11 +3368,6 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - typescript@^5.0.2: version "5.3.3" resolved "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz" From a3fa78f70210747ae2a12c8159d1eee689175703 Mon Sep 17 00:00:00 2001 From: Pavan Joshi <55848322+pavanjoshi914@users.noreply.github.com> Date: Wed, 12 Jun 2024 12:13:17 +0530 Subject: [PATCH 17/36] feat: ci config for linting and typecheck (#417) --- .github/workflows/linting.yml | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .github/workflows/linting.yml diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml new file mode 100644 index 000000000..4bd5ecb83 --- /dev/null +++ b/.github/workflows/linting.yml @@ -0,0 +1,35 @@ +name: Code quality - linting and typechecking + +on: + push: + branches: + - master + pull_request: + types: [opened, synchronize] + +jobs: + linting: + runs-on: ubuntu-latest + defaults: + run: + working-directory: ./frontend + + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 20.x + cache: "yarn" + cache-dependency-path: frontend/yarn.lock + + - run: yarn install + - run: yarn prepare:http + + - name: Linting + run: yarn lint:js + + - name: Prettier + run: yarn format + + - name: Typechecking + run: yarn tsc:compile From e3085fa6c1d2c098e1579f4fdba56b454282dba8 Mon Sep 17 00:00:00 2001 From: Adithya Vardhan Date: Wed, 12 Jun 2024 21:07:04 +0530 Subject: [PATCH 18/36] feat: expand LND support (#385) Co-authored-by: Roland Bewick --- frontend/src/lib/backendType.ts | 2 +- frontend/src/screens/channels/NewChannel.tsx | 18 +- lnclient/lnd/lnd.go | 312 +++++++++++++++++-- lnclient/lnd/wrapper/lnd.go | 32 ++ 4 files changed, 342 insertions(+), 22 deletions(-) diff --git a/frontend/src/lib/backendType.ts b/frontend/src/lib/backendType.ts index 3bb7d72ec..ee1c9f77e 100644 --- a/frontend/src/lib/backendType.ts +++ b/frontend/src/lib/backendType.ts @@ -9,7 +9,7 @@ type BackendTypeConfig = { export const backendTypeConfigs: Record = { LND: { hasMnemonic: false, - hasChannelManagement: false, // TODO: set to true soon + hasChannelManagement: true, hasNodeBackup: false, }, BREEZ: { diff --git a/frontend/src/screens/channels/NewChannel.tsx b/frontend/src/screens/channels/NewChannel.tsx index 858267b27..5f623e69a 100644 --- a/frontend/src/screens/channels/NewChannel.tsx +++ b/frontend/src/screens/channels/NewChannel.tsx @@ -51,8 +51,7 @@ export default function NewChannel() { } function NewChannelInternal({ network }: { network: Network }) { - const { data: channelPeerSuggestions } = useChannelPeerSuggestions(); - + const { data: _channelPeerSuggestions } = useChannelPeerSuggestions(); const navigate = useNavigate(); const [order, setOrder] = React.useState>({ @@ -64,6 +63,21 @@ function NewChannelInternal({ network }: { network: Network }) { RecommendedChannelPeer | undefined >(); + const channelPeerSuggestions = React.useMemo(() => { + const customOption: RecommendedChannelPeer = { + name: "Custom", + network, + paymentMethod: "onchain", + minimumChannelSize: 0, + pubkey: "", + host: "", + image: "", + }; + return _channelPeerSuggestions + ? [..._channelPeerSuggestions, customOption] + : undefined; + }, [_channelPeerSuggestions, network]); + function setPaymentMethod(paymentMethod: "onchain" | "lightning") { setOrder((current) => ({ ...current, diff --git a/lnclient/lnd/lnd.go b/lnclient/lnd/lnd.go index aa04b7d28..bf82b6c20 100644 --- a/lnclient/lnd/lnd.go +++ b/lnclient/lnd/lnd.go @@ -6,10 +6,13 @@ import ( "crypto/sha256" "encoding/hex" "errors" + "fmt" "sort" + "strconv" "strings" "time" + "github.com/btcsuite/btcd/chaincfg/chainhash" decodepay "github.com/nbd-wtf/ln-decodepay" "github.com/getAlby/nostr-wallet-connect/lnclient" @@ -139,8 +142,106 @@ func (svc *LNDService) GetInfo(ctx context.Context) (info *lnclient.NodeInfo, er }, nil } +func (svc *LNDService) parseChannelPoint(channelPointStr string) (*lnrpc.ChannelPoint, error) { + channelPointParts := strings.Split(channelPointStr, ":") + + if len(channelPointParts) == 2 { + channelPoint := &lnrpc.ChannelPoint{} + channelPoint.FundingTxid = &lnrpc.ChannelPoint_FundingTxidStr{ + FundingTxidStr: channelPointParts[0], + } + + outputIndex, err := strconv.ParseUint(channelPointParts[1], 10, 32) + if err != nil { + return nil, err + } + channelPoint.OutputIndex = uint32(outputIndex) + + return channelPoint, nil + } + + return nil, errors.New("invalid channel point") +} + func (svc *LNDService) ListChannels(ctx context.Context) ([]lnclient.Channel, error) { - channels := []lnclient.Channel{} + activeResp, err := svc.client.ListChannels(ctx, &lnrpc.ListChannelsRequest{}) + if err != nil { + return nil, err + } + pendingResp, err := svc.client.PendingChannels(ctx, &lnrpc.PendingChannelsRequest{}) + if err != nil { + return nil, err + } + + nodeInfo, err := svc.GetInfo(ctx) + if err != nil { + return nil, err + } + + // hardcoding required confirmations as there seems to be no way to get the number of required confirmations in LND + var confirmationsRequired uint32 = 6 + // get recent transactions to check how many confirmations pending channel(s) have + recentOnchainTransactions, err := svc.client.GetTransactions(ctx, &lnrpc.GetTransactionsRequest{ + StartHeight: int32(nodeInfo.BlockHeight - confirmationsRequired), + }) + if err != nil { + return nil, err + } + + channels := make([]lnclient.Channel, len(activeResp.Channels)+len(pendingResp.PendingOpenChannels)) + + for i, lndChannel := range activeResp.Channels { + channelPoint, err := svc.parseChannelPoint(lndChannel.ChannelPoint) + if err != nil { + return nil, err + } + + // first 3 bytes of the channel ID are the block height + channelOpeningBlockHeight := lndChannel.ChanId >> 40 + confirmations := nodeInfo.BlockHeight - uint32(channelOpeningBlockHeight) + + channels[i] = lnclient.Channel{ + InternalChannel: lndChannel, + LocalBalance: lndChannel.LocalBalance * 1000, + RemoteBalance: lndChannel.RemoteBalance * 1000, + RemotePubkey: lndChannel.RemotePubkey, + Id: strconv.FormatUint(lndChannel.ChanId, 10), + Active: lndChannel.Active, + Public: !lndChannel.Private, + FundingTxId: channelPoint.GetFundingTxidStr(), + Confirmations: &confirmations, + ConfirmationsRequired: &confirmationsRequired, + } + } + + for j, lndChannel := range pendingResp.PendingOpenChannels { + channelPoint, err := svc.parseChannelPoint(lndChannel.Channel.ChannelPoint) + if err != nil { + return nil, err + } + fundingTxId := channelPoint.GetFundingTxidStr() + + var confirmations *uint32 + for _, t := range recentOnchainTransactions.Transactions { + if t.TxHash == fundingTxId { + confirmations32 := uint32(t.NumConfirmations) + confirmations = &confirmations32 + } + } + + channels[j+len(activeResp.Channels)] = lnclient.Channel{ + InternalChannel: lndChannel, + LocalBalance: lndChannel.Channel.LocalBalance * 1000, + RemoteBalance: lndChannel.Channel.RemoteBalance * 1000, + RemotePubkey: lndChannel.Channel.RemoteNodePub, + Public: !lndChannel.Channel.Private, + FundingTxId: fundingTxId, + Active: false, + Confirmations: confirmations, + ConfirmationsRequired: &confirmationsRequired, + } + } + return channels, nil } @@ -199,8 +300,23 @@ func (svc *LNDService) SendPaymentSync(ctx context.Context, payReq string) (*lnc if err != nil { return nil, err } + + if resp.PaymentError != "" { + return nil, errors.New(resp.PaymentError) + } + + if resp.PaymentPreimage == nil { + return nil, errors.New("No preimage in response") + } + + var fee uint64 = 0 + if resp.PaymentRoute != nil { + fee = uint64(resp.PaymentRoute.TotalFeesMsat) + } + return &lnclient.PayInvoiceResponse{ Preimage: hex.EncodeToString(resp.PaymentPreimage), + Fee: &fee, }, nil } @@ -334,26 +450,153 @@ func (svc *LNDService) Shutdown() error { } func (svc *LNDService) GetNodeConnectionInfo(ctx context.Context) (nodeConnectionInfo *lnclient.NodeConnectionInfo, err error) { - return &lnclient.NodeConnectionInfo{}, nil + info, err := svc.client.GetInfo(ctx, &lnrpc.GetInfoRequest{}) + if err != nil { + return nil, err + } + + return &lnclient.NodeConnectionInfo{ + Pubkey: info.IdentityPubkey, + //Address: address, + //Port: port, + }, nil } func (svc *LNDService) ConnectPeer(ctx context.Context, connectPeerRequest *lnclient.ConnectPeerRequest) error { - return nil + _, err := svc.client.ConnectPeer(ctx, &lnrpc.ConnectPeerRequest{ + Addr: &lnrpc.LightningAddress{ + Pubkey: connectPeerRequest.Pubkey, + Host: connectPeerRequest.Address + ":" + strconv.Itoa(int(connectPeerRequest.Port)), + }, + }) + return err } + func (svc *LNDService) OpenChannel(ctx context.Context, openChannelRequest *lnclient.OpenChannelRequest) (*lnclient.OpenChannelResponse, error) { - return nil, nil + peers, err := svc.ListPeers(ctx) + var foundPeer *lnclient.PeerDetails + for _, peer := range peers { + if peer.NodeId == openChannelRequest.Pubkey { + + foundPeer = &peer + break + } + } + + if foundPeer == nil { + return nil, errors.New("node is not peered yet") + } + + svc.Logger.WithField("peer_id", foundPeer.NodeId).Info("Opening channel") + + nodePub, err := hex.DecodeString(openChannelRequest.Pubkey) + if err != nil { + return nil, errors.New("failed to decode pubkey") + } + + channel, err := svc.client.OpenChannelSync(ctx, &lnrpc.OpenChannelRequest{ + NodePubkey: nodePub, + Private: !openChannelRequest.Public, + LocalFundingAmount: openChannelRequest.Amount, + }) + if err != nil { + return nil, fmt.Errorf("failed to open channel with %s: %s", foundPeer.NodeId, err) + } + + fundingTxidBytes := channel.GetFundingTxidBytes() + + // we get the funding transaction id bytes in reverse + for i, j := 0, len(fundingTxidBytes)-1; i < j; i, j = i+1, j-1 { + fundingTxidBytes[i], fundingTxidBytes[j] = fundingTxidBytes[j], fundingTxidBytes[i] + } + + return &lnclient.OpenChannelResponse{ + FundingTxId: hex.EncodeToString(fundingTxidBytes), + }, err } func (svc *LNDService) CloseChannel(ctx context.Context, closeChannelRequest *lnclient.CloseChannelRequest) (*lnclient.CloseChannelResponse, error) { - return nil, nil + svc.Logger.WithFields(logrus.Fields{ + "request": closeChannelRequest, + }).Info("Closing Channel") + + resp, err := svc.client.ListChannels(ctx, &lnrpc.ListChannelsRequest{}) + if err != nil { + return nil, err + } + + var foundChannel *lnrpc.Channel + for _, channel := range resp.Channels { + if strconv.FormatUint(channel.ChanId, 10) == closeChannelRequest.ChannelId { + + foundChannel = channel + break + } + } + + if foundChannel == nil { + return nil, errors.New("no channel exists with the given id") + } + + channelPoint, err := svc.parseChannelPoint(foundChannel.ChannelPoint) + if err != nil { + return nil, err + } + + stream, err := svc.client.CloseChannel(ctx, &lnrpc.CloseChannelRequest{ + ChannelPoint: channelPoint, + Force: closeChannelRequest.Force, + }) + if err != nil { + return nil, err + } + + for { + resp, err := stream.Recv() + if err != nil { + return nil, err + } + + switch update := resp.Update.(type) { + case *lnrpc.CloseStatusUpdate_ClosePending: + closingHash := update.ClosePending.Txid + txid, err := chainhash.NewHash(closingHash) + if err != nil { + return nil, err + } + svc.Logger.WithFields(logrus.Fields{ + "closingTxid": txid.String(), + }).Info("Channel close pending") + // TODO: return the closing tx id or fire an event + return &lnclient.CloseChannelResponse{}, nil + } + } } func (svc *LNDService) GetNewOnchainAddress(ctx context.Context) (string, error) { - return "", nil + resp, err := svc.client.NewAddress(ctx, &lnrpc.NewAddressRequest{ + Type: lnrpc.AddressType_WITNESS_PUBKEY_HASH, + }) + if err != nil { + svc.Logger.WithError(err).Error("NewOnchainAddress failed") + return "", err + } + return resp.Address, nil } func (svc *LNDService) GetOnchainBalance(ctx context.Context) (*lnclient.OnchainBalanceResponse, error) { - return nil, nil + balances, err := svc.client.WalletBalance(ctx, &lnrpc.WalletBalanceRequest{}) + if err != nil { + return nil, err + } + svc.Logger.WithFields(logrus.Fields{ + "balances": balances, + }).Debug("Listed Balances") + return &lnclient.OnchainBalanceResponse{ + Spendable: int64(balances.ConfirmedBalance), + Total: int64(balances.TotalBalance - balances.ReservedBalanceAnchorChan), + Reserved: int64(balances.ReservedBalanceAnchorChan), + }, nil } func (svc *LNDService) RedeemOnchainFunds(ctx context.Context, toAddress string) (txId string, err error) { @@ -369,7 +612,17 @@ func (svc *LNDService) SendSpontaneousPaymentProbes(ctx context.Context, amountM } func (svc *LNDService) ListPeers(ctx context.Context) ([]lnclient.PeerDetails, error) { - return nil, nil + resp, err := svc.client.ListPeers(ctx, &lnrpc.ListPeersRequest{}) + ret := make([]lnclient.PeerDetails, 0, len(resp.Peers)) + for _, peer := range resp.Peers { + ret = append(ret, lnclient.PeerDetails{ + NodeId: peer.PubKey, + Address: peer.Address, + IsPersisted: true, + IsConnected: true, + }) + } + return ret, err } func (svc *LNDService) GetLogOutput(ctx context.Context, maxLen int) ([]byte, error) { @@ -386,23 +639,44 @@ func (svc *LNDService) SignMessage(ctx context.Context, message string) (string, } func (svc *LNDService) GetBalances(ctx context.Context) (*lnclient.BalancesResponse, error) { - balance, err := svc.GetBalance(ctx) + onchainBalance, err := svc.GetOnchainBalance(ctx) if err != nil { + svc.Logger.WithError(err).Error("Failed to retrieve onchain balance") return nil, err } + var totalReceivable int64 = 0 + var totalSpendable int64 = 0 + var nextMaxReceivable int64 = 0 + var nextMaxSpendable int64 = 0 + var nextMaxReceivableMPP int64 = 0 + var nextMaxSpendableMPP int64 = 0 + resp, err := svc.client.ListChannels(ctx, &lnrpc.ListChannelsRequest{}) + + for _, channel := range resp.Channels { + // Unnecessary since ListChannels only returns active channels + if channel.Active { + channelMinSpendable := channel.LocalBalance * 1000 + channelMinReceivable := channel.RemoteBalance * 1000 + + nextMaxSpendable = max(nextMaxSpendable, channelMinSpendable) + nextMaxReceivable = max(nextMaxReceivable, channelMinReceivable) + + totalSpendable += channelMinSpendable + totalReceivable += channelMinReceivable + } + } + return &lnclient.BalancesResponse{ - Onchain: lnclient.OnchainBalanceResponse{ - Spendable: 0, // TODO: implement - Total: 0, // TODO: implement - }, + Onchain: *onchainBalance, Lightning: lnclient.LightningBalanceResponse{ - TotalSpendable: balance, - TotalReceivable: 0, // TODO: implement - NextMaxSpendable: balance, // TODO: implement - NextMaxReceivable: 0, // TODO: implement - NextMaxSpendableMPP: balance, // TODO: implement - NextMaxReceivableMPP: 0, // TODO: implement + TotalSpendable: totalSpendable, + TotalReceivable: totalReceivable, + NextMaxSpendable: nextMaxSpendable, + NextMaxReceivable: nextMaxReceivable, + // TODO: return actuall MPP instead of 0 + NextMaxSpendableMPP: nextMaxSpendableMPP, + NextMaxReceivableMPP: nextMaxReceivableMPP, }, }, nil } diff --git a/lnclient/lnd/wrapper/lnd.go b/lnclient/lnd/wrapper/lnd.go index 15e14d239..e029a4bed 100644 --- a/lnclient/lnd/wrapper/lnd.go +++ b/lnclient/lnd/wrapper/lnd.go @@ -91,6 +91,14 @@ func (wrapper *LNDWrapper) ListChannels(ctx context.Context, req *lnrpc.ListChan return wrapper.client.ListChannels(ctx, req, options...) } +func (wrapper *LNDWrapper) GetTransactions(ctx context.Context, req *lnrpc.GetTransactionsRequest, options ...grpc.CallOption) (*lnrpc.TransactionDetails, error) { + return wrapper.client.GetTransactions(ctx, req, options...) +} + +func (wrapper *LNDWrapper) PendingChannels(ctx context.Context, req *lnrpc.PendingChannelsRequest, options ...grpc.CallOption) (*lnrpc.PendingChannelsResponse, error) { + return wrapper.client.PendingChannels(ctx, req, options...) +} + func (wrapper *LNDWrapper) SendPaymentSync(ctx context.Context, req *lnrpc.SendRequest, options ...grpc.CallOption) (*lnrpc.SendResponse, error) { return wrapper.client.SendPaymentSync(ctx, req, options...) } @@ -144,3 +152,27 @@ func (wrapper *LNDWrapper) GetMainPubkey() (pubkey string) { func (wrapper *LNDWrapper) SignMessage(ctx context.Context, req *lnrpc.SignMessageRequest, options ...grpc.CallOption) (*lnrpc.SignMessageResponse, error) { return wrapper.client.SignMessage(ctx, req, options...) } + +func (wrapper *LNDWrapper) ConnectPeer(ctx context.Context, req *lnrpc.ConnectPeerRequest, options ...grpc.CallOption) (*lnrpc.ConnectPeerResponse, error) { + return wrapper.client.ConnectPeer(ctx, req, options...) +} + +func (wrapper *LNDWrapper) ListPeers(ctx context.Context, req *lnrpc.ListPeersRequest, options ...grpc.CallOption) (*lnrpc.ListPeersResponse, error) { + return wrapper.client.ListPeers(ctx, req, options...) +} + +func (wrapper *LNDWrapper) OpenChannelSync(ctx context.Context, req *lnrpc.OpenChannelRequest, options ...grpc.CallOption) (*lnrpc.ChannelPoint, error) { + return wrapper.client.OpenChannelSync(ctx, req, options...) +} + +func (wrapper *LNDWrapper) CloseChannel(ctx context.Context, req *lnrpc.CloseChannelRequest, options ...grpc.CallOption) (lnrpc.Lightning_CloseChannelClient, error) { + return wrapper.client.CloseChannel(ctx, req, options...) +} + +func (wrapper *LNDWrapper) WalletBalance(ctx context.Context, req *lnrpc.WalletBalanceRequest, options ...grpc.CallOption) (*lnrpc.WalletBalanceResponse, error) { + return wrapper.client.WalletBalance(ctx, req, options...) +} + +func (wrapper *LNDWrapper) NewAddress(ctx context.Context, req *lnrpc.NewAddressRequest, options ...grpc.CallOption) (*lnrpc.NewAddressResponse, error) { + return wrapper.client.NewAddress(ctx, req, options...) +} From 3bbfde95f4bd799c692560a6585957ec39a3eb5b Mon Sep 17 00:00:00 2001 From: Adithya Vardhan Date: Wed, 12 Jun 2024 21:12:35 +0530 Subject: [PATCH 19/36] feat: oauth before login (#418) --- alby/alby_oauth_service.go | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/alby/alby_oauth_service.go b/alby/alby_oauth_service.go index 970e235c5..75fa1679c 100644 --- a/alby/alby_oauth_service.go +++ b/alby/alby_oauth_service.go @@ -72,24 +72,27 @@ func (svc *albyOAuthService) CallbackHandler(ctx context.Context, code string) e } svc.saveToken(token) + me, err := svc.GetMe(ctx) + if err != nil { + svc.logger.WithError(err).Error("Failed to fetch user me") + // remove token so user can retry + svc.config.SetUpdate(accessTokenKey, "", "") + return err + } + existingUserIdentifier, err := svc.GetUserIdentifier() if err != nil { svc.logger.WithError(err).Error("Failed to get alby user identifier") return err } - // setup Alby account on first time login + // save the user's alby account ID on first time login if existingUserIdentifier == "" { - // fetch and save the user's alby account ID. This cannot be changed. - me, err := svc.GetMe(ctx) - if err != nil { - svc.logger.WithError(err).Error("Failed to fetch user me") - // remove token so user can retry - svc.config.SetUpdate(accessTokenKey, me.Identifier, "") - return err - } - svc.config.SetUpdate(userIdentifierKey, me.Identifier, "") + } else if me.Identifier != existingUserIdentifier { + // remove token so user can retry with correct account + svc.config.SetUpdate(accessTokenKey, "", "") + return errors.New("Alby Hub is connected to a different alby account. Please log out of your Alby Account at getalby.com and try again.") } return nil From 2867c94851f5750ff8c2eb9396636a2eecc60ff8 Mon Sep 17 00:00:00 2001 From: Roland <33993199+rolznz@users.noreply.github.com> Date: Thu, 13 Jun 2024 11:54:17 +0700 Subject: [PATCH 20/36] Fix: LSPS1 public 6 confirmations, LND simultaneous support 0-conf and non-0-conf (#439) --- go.mod | 4 ++-- go.sum | 4 ++-- lsp/lsp_service.go | 10 +++++++++- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 516112255..039b4f66b 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/davrux/echo-logrus/v4 v4.0.3 github.com/elnosh/gonuts v0.1.1-0.20240602162005-49da741613e4 github.com/getAlby/glalby-go v0.0.0-20240416174357-e6e2faa2fbd8 - github.com/getAlby/ldk-node-go v0.0.0-20240603135137-7fe56c466ffd + github.com/getAlby/ldk-node-go v0.0.0-20240613043419-a3ae86f6a26d github.com/go-gormigrate/gormigrate/v2 v2.1.1 github.com/gorilla/sessions v1.2.2 github.com/labstack/echo-contrib v0.14.1 @@ -227,7 +227,7 @@ require ( require ( github.com/btcsuite/btcd/btcec/v2 v2.3.3 // indirect - github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect + github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 github.com/decred/dcrd/crypto/blake256 v1.0.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect github.com/glebarez/sqlite v1.11.0 diff --git a/go.sum b/go.sum index 4aceb24b3..690efc19e 100644 --- a/go.sum +++ b/go.sum @@ -188,8 +188,8 @@ github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwV github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/getAlby/glalby-go v0.0.0-20240416174357-e6e2faa2fbd8 h1:mJsdhUb8hmSSSLR2GQFw9BGtnJP7xmKB/XQxDt3DvAo= github.com/getAlby/glalby-go v0.0.0-20240416174357-e6e2faa2fbd8/go.mod h1:ViyJvjlvv0GCesTJ7mb3fBo4G+/qsujDAFN90xZ7a9U= -github.com/getAlby/ldk-node-go v0.0.0-20240603135137-7fe56c466ffd h1:pYqFkK0TuKG8WFjHb80qod5zc0jvHSwT55rb5/W3u4s= -github.com/getAlby/ldk-node-go v0.0.0-20240603135137-7fe56c466ffd/go.mod h1:8BRjtKcz8E0RyYTPEbMS8VIdgredcGSLne8vHDtcRLg= +github.com/getAlby/ldk-node-go v0.0.0-20240613043419-a3ae86f6a26d h1:pj+/wYZ3TFzJt2fGQaf7naAqWluR0HlzLGNFAiwoe3g= +github.com/getAlby/ldk-node-go v0.0.0-20240613043419-a3ae86f6a26d/go.mod h1:8BRjtKcz8E0RyYTPEbMS8VIdgredcGSLne8vHDtcRLg= github.com/getsentry/raven-go v0.2.0 h1:no+xWJRb5ZI7eE8TWgIq1jLulQiIoLG0IfYxv5JYMGs= github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= diff --git a/lsp/lsp_service.go b/lsp/lsp_service.go index fd57af0d2..b4ea78d86 100644 --- a/lsp/lsp_service.go +++ b/lsp/lsp_service.go @@ -543,11 +543,19 @@ func (ls *lspService) requestLSPS1Invoice(ctx context.Context, selectedLsp *LSP, return "", 0, err } + var requiredChannelConfirmations uint64 = 0 + + if public { + // as per BOLT-7 6 confirmations are required for the channel to be gossiped + // https://github.com/lightning/bolts/blob/master/07-routing-gossip.md#requirements + requiredChannelConfirmations = 6 + } + newLSPS1ChannelRequest := NewLSPS1ChannelRequest{ PublicKey: pubkey, LSPBalanceSat: strconv.FormatUint(amount, 10), ClientBalanceSat: "0", - RequiredChannelConfirmations: 0, + RequiredChannelConfirmations: requiredChannelConfirmations, FundingConfirmsWithinBlocks: 6, ChannelExpiryBlocks: 13000, // TODO: this should be customizable Token: "", From 6ca7a3647082235ed1e7569ee60ad37d967068bf Mon Sep 17 00:00:00 2001 From: Michael Bumann Date: Thu, 13 Jun 2024 10:09:10 +0300 Subject: [PATCH 21/36] Embed webview if not available (#406) --- .github/workflows/wails2.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/wails2.yaml b/.github/workflows/wails2.yaml index 57e1e316a..bb6edcc80 100644 --- a/.github/workflows/wails2.yaml +++ b/.github/workflows/wails2.yaml @@ -87,17 +87,17 @@ jobs: - name: Build App if: runner.os == 'macOS' - run: wails build --platform darwin/universal -webview2 download -o ${{ matrix.build.name }} -tags "wails" + run: wails build --platform darwin/universal -webview2 embed -o ${{ matrix.build.name }} -tags "wails" shell: bash - name: Build App if: runner.os == 'Linux' - run: wails build --platform linux/amd64 -webview2 download -o ${{ matrix.build.name }} -tags "wails" + run: wails build --platform linux/amd64 -webview2 embed -o ${{ matrix.build.name }} -tags "wails" shell: bash - name: Build Windows App if: runner.os == 'Windows' - run: wails build --platform windows/amd64 -webview2 download -o ${{ matrix.build.name }}.exe -tags "wails" + run: wails build --platform windows/amd64 -webview2 embed -o ${{ matrix.build.name }}.exe -tags "wails" shell: bash - name: Import Code-Signing Certificates for macOS From 30378972496af9adea2825dde2641b5e02cbc709 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Aaron?= <100827540+reneaaron@users.noreply.github.com> Date: Thu, 13 Jun 2024 12:41:49 +0200 Subject: [PATCH 22/36] feat: new account link card (#420) Co-authored-by: Roland Bewick --- .../src/components/AlbyConnectionCard.tsx | 159 ++++++++++++++++++ frontend/src/components/SidebarHint.tsx | 2 +- frontend/src/components/ui/button.tsx | 2 + frontend/src/components/ui/loading-button.tsx | 8 +- frontend/src/hooks/useLinkAccount.ts | 62 +++++++ frontend/src/index.css | 2 + frontend/src/screens/apps/AppList.tsx | 18 +- frontend/src/screens/settings/Settings.tsx | 102 ----------- frontend/tailwind.config.js | 4 + 9 files changed, 248 insertions(+), 111 deletions(-) create mode 100644 frontend/src/components/AlbyConnectionCard.tsx create mode 100644 frontend/src/hooks/useLinkAccount.ts diff --git a/frontend/src/components/AlbyConnectionCard.tsx b/frontend/src/components/AlbyConnectionCard.tsx new file mode 100644 index 000000000..fdecd74c5 --- /dev/null +++ b/frontend/src/components/AlbyConnectionCard.tsx @@ -0,0 +1,159 @@ +import { Avatar, AvatarFallback, AvatarImage } from "@radix-ui/react-avatar"; +import { Separator } from "@radix-ui/react-dropdown-menu"; +import { Progress } from "@radix-ui/react-progress"; +import { + CheckCircle2, + CircleX, + Edit, + ExternalLinkIcon, + Link2Icon, + ZapIcon, +} from "lucide-react"; +import { Link } from "react-router-dom"; +import ExternalLink from "src/components/ExternalLink"; +import Loading from "src/components/Loading"; +import { Button } from "src/components/ui/button"; +import { + Card, + CardContent, + CardDescription, + CardHeader, + CardTitle, +} from "src/components/ui/card"; +import { LoadingButton } from "src/components/ui/loading-button"; +import { useAlbyMe } from "src/hooks/useAlbyMe"; +import { LinkStatus, useLinkAccount } from "src/hooks/useLinkAccount"; +import { App } from "src/types"; + +function AlbyConnectionCard({ connection }: { connection?: App }) { + const { data: albyMe } = useAlbyMe(); + const { loading, linkStatus, loadingLinkStatus, linkAccount } = + useLinkAccount(); + + return ( + + + Alby Account + + Link Your Alby Account to use your lightning address with Alby Hub and + use apps that you connected to your Alby Account. + + + + +
+
+
+ + + SN + +
+
{albyMe?.name}
+
+ + {albyMe?.lightning_address} +
+
+
+
+ {loadingLinkStatus && } + {!connection || linkStatus === LinkStatus.SharedNode ? ( + + {!loading && } + Link your Alby Account + + ) : linkStatus === LinkStatus.ThisNode ? ( + + ) : ( + linkStatus === LinkStatus.OtherNode && ( + + ) + )} + + + +
+
+
+ {connection && ( + <> + {connection.maxAmount > 0 && ( + <> +
+
+

+ You've spent +

+

+ {new Intl.NumberFormat().format( + connection.budgetUsage + )}{" "} + sats +

+
+
+ {" "} +

+ Left in budget +

+

+ {new Intl.NumberFormat().format( + connection.maxAmount - connection.budgetUsage + )}{" "} + sats +

+
+
+ +
+ {connection.maxAmount > 0 ? ( + <> + {new Intl.NumberFormat().format(connection.maxAmount)}{" "} + sats / {connection.budgetRenewal} + + ) : ( + "Not set" + )} +
+ + + +
+
+ + )} + + )} +
+
+
+
+ ); +} + +export default AlbyConnectionCard; diff --git a/frontend/src/components/SidebarHint.tsx b/frontend/src/components/SidebarHint.tsx index c5fbc3dcf..370b19456 100644 --- a/frontend/src/components/SidebarHint.tsx +++ b/frontend/src/components/SidebarHint.tsx @@ -90,7 +90,7 @@ function SidebarHint() { title="Link your Hub" description="Finish the setup by linking your Alby Account to this hub." buttonText="Link Hub" - buttonLink="/settings" + buttonLink="/apps" /> ); } diff --git a/frontend/src/components/ui/button.tsx b/frontend/src/components/ui/button.tsx index 2cb6fe5f8..0c170b2da 100644 --- a/frontend/src/components/ui/button.tsx +++ b/frontend/src/components/ui/button.tsx @@ -19,6 +19,8 @@ const buttonVariants = cva( "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80", ghost: "hover:bg-accent hover:text-accent-foreground", link: "text-primary underline-offset-4 hover:underline", + positive: + "bg-positive text-positive-foreground shadow-sm hover:bg-positive/90", }, size: { default: "h-9 px-4 py-2", diff --git a/frontend/src/components/ui/loading-button.tsx b/frontend/src/components/ui/loading-button.tsx index fb45e672f..2f994d420 100644 --- a/frontend/src/components/ui/loading-button.tsx +++ b/frontend/src/components/ui/loading-button.tsx @@ -20,10 +20,10 @@ const buttonVariants = cva( link: "text-primary underline-offset-4 hover:underline", }, size: { - default: "h-10 px-4 py-2", - sm: "h-9 rounded-md px-3", - lg: "h-11 rounded-md px-8", - icon: "h-10 w-10", + default: "h-9 px-4 py-2", + sm: "h-8 rounded-md px-3 text-xs", + lg: "h-10 rounded-md px-8", + icon: "h-9 w-9", }, }, defaultVariants: { diff --git a/frontend/src/hooks/useLinkAccount.ts b/frontend/src/hooks/useLinkAccount.ts new file mode 100644 index 000000000..9a19caaa1 --- /dev/null +++ b/frontend/src/hooks/useLinkAccount.ts @@ -0,0 +1,62 @@ +import { useState } from "react"; +import { toast } from "src/components/ui/use-toast"; +import { useAlbyMe } from "src/hooks/useAlbyMe"; +import { useCSRF } from "src/hooks/useCSRF"; +import { useNodeConnectionInfo } from "src/hooks/useNodeConnectionInfo"; +import { request } from "src/utils/request"; + +export enum LinkStatus { + SharedNode, + ThisNode, + OtherNode, +} + +export function useLinkAccount() { + const { data: csrf } = useCSRF(); + const { data: me, mutate: reloadAlbyMe } = useAlbyMe(); + const { data: nodeConnectionInfo } = useNodeConnectionInfo(); + const [loading, setLoading] = useState(false); + + let linkStatus: LinkStatus | undefined; + if (me && nodeConnectionInfo) { + if (me?.keysend_pubkey === nodeConnectionInfo.pubkey) { + linkStatus = LinkStatus.ThisNode; + } else if (me.shared_node) { + linkStatus = LinkStatus.SharedNode; + } else { + linkStatus = LinkStatus.OtherNode; + } + } + + const loadingLinkStatus = !linkStatus; + + async function linkAccount() { + try { + setLoading(true); + if (!csrf) { + throw new Error("csrf not loaded"); + } + await request("/api/alby/link-account", { + method: "POST", + headers: { + "X-CSRF-Token": csrf, + "Content-Type": "application/json", + }, + }); + await reloadAlbyMe(); + toast({ + title: + "Your Alby Hub has successfully been linked to your Alby Account", + }); + } catch (e) { + toast({ + title: "Your Alby Hub couldn't be linked to your Alby Account", + description: "Did you already link another Alby Hub?", + }); + } finally { + setLoading(false); + } + } + + return { loading, loadingLinkStatus, linkStatus, linkAccount }; +} diff --git a/frontend/src/index.css b/frontend/src/index.css index d97b242b8..6590f298c 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -24,6 +24,8 @@ --input: 240 5.9% 90%; --ring: 240 5.9% 10%; --radius: 0.5rem; + --positive: 138, 68%, 96%; + --positive-foreground: 142 76% 36%; } .dark { diff --git a/frontend/src/screens/apps/AppList.tsx b/frontend/src/screens/apps/AppList.tsx index e1aafacce..de7d4eaa8 100644 --- a/frontend/src/screens/apps/AppList.tsx +++ b/frontend/src/screens/apps/AppList.tsx @@ -1,5 +1,6 @@ import { Cable, CirclePlus } from "lucide-react"; import { Link } from "react-router-dom"; +import AlbyConnectionCard from "src/components/AlbyConnectionCard"; import AppCard from "src/components/AppCard"; import AppHeader from "src/components/AppHeader"; import EmptyState from "src/components/EmptyState"; @@ -8,6 +9,8 @@ import { Button } from "src/components/ui/button"; import { useApps } from "src/hooks/useApps"; import { useInfo } from "src/hooks/useInfo"; +const albyConnectionName = "getalby.com"; + function AppList() { const { data: apps } = useApps(); const { data: info } = useInfo(); @@ -16,6 +19,11 @@ function AppList() { return ; } + const albyConnection = apps.find((x) => x.name === albyConnectionName); + const otherApps = apps.filter( + (x) => x.nostrPubkey !== albyConnection?.nostrPubkey + ); + return ( <> - {!apps.length && ( + + + {!otherApps.length && ( )} - {apps.length > 0 && ( -
- {apps.map((app, index) => ( + {otherApps.length > 0 && ( +
+ {otherApps.map((app, index) => ( ))}
diff --git a/frontend/src/screens/settings/Settings.tsx b/frontend/src/screens/settings/Settings.tsx index dc88c1142..b60742bae 100644 --- a/frontend/src/screens/settings/Settings.tsx +++ b/frontend/src/screens/settings/Settings.tsx @@ -1,114 +1,12 @@ -import { CircleCheck, Link2Off } from "lucide-react"; -import { useEffect, useState } from "react"; -import Loading from "src/components/Loading"; import SettingsHeader from "src/components/SettingsHeader"; -import { - Card, - CardContent, - CardDescription, - CardFooter, - CardHeader, - CardTitle, -} from "src/components/ui/card"; -import { LoadingButton } from "src/components/ui/loading-button"; -import { toast } from "src/components/ui/use-toast"; -import { useAlbyMe } from "src/hooks/useAlbyMe"; -import { useCSRF } from "src/hooks/useCSRF"; -import { useNodeConnectionInfo } from "src/hooks/useNodeConnectionInfo"; -import { request } from "src/utils/request"; function Settings() { - const { data: csrf } = useCSRF(); - const { data: me } = useAlbyMe(); - const { data: nodeConnectionInfo } = useNodeConnectionInfo(); - const [loading, setLoading] = useState(false); - const [loadingInfo, setLoadingInfo] = useState(true); - const [linked, setLinked] = useState(false); - - useEffect(() => { - if (me && nodeConnectionInfo) { - setLinked(me?.keysend_pubkey === nodeConnectionInfo.pubkey); - setLoadingInfo(false); - } - }, [me, nodeConnectionInfo]); - - async function linkAccount() { - try { - setLoading(true); - if (!csrf) { - throw new Error("csrf not loaded"); - } - await request("/api/alby/link-account", { - method: "POST", - headers: { - "X-CSRF-Token": csrf, - "Content-Type": "application/json", - }, - }); - setLinked(true); - toast({ - title: - "Your Alby Hub has successfully been linked to your Alby Account", - }); - } catch (e) { - toast({ - title: "Your Alby Hub couldn't be linked to your Alby Account", - description: "Did you already link another Alby Hub?", - }); - } finally { - setLoading(false); - } - } - return ( <> -
- - - Alby Account - - Link your lightning address & other apps to this hub. - - - -
Status
- {loadingInfo && } - {!loadingInfo && ( -
- {linked && ( - <> - -

Linked

- - )} - {!linked && me?.shared_node && ( - <> - -

Not Linked

- - )} - {!linked && !me?.shared_node && ( - <> - -

Linked to a different wallet

- - )} -
- )} -
- {!loadingInfo && !linked && me?.shared_node && ( - - - Link now - - - )} -
-
); } diff --git a/frontend/tailwind.config.js b/frontend/tailwind.config.js index 3781a8d32..7c74ebbce 100644 --- a/frontend/tailwind.config.js +++ b/frontend/tailwind.config.js @@ -57,6 +57,10 @@ module.exports = { DEFAULT: "hsl(var(--card))", foreground: "hsl(var(--card-foreground))", }, + positive: { + DEFAULT: "hsl(var(--positive))", + foreground: "hsl(var(--positive-foreground))", + }, }, borderRadius: { lg: "var(--radius)", From 7ba965c8206626c81ff0cc793cb24472b1379f9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Aaron?= <100827540+reneaaron@users.noreply.github.com> Date: Thu, 13 Jun 2024 12:43:00 +0200 Subject: [PATCH 23/36] feat: onboarding todo (#431) Co-authored-by: Roland Bewick --- frontend/src/App.tsx | 2 +- frontend/src/screens/setup/SetupPassword.tsx | 1 + .../screens/wallet/OnboardingChecklist.tsx | 162 ++++++++++++++++++ frontend/src/screens/wallet/index.tsx | 3 + 4 files changed, 167 insertions(+), 1 deletion(-) create mode 100644 frontend/src/screens/wallet/OnboardingChecklist.tsx diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 7109d6de4..3e28a568f 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -26,7 +26,6 @@ import { ImportMnemonic } from "src/screens/setup/ImportMnemonic"; import { SetupFinish } from "src/screens/setup/SetupFinish"; import { SetupNode } from "src/screens/setup/SetupNode"; import { SetupPassword } from "src/screens/setup/SetupPassword"; -import Wallet from "src/screens/wallet"; import SignMessage from "src/screens/wallet/SignMessage"; import { usePosthog } from "./hooks/usePosthog"; @@ -53,6 +52,7 @@ import { LDKForm } from "src/screens/setup/node/LDKForm"; import { LNDForm } from "src/screens/setup/node/LNDForm"; import { PhoenixdForm } from "src/screens/setup/node/PhoenixdForm"; import { PresetNodeForm } from "src/screens/setup/node/PresetNodeForm"; +import Wallet from "src/screens/wallet"; function App() { usePosthog(); diff --git a/frontend/src/screens/setup/SetupPassword.tsx b/frontend/src/screens/setup/SetupPassword.tsx index e872026c1..ddf5ccc1e 100644 --- a/frontend/src/screens/setup/SetupPassword.tsx +++ b/frontend/src/screens/setup/SetupPassword.tsx @@ -57,6 +57,7 @@ export function SetupPassword() {
+ ALBY_MIN_BALANCE + 50000; // accommodate for on-chain fees + */ + const isLinked = + albyMe && + nodeConnectionInfo && + albyMe?.keysend_pubkey === nodeConnectionInfo?.pubkey; + const hasChannel = hasChannelManagement && channels && channels?.length > 0; + const hasBackedUp = + hasMnemonic && + info && + info.nextBackupReminder && + new Date(info.nextBackupReminder).getTime() > new Date().getTime(); + const hasCustomApp = + apps && apps.find((x) => x.name !== "getalby.com") !== undefined; + + const checklistItems = [ + { + title: "Open your first channel", + description: + "Establish a new Lightning channel to enable fast and low-fee Bitcoin transactions.", + checked: hasChannel, + to: "/channels/new", + }, + { + title: "Link your Alby Account", + description: "Link your lightning address & other apps to this hub.", + checked: isLinked, + to: "/apps", + }, + // TODO: enable when we can always migrate funds + /*{ + title: "Migrate your balance to your Alby Hub", + description: "Move your existing funds into self-custody.", + checked: !hasAlbyBalance, + to: "/onboarding/lightning/migrate-alby", + },*/ + { + title: "Connect your first app", + description: + "Seamlessly connect apps and integrate your wallet with other apps from your hub.", + checked: hasCustomApp, + to: "/appstore", + }, + ...(hasMnemonic + ? [ + { + title: "Backup your keys", + description: + "Secure your keys by creating a backup to ensure you don't lose access.", + checked: hasBackedUp, + to: "/settings/key-backup", + }, + ] + : []), + ]; + + const sortedChecklistItems = checklistItems.sort( + (a, b) => (b && b.checked ? 1 : 0) - (a && a.checked ? 1 : 0) + ); + + return ( + + + Get started with your Alby Hub + + Follow these initial steps to set up and make the most of your Alby + Hub. + + + + {sortedChecklistItems.map((item) => ( + + ))} + + + ); +} + +type ChecklistItemProps = { + title: string; + checked: boolean; + description: string; + to: string; +}; + +function ChecklistItem({ + title, + checked = false, + description, + to, +}: ChecklistItemProps) { + const content = ( +
+ {!checked && ( +
+ +
+ )} +
+ {checked ? ( + + ) : ( + + )} +
+ {title} +
+
+ {!checked && ( +
{description}
+ )} +
+ ); + + return checked ? content : {content}; +} + +export default OnboardingChecklist; diff --git a/frontend/src/screens/wallet/index.tsx b/frontend/src/screens/wallet/index.tsx index ab50448e1..c4d79534f 100644 --- a/frontend/src/screens/wallet/index.tsx +++ b/frontend/src/screens/wallet/index.tsx @@ -14,6 +14,7 @@ import { } from "src/components/ui/card"; import { useBalances } from "src/hooks/useBalances"; import { useInfo } from "src/hooks/useInfo"; +import OnboardingChecklist from "src/screens/wallet/OnboardingChecklist"; function Wallet() { const { data: info } = useInfo(); @@ -101,6 +102,8 @@ function Wallet() { )}
+ + ); From b15811bb47bc2cdb969aad1ee211a5792d381d4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Aaron?= Date: Thu, 13 Jun 2024 13:09:47 +0200 Subject: [PATCH 24/36] fix: decrease font size of lightning address --- frontend/src/components/AlbyConnectionCard.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/AlbyConnectionCard.tsx b/frontend/src/components/AlbyConnectionCard.tsx index fdecd74c5..0a35c9c96 100644 --- a/frontend/src/components/AlbyConnectionCard.tsx +++ b/frontend/src/components/AlbyConnectionCard.tsx @@ -50,7 +50,7 @@ function AlbyConnectionCard({ connection }: { connection?: App }) {
{albyMe?.name}
-
+
{albyMe?.lightning_address}
From 40f1a793895d77a83da3c3df37d8040280106c88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Aaron?= Date: Thu, 13 Jun 2024 13:30:41 +0200 Subject: [PATCH 25/36] fix: use correct separator component --- frontend/src/components/AlbyConnectionCard.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/AlbyConnectionCard.tsx b/frontend/src/components/AlbyConnectionCard.tsx index 0a35c9c96..5ef4388e4 100644 --- a/frontend/src/components/AlbyConnectionCard.tsx +++ b/frontend/src/components/AlbyConnectionCard.tsx @@ -1,5 +1,4 @@ import { Avatar, AvatarFallback, AvatarImage } from "@radix-ui/react-avatar"; -import { Separator } from "@radix-ui/react-dropdown-menu"; import { Progress } from "@radix-ui/react-progress"; import { CheckCircle2, @@ -21,6 +20,7 @@ import { CardTitle, } from "src/components/ui/card"; import { LoadingButton } from "src/components/ui/loading-button"; +import { Separator } from "src/components/ui/separator"; import { useAlbyMe } from "src/hooks/useAlbyMe"; import { LinkStatus, useLinkAccount } from "src/hooks/useLinkAccount"; import { App } from "src/types"; From 8237335ccfe6415a6b1d9f89f6d9d92a4a4b10c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Aaron?= <100827540+reneaaron@users.noreply.github.com> Date: Thu, 13 Jun 2024 14:27:05 +0200 Subject: [PATCH 26/36] feat: useravatar component (#442) Co-authored-by: im-adithya --- frontend/src/components/AlbyConnectionCard.tsx | 9 +++------ frontend/src/components/UserAvatar.tsx | 17 +++++++++++++++++ frontend/src/components/layouts/AppLayout.tsx | 16 +++------------- 3 files changed, 23 insertions(+), 19 deletions(-) create mode 100644 frontend/src/components/UserAvatar.tsx diff --git a/frontend/src/components/AlbyConnectionCard.tsx b/frontend/src/components/AlbyConnectionCard.tsx index 5ef4388e4..2cd813b9f 100644 --- a/frontend/src/components/AlbyConnectionCard.tsx +++ b/frontend/src/components/AlbyConnectionCard.tsx @@ -1,5 +1,3 @@ -import { Avatar, AvatarFallback, AvatarImage } from "@radix-ui/react-avatar"; -import { Progress } from "@radix-ui/react-progress"; import { CheckCircle2, CircleX, @@ -11,6 +9,7 @@ import { import { Link } from "react-router-dom"; import ExternalLink from "src/components/ExternalLink"; import Loading from "src/components/Loading"; +import UserAvatar from "src/components/UserAvatar"; import { Button } from "src/components/ui/button"; import { Card, @@ -20,6 +19,7 @@ import { CardTitle, } from "src/components/ui/card"; import { LoadingButton } from "src/components/ui/loading-button"; +import { Progress } from "src/components/ui/progress"; import { Separator } from "src/components/ui/separator"; import { useAlbyMe } from "src/hooks/useAlbyMe"; import { LinkStatus, useLinkAccount } from "src/hooks/useLinkAccount"; @@ -44,10 +44,7 @@ function AlbyConnectionCard({ connection }: { connection?: App }) {
- - - SN - +
{albyMe?.name}
diff --git a/frontend/src/components/UserAvatar.tsx b/frontend/src/components/UserAvatar.tsx new file mode 100644 index 000000000..909421a10 --- /dev/null +++ b/frontend/src/components/UserAvatar.tsx @@ -0,0 +1,17 @@ +import { Avatar, AvatarFallback, AvatarImage } from "src/components/ui/avatar"; +import { useAlbyMe } from "src/hooks/useAlbyMe"; + +function UserAvatar({ className }: { className?: string }) { + const { data: albyMe } = useAlbyMe(); + + return ( + + + + {(albyMe?.name || albyMe?.email || "SN").substring(0, 2).toUpperCase()} + + + ); +} + +export default UserAvatar; diff --git a/frontend/src/components/layouts/AppLayout.tsx b/frontend/src/components/layouts/AppLayout.tsx index 0e4b15dd1..260a06e8b 100644 --- a/frontend/src/components/layouts/AppLayout.tsx +++ b/frontend/src/components/layouts/AppLayout.tsx @@ -20,7 +20,7 @@ import { useNavigate, } from "react-router-dom"; import SidebarHint from "src/components/SidebarHint"; -import { Avatar, AvatarFallback, AvatarImage } from "src/components/ui/avatar"; +import UserAvatar from "src/components/UserAvatar"; import { Button } from "src/components/ui/button"; import { DropdownMenu, @@ -177,14 +177,7 @@ export default function AppLayout() {
- - - - {(albyMe?.name || albyMe?.email || "SN") - .substring(0, 2) - .toUpperCase()} - - + - - - SN - + From 7fe1843c57514116bb9cfe2d894ef2e306d840fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Aaron?= Date: Thu, 13 Jun 2024 15:20:50 +0200 Subject: [PATCH 27/36] fix: loading state in useLinkAccount --- frontend/src/hooks/useLinkAccount.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/hooks/useLinkAccount.ts b/frontend/src/hooks/useLinkAccount.ts index 9a19caaa1..6d66a8532 100644 --- a/frontend/src/hooks/useLinkAccount.ts +++ b/frontend/src/hooks/useLinkAccount.ts @@ -28,7 +28,7 @@ export function useLinkAccount() { } } - const loadingLinkStatus = !linkStatus; + const loadingLinkStatus = linkStatus === undefined; async function linkAccount() { try { From 782c44549d81a545f0cf3427ca065b291543ac24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Aaron?= Date: Thu, 13 Jun 2024 15:35:54 +0200 Subject: [PATCH 28/36] fix: button layout --- frontend/src/components/AlbyConnectionCard.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/AlbyConnectionCard.tsx b/frontend/src/components/AlbyConnectionCard.tsx index 2cd813b9f..5116441bb 100644 --- a/frontend/src/components/AlbyConnectionCard.tsx +++ b/frontend/src/components/AlbyConnectionCard.tsx @@ -79,9 +79,9 @@ function AlbyConnectionCard({ connection }: { connection?: App }) { )} - From 7a03f2a5b1a47618d65338d4864ae6493a1e52f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Aaron?= <100827540+reneaaron@users.noreply.github.com> Date: Thu, 13 Jun 2024 15:37:34 +0200 Subject: [PATCH 29/36] feat: breadcrumbs (#429) --- frontend/src/App.tsx | 147 +------- frontend/src/components/AppHeader.tsx | 18 +- frontend/src/components/Breadcrumbs.tsx | 70 ++++ frontend/src/routes.tsx | 322 ++++++++++++++++++ frontend/src/screens/channels/NewChannel.tsx | 21 -- frontend/src/screens/onchain/BuyBitcoin.tsx | 32 +- .../src/screens/onchain/DepositBitcoin.tsx | 21 -- frontend/src/screens/wallet/index.tsx | 1 - 8 files changed, 411 insertions(+), 221 deletions(-) create mode 100644 frontend/src/components/Breadcrumbs.tsx create mode 100644 frontend/src/routes.tsx diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 3e28a568f..63434df7b 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,156 +1,21 @@ -import { HashRouter, Navigate, Route, Routes } from "react-router-dom"; +import { RouterProvider, createHashRouter } from "react-router-dom"; -import AppLayout from "src/components/layouts/AppLayout"; -import { DefaultRedirect } from "src/components/redirects/DefaultRedirect"; -import { HomeRedirect } from "src/components/redirects/HomeRedirect"; -import { SetupRedirect } from "src/components/redirects/SetupRedirect"; -import { StartRedirect } from "src/components/redirects/StartRedirect"; import { ThemeProvider } from "src/components/ui/theme-provider"; -import { BackupMnemonic } from "src/screens/BackupMnemonic"; -import NotFound from "src/screens/NotFound"; -import Start from "src/screens/Start"; -import Unlock from "src/screens/Unlock"; -import { Welcome } from "src/screens/Welcome"; -import AppCreated from "src/screens/apps/AppCreated"; -import AppList from "src/screens/apps/AppList"; -import NewApp from "src/screens/apps/NewApp"; -import ShowApp from "src/screens/apps/ShowApp"; -import AppStore from "src/screens/appstore/AppStore"; -import Channels from "src/screens/channels/Channels"; -import NewChannel from "src/screens/channels/NewChannel"; -import MigrateAlbyFunds from "src/screens/onboarding/MigrateAlbyFunds"; -import DepositBitcoin from "src/screens/onchain/DepositBitcoin"; -import ConnectPeer from "src/screens/peers/ConnectPeer"; -import Settings from "src/screens/settings/Settings"; -import { ImportMnemonic } from "src/screens/setup/ImportMnemonic"; -import { SetupFinish } from "src/screens/setup/SetupFinish"; -import { SetupNode } from "src/screens/setup/SetupNode"; -import { SetupPassword } from "src/screens/setup/SetupPassword"; -import SignMessage from "src/screens/wallet/SignMessage"; import { usePosthog } from "./hooks/usePosthog"; -import SettingsLayout from "src/components/layouts/SettingsLayout"; -import TwoColumnFullScreenLayout from "src/components/layouts/TwoColumnFullScreenLayout"; -import { OnboardingRedirect } from "src/components/redirects/OnboardingRedirect"; import { Toaster } from "src/components/ui/toaster"; -import { BackupNode } from "src/screens/BackupNode"; -import { BackupNodeSuccess } from "src/screens/BackupNodeSuccess"; -import { Intro } from "src/screens/Intro"; -import AlbyAuthRedirect from "src/screens/alby/AlbyAuthRedirect"; -import { CurrentChannelOrder } from "src/screens/channels/CurrentChannelOrder"; -import { Success } from "src/screens/onboarding/Success"; -import BuyBitcoin from "src/screens/onchain/BuyBitcoin"; -import Peers from "src/screens/peers/Peers"; -import { ChangeUnlockPassword } from "src/screens/settings/ChangeUnlockPassword"; -import DebugTools from "src/screens/settings/DebugTools"; -import { RestoreNode } from "src/screens/setup/RestoreNode"; -import { SetupAdvanced } from "src/screens/setup/SetupAdvanced"; -import { BreezForm } from "src/screens/setup/node/BreezForm"; -import { CashuForm } from "src/screens/setup/node/CashuForm"; -import { GreenlightForm } from "src/screens/setup/node/GreenlightForm"; -import { LDKForm } from "src/screens/setup/node/LDKForm"; -import { LNDForm } from "src/screens/setup/node/LNDForm"; -import { PhoenixdForm } from "src/screens/setup/node/PhoenixdForm"; -import { PresetNodeForm } from "src/screens/setup/node/PresetNodeForm"; -import Wallet from "src/screens/wallet"; +import routes from "src/routes.tsx"; function App() { usePosthog(); + + const router = createHashRouter(routes); + return ( <> - - - } - /> - }> - } /> - }> - }> - } /> - } - /> - } /> - } /> - - - }> - } /> - } /> - - }> - } /> - - }> - } /> - } /> - } /> - } /> - - }> - } /> - - }> - } /> - } /> - } /> - } - /> - } /> - - }> - } /> - } /> - - - } /> - }> - - - - } - /> - } /> - } /> - } /> - }> - } /> - } /> - - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - - } /> - } /> - } /> - } /> - - }> - - } /> - - } /> - - - } /> - - + ); diff --git a/frontend/src/components/AppHeader.tsx b/frontend/src/components/AppHeader.tsx index 9d5cec875..a4e59af43 100644 --- a/frontend/src/components/AppHeader.tsx +++ b/frontend/src/components/AppHeader.tsx @@ -1,4 +1,5 @@ import { ReactElement } from "react"; +import Breadcrumbs from "src/components/Breadcrumbs"; type Props = { title: string | ReactElement; @@ -8,13 +9,18 @@ type Props = { function AppHeader({ title, description, contentRight }: Props) { return ( -
-
-

{title}

-

{description}

+ <> + +
+
+

{title}

+

+ {description} +

+
+
{contentRight}
-
{contentRight}
-
+ ); } diff --git a/frontend/src/components/Breadcrumbs.tsx b/frontend/src/components/Breadcrumbs.tsx new file mode 100644 index 000000000..ed0085df3 --- /dev/null +++ b/frontend/src/components/Breadcrumbs.tsx @@ -0,0 +1,70 @@ +import { Fragment } from "react"; +import { Link, useMatches } from "react-router-dom"; +import { + Breadcrumb, + BreadcrumbItem, + BreadcrumbLink, + BreadcrumbList, + BreadcrumbSeparator, +} from "src/components/ui/breadcrumb"; + +type MatchWithCrumb = { + pathname: string; + handle?: { + crumb?: () => React.ReactNode; + }; +}; + +function Breadcrumbs() { + const matches = useMatches() as MatchWithCrumb[]; // Type-cast useMatches result to MatchWithCrumb array + + const crumbs = matches + // First, get rid of any matches that don't have a handle or crumb + .filter( + ( + match + ): match is MatchWithCrumb & { + handle: { crumb: () => React.ReactNode }; + } => Boolean(match.handle?.crumb) + ); + + // Compare pathnames of index routes to remove duplicates + const isIndexRoute = + crumbs.length >= 2 && crumbs[crumbs.length - 1].pathname + ? crumbs[crumbs.length - 1].pathname.slice(0, -1) === + crumbs[crumbs.length - 2].pathname + : false; + + // Remove the last item if it's an index route to prevent e.g. Wallet > Wallet + const filteredCrumbs = isIndexRoute ? crumbs.slice(0, -1) : crumbs; + + // Don't render anything if there is only one item + if (filteredCrumbs.length < 2) { + return null; + } + + return ( + <> + + + {filteredCrumbs.map((crumb, index) => ( + + + {index + 1 < filteredCrumbs.length ? ( + + {crumb.handle.crumb()} + + ) : ( + <>{crumb.handle.crumb()} + )} + + {index + 1 < filteredCrumbs.length && } + + ))} + + + + ); +} + +export default Breadcrumbs; diff --git a/frontend/src/routes.tsx b/frontend/src/routes.tsx new file mode 100644 index 000000000..ab719334d --- /dev/null +++ b/frontend/src/routes.tsx @@ -0,0 +1,322 @@ +import { Navigate } from "react-router-dom"; +import AppLayout from "src/components/layouts/AppLayout"; +import SettingsLayout from "src/components/layouts/SettingsLayout"; +import TwoColumnFullScreenLayout from "src/components/layouts/TwoColumnFullScreenLayout"; +import { DefaultRedirect } from "src/components/redirects/DefaultRedirect"; +import { HomeRedirect } from "src/components/redirects/HomeRedirect"; +import { OnboardingRedirect } from "src/components/redirects/OnboardingRedirect"; +import { SetupRedirect } from "src/components/redirects/SetupRedirect"; +import { StartRedirect } from "src/components/redirects/StartRedirect"; +import { BackupMnemonic } from "src/screens/BackupMnemonic"; +import { BackupNode } from "src/screens/BackupNode"; +import { BackupNodeSuccess } from "src/screens/BackupNodeSuccess"; +import { Intro } from "src/screens/Intro"; +import NotFound from "src/screens/NotFound"; +import Start from "src/screens/Start"; +import Unlock from "src/screens/Unlock"; +import { Welcome } from "src/screens/Welcome"; +import AlbyAuthRedirect from "src/screens/alby/AlbyAuthRedirect"; +import AppCreated from "src/screens/apps/AppCreated"; +import AppList from "src/screens/apps/AppList"; +import NewApp from "src/screens/apps/NewApp"; +import ShowApp from "src/screens/apps/ShowApp"; +import AppStore from "src/screens/appstore/AppStore"; +import Channels from "src/screens/channels/Channels"; +import { CurrentChannelOrder } from "src/screens/channels/CurrentChannelOrder"; +import NewChannel from "src/screens/channels/NewChannel"; +import MigrateAlbyFunds from "src/screens/onboarding/MigrateAlbyFunds"; +import { Success } from "src/screens/onboarding/Success"; +import BuyBitcoin from "src/screens/onchain/BuyBitcoin"; +import DepositBitcoin from "src/screens/onchain/DepositBitcoin"; +import ConnectPeer from "src/screens/peers/ConnectPeer"; +import Peers from "src/screens/peers/Peers"; +import { ChangeUnlockPassword } from "src/screens/settings/ChangeUnlockPassword"; +import DebugTools from "src/screens/settings/DebugTools"; +import Settings from "src/screens/settings/Settings"; +import { ImportMnemonic } from "src/screens/setup/ImportMnemonic"; +import { RestoreNode } from "src/screens/setup/RestoreNode"; +import { SetupAdvanced } from "src/screens/setup/SetupAdvanced"; +import { SetupFinish } from "src/screens/setup/SetupFinish"; +import { SetupNode } from "src/screens/setup/SetupNode"; +import { SetupPassword } from "src/screens/setup/SetupPassword"; +import { BreezForm } from "src/screens/setup/node/BreezForm"; +import { CashuForm } from "src/screens/setup/node/CashuForm"; +import { GreenlightForm } from "src/screens/setup/node/GreenlightForm"; +import { LDKForm } from "src/screens/setup/node/LDKForm"; +import { LNDForm } from "src/screens/setup/node/LNDForm"; +import { PhoenixdForm } from "src/screens/setup/node/PhoenixdForm"; +import { PresetNodeForm } from "src/screens/setup/node/PresetNodeForm"; +import Wallet from "src/screens/wallet"; +import SignMessage from "src/screens/wallet/SignMessage"; + +const routes = [ + { + path: "/", + element: , + handle: { crumb: () => "Home" }, + children: [ + { + index: true, + element: , + }, + { + path: "wallet", + element: , + handle: { crumb: () => "Wallet" }, + children: [ + { + index: true, + element: , + }, + { + path: "sign-message", + element: , + handle: { crumb: () => "Sign Message" }, + }, + ], + }, + { + path: "settings", + element: , + handle: { crumb: () => "Settings" }, + children: [ + { + index: true, + element: , + }, + { + path: "change-unlock-password", + element: , + handle: { crumb: () => "Unlock Password" }, + }, + { + path: "key-backup", + element: , + handle: { crumb: () => "Key Backup" }, + }, + { + path: "node-backup", + element: , + }, + ], + }, + { + path: "apps", + element: , + handle: { crumb: () => "Connections" }, + children: [ + { + index: true, + element: , + }, + + { + path: ":pubkey", + element: , + }, + { + path: "new", + element: , + handle: { crumb: () => "New App" }, + }, + { + path: "created", + element: , + }, + ], + }, + { + path: "appstore", + element: , + handle: { crumb: () => "App Store" }, + children: [ + { + index: true, + element: , + }, + ], + }, + { + path: "channels", + element: , + handle: { crumb: () => "Liquidity" }, + children: [ + { + index: true, + element: , + }, + { + path: "new", + element: , + handle: { crumb: () => "New Channel" }, + }, + { + path: "order", + element: , + handle: { crumb: () => "Current Order" }, + }, + { + path: "onchain/buy-bitcoin", + element: , + handle: { crumb: () => "Buy Bitcoin" }, + }, + { + path: "onchain/deposit-bitcoin", + element: , + handle: { crumb: () => "Deposit Bitcoin" }, + }, + ], + }, + { + path: "peers", + element: , + handle: { crumb: () => "Peers" }, + children: [ + { + index: true, + element: , + }, + { + path: "new", + element: , + handle: { crumb: () => "Connect Peer" }, + }, + ], + }, + { + path: "debug-tools", + element: , + handle: { crumb: () => "Debug" }, + children: [ + { + index: true, + element: , + }, + ], + }, + ], + }, + { + element: , + children: [ + { + path: "start", + element: ( + + + + ), + }, + { + path: "alby/auth", + element: , + }, + { + path: "unlock", + element: , + }, + { + path: "welcome", + element: , + }, + { + path: "setup", + element: , + children: [ + { + element: , + }, + { + path: "password", + element: , + }, + { + path: "node", + children: [ + { + index: true, + element: , + }, + { + path: "breez", + element: , + }, + { + path: "greenlight", + element: , + }, + { + path: "cashu", + element: , + }, + { + path: "phoenix", + element: , + }, + { + path: "lnd", + element: , + }, + { + path: "ldk", + element: , + }, + { + path: "preset", + element: , + }, + ], + }, + { + path: "advanced", + element: , + }, + { + path: "import-mnemonic", + element: , + }, + { + path: "node-restore", + element: , + }, + { + path: "finish", + element: , + }, + ], + }, + { + path: "onboarding", + element: , + children: [ + { + path: "lightning/migrate-alby", + element: , + }, + { + path: "success", + element: , + }, + ], + }, + { + path: "alby/auth", + element: , + }, + ], + }, + { + path: "node-backup-success", + element: , + }, + { + path: "intro", + element: , + }, + { + path: "/*", + element: , + }, +]; + +export default routes; diff --git a/frontend/src/screens/channels/NewChannel.tsx b/frontend/src/screens/channels/NewChannel.tsx index 5f623e69a..bcec51635 100644 --- a/frontend/src/screens/channels/NewChannel.tsx +++ b/frontend/src/screens/channels/NewChannel.tsx @@ -4,14 +4,6 @@ import { Link, useNavigate } from "react-router-dom"; import AppHeader from "src/components/AppHeader"; import ExternalLink from "src/components/ExternalLink"; import Loading from "src/components/Loading"; -import { - Breadcrumb, - BreadcrumbItem, - BreadcrumbLink, - BreadcrumbList, - BreadcrumbPage, - BreadcrumbSeparator, -} from "src/components/ui/breadcrumb"; import { Button } from "src/components/ui/button"; import { Checkbox } from "src/components/ui/checkbox"; import { Input } from "src/components/ui/input"; @@ -151,19 +143,6 @@ function NewChannelInternal({ network }: { network: Network }) { return ( <> - - - - - Liquidity - - - - - Open Channel - - - - - - - - Liquidity - - - - - - - Deposit Bitcoin - - - - - - Buy Bitcoin - - -

- How much bitcoin you’d like buy? + How much bitcoin would you like to buy?

diff --git a/frontend/src/screens/onchain/DepositBitcoin.tsx b/frontend/src/screens/onchain/DepositBitcoin.tsx index 480936671..9c9d2a228 100644 --- a/frontend/src/screens/onchain/DepositBitcoin.tsx +++ b/frontend/src/screens/onchain/DepositBitcoin.tsx @@ -3,14 +3,6 @@ import QRCode from "react-qr-code"; import { Link } from "react-router-dom"; import AppHeader from "src/components/AppHeader"; import Loading from "src/components/Loading"; -import { - Breadcrumb, - BreadcrumbItem, - BreadcrumbLink, - BreadcrumbList, - BreadcrumbPage, - BreadcrumbSeparator, -} from "src/components/ui/breadcrumb"; import { Button } from "src/components/ui/button"; import { Card, CardContent } from "src/components/ui/card"; import { LoadingButton } from "src/components/ui/loading-button"; @@ -35,19 +27,6 @@ export default function DepositBitcoin() { return (
- - - - - Liquidity - - - - - Deposit Bitcoin - - - -
{new Intl.NumberFormat().format( From 875ed2f938bdd72f0d021557c22e79451f85d9bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Aaron?= <100827540+reneaaron@users.noreply.github.com> Date: Thu, 13 Jun 2024 16:39:04 +0200 Subject: [PATCH 30/36] fix: improve auth code screen (#437) --- frontend/src/components/AuthCodeForm.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/AuthCodeForm.tsx b/frontend/src/components/AuthCodeForm.tsx index ff2cdcf17..138125a6f 100644 --- a/frontend/src/components/AuthCodeForm.tsx +++ b/frontend/src/components/AuthCodeForm.tsx @@ -61,12 +61,14 @@ function AuthCodeForm() {
{!hasRequestedCode && ( <> - + )} {hasRequestedCode && ( From 1dface90b8e73aba6768a79744a2670b9982c9ec Mon Sep 17 00:00:00 2001 From: Adithya Vardhan Date: Thu, 13 Jun 2024 20:55:15 +0530 Subject: [PATCH 31/36] fix: copy to clipboard on non-https sites (#440) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: René Aaron --- frontend/src/lib/clipboard.ts | 51 +++++++++++++++++++++++++---------- 1 file changed, 37 insertions(+), 14 deletions(-) diff --git a/frontend/src/lib/clipboard.ts b/frontend/src/lib/clipboard.ts index e12a4ca11..a35baa500 100644 --- a/frontend/src/lib/clipboard.ts +++ b/frontend/src/lib/clipboard.ts @@ -1,20 +1,43 @@ import { toast } from "src/components/ui/use-toast"; -export function copyToClipboard(content: string) { - if (navigator.clipboard && window.isSecureContext) { - navigator.clipboard.writeText(content); - } else { - // Fallback for older browsers - const textArea = document.createElement("textarea"); - textArea.value = content; - textArea.style.position = "absolute"; - textArea.style.opacity = "0"; - document.body.appendChild(textArea); - textArea.select(); - new Promise((res, rej) => { - document.execCommand("copy") ? res(content) : rej(); +export async function copyToClipboard(content: string) { + const copyPromise = new Promise((resolve, reject) => { + if (navigator.clipboard && window.isSecureContext) { + navigator.clipboard.writeText(content).then(resolve).catch(reject); + } else { + // Fallback for older browsers + const textArea = document.createElement("textarea"); + textArea.value = content; + textArea.style.position = "absolute"; + textArea.style.opacity = "0"; + document.body.appendChild(textArea); + selectElement(textArea); + if (document.execCommand("copy")) { + resolve(content); + } else { + reject(); + } textArea.remove(); + } + }); + + try { + await copyPromise; + toast({ title: "Copied to clipboard." }); + } catch (e) { + toast({ + title: "Failed to copy to clipboard.", + variant: "destructive", }); } - toast({ title: "Copied to clipboard." }); +} + +function selectElement(element: Element) { + const selection = window.getSelection(); + if (selection) { + selection.removeAllRanges(); + const range = document.createRange(); + range.selectNode(element); + selection.addRange(range); + } } From 1e0189917f0eefa780af41e9f6e842edba7070da Mon Sep 17 00:00:00 2001 From: Adithya Vardhan Date: Thu, 13 Jun 2024 20:56:04 +0530 Subject: [PATCH 32/36] fix: hide checklist by default (#443) --- frontend/src/screens/wallet/OnboardingChecklist.tsx | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/frontend/src/screens/wallet/OnboardingChecklist.tsx b/frontend/src/screens/wallet/OnboardingChecklist.tsx index 1b0fec0d7..3af1fb638 100644 --- a/frontend/src/screens/wallet/OnboardingChecklist.tsx +++ b/frontend/src/screens/wallet/OnboardingChecklist.tsx @@ -22,12 +22,20 @@ function OnboardingChecklist() { const { data: info, hasChannelManagement, hasMnemonic } = useInfo(); const { data: nodeConnectionInfo } = useNodeConnectionInfo(); + const isLoading = + !albyMe || !apps || !channels || !info || !nodeConnectionInfo; + + if (isLoading) { + return; + } + /*const hasAlbyBalance = hasChannelManagement && albyBalance && albyBalance.sats * (1 - ALBY_SERVICE_FEE) > ALBY_MIN_BALANCE + 50000; // accommodate for on-chain fees */ + const isLinked = albyMe && nodeConnectionInfo && @@ -41,6 +49,10 @@ function OnboardingChecklist() { const hasCustomApp = apps && apps.find((x) => x.name !== "getalby.com") !== undefined; + if (isLinked && hasChannel && (!hasMnemonic || hasBackedUp) && hasCustomApp) { + return; + } + const checklistItems = [ { title: "Open your first channel", From 7006f01eb583aad5108e4188d4ef3098118b09a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Aaron?= Date: Fri, 14 Jun 2024 07:43:49 +0200 Subject: [PATCH 33/36] fix: use qr code component --- frontend/src/screens/onchain/DepositBitcoin.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/screens/onchain/DepositBitcoin.tsx b/frontend/src/screens/onchain/DepositBitcoin.tsx index 9c9d2a228..ee6f00487 100644 --- a/frontend/src/screens/onchain/DepositBitcoin.tsx +++ b/frontend/src/screens/onchain/DepositBitcoin.tsx @@ -1,8 +1,8 @@ import { Copy, CreditCard, RefreshCw } from "lucide-react"; -import QRCode from "react-qr-code"; import { Link } from "react-router-dom"; import AppHeader from "src/components/AppHeader"; import Loading from "src/components/Loading"; +import QRCode from "src/components/QRCode"; import { Button } from "src/components/ui/button"; import { Card, CardContent } from "src/components/ui/card"; import { LoadingButton } from "src/components/ui/loading-button"; From 487848f71eaccfed6e1f097a40285824e648b5a5 Mon Sep 17 00:00:00 2001 From: Michael Bumann Date: Fri, 14 Jun 2024 19:12:22 +0300 Subject: [PATCH 34/36] fix: custom mint config (#447) --- api/api.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/api/api.go b/api/api.go index afcfb9656..2cc11fa61 100644 --- a/api/api.go +++ b/api/api.go @@ -606,6 +606,10 @@ func (api *api) Setup(ctx context.Context, setupRequest *SetupRequest) error { api.svc.GetConfig().SetUpdate("PhoenixdAuthorization", setupRequest.PhoenixdAuthorization, setupRequest.UnlockPassword) } + if setupRequest.CashuMintUrl != "" { + api.svc.GetConfig().SetUpdate("CashuMintUrl", setupRequest.CashuMintUrl, setupRequest.UnlockPassword) + } + return nil } From 65f334b50a18c686c5fbbff8c8483d2f4cc51230 Mon Sep 17 00:00:00 2001 From: Roland <33993199+rolznz@users.noreply.github.com> Date: Fri, 14 Jun 2024 23:28:49 +0700 Subject: [PATCH 35/36] feat: add ldk custom tlvs to metadata custom records (#445) --- go.mod | 2 +- go.sum | 4 ++-- lnclient/ldk/ldk.go | 13 ++++++++++--- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 039b4f66b..91436de42 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/davrux/echo-logrus/v4 v4.0.3 github.com/elnosh/gonuts v0.1.1-0.20240602162005-49da741613e4 github.com/getAlby/glalby-go v0.0.0-20240416174357-e6e2faa2fbd8 - github.com/getAlby/ldk-node-go v0.0.0-20240613043419-a3ae86f6a26d + github.com/getAlby/ldk-node-go v0.0.0-20240614062656-d4de573a1996 github.com/go-gormigrate/gormigrate/v2 v2.1.1 github.com/gorilla/sessions v1.2.2 github.com/labstack/echo-contrib v0.14.1 diff --git a/go.sum b/go.sum index 690efc19e..09aa7378c 100644 --- a/go.sum +++ b/go.sum @@ -188,8 +188,8 @@ github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwV github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/getAlby/glalby-go v0.0.0-20240416174357-e6e2faa2fbd8 h1:mJsdhUb8hmSSSLR2GQFw9BGtnJP7xmKB/XQxDt3DvAo= github.com/getAlby/glalby-go v0.0.0-20240416174357-e6e2faa2fbd8/go.mod h1:ViyJvjlvv0GCesTJ7mb3fBo4G+/qsujDAFN90xZ7a9U= -github.com/getAlby/ldk-node-go v0.0.0-20240613043419-a3ae86f6a26d h1:pj+/wYZ3TFzJt2fGQaf7naAqWluR0HlzLGNFAiwoe3g= -github.com/getAlby/ldk-node-go v0.0.0-20240613043419-a3ae86f6a26d/go.mod h1:8BRjtKcz8E0RyYTPEbMS8VIdgredcGSLne8vHDtcRLg= +github.com/getAlby/ldk-node-go v0.0.0-20240614062656-d4de573a1996 h1:UULF8HX3z0kxgppzDX67oG/7t1Es+tpZogqtsYsguX0= +github.com/getAlby/ldk-node-go v0.0.0-20240614062656-d4de573a1996/go.mod h1:8BRjtKcz8E0RyYTPEbMS8VIdgredcGSLne8vHDtcRLg= github.com/getsentry/raven-go v0.2.0 h1:no+xWJRb5ZI7eE8TWgIq1jLulQiIoLG0IfYxv5JYMGs= github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= diff --git a/lnclient/ldk/ldk.go b/lnclient/ldk/ldk.go index ba512188e..2e8f37654 100644 --- a/lnclient/ldk/ldk.go +++ b/lnclient/ldk/ldk.go @@ -17,6 +17,8 @@ import ( "github.com/getAlby/ldk-node-go/ldk_node" // "github.com/getAlby/nostr-wallet-connect/ldk_node" + b64 "encoding/base64" + decodepay "github.com/nbd-wtf/ln-decodepay" "github.com/sirupsen/logrus" @@ -964,6 +966,7 @@ func (ls *LDKService) ldkPaymentToTransaction(payment *ldk_node.PaymentDetails) var settledAt *int64 preimage := "" paymentHash := "" + metadata := map[string]interface{}{} bolt11PaymentKind, isBolt11PaymentKind := payment.Kind.(ldk_node.PaymentKindBolt11) @@ -998,10 +1001,8 @@ func (ls *LDKService) ldkPaymentToTransaction(payment *ldk_node.PaymentDetails) spontaneousPaymentKind, isSpontaneousPaymentKind := payment.Kind.(ldk_node.PaymentKindSpontaneous) if isSpontaneousPaymentKind { // keysend payment - // currently no access to created at or the TLVs to get the description - // TODO: store these in NWC database lastUpdate := int64(payment.LastUpdate) - // TODO: use proper created at time + // TODO: use proper created at time (currently no access to created time for keysend payments) createdAt = lastUpdate if payment.Status == ldk_node.PaymentStatusSucceeded { settledAt = &lastUpdate @@ -1010,6 +1011,11 @@ func (ls *LDKService) ldkPaymentToTransaction(payment *ldk_node.PaymentDetails) if spontaneousPaymentKind.Preimage != nil { preimage = *spontaneousPaymentKind.Preimage } + customRecords := map[string]string{} + for _, tlv := range spontaneousPaymentKind.CustomTlvs { + customRecords[strconv.FormatUint(tlv.Type, 10)] = b64.StdEncoding.EncodeToString(tlv.Value) + } + metadata["custom_records"] = customRecords } var amount uint64 = 0 @@ -1034,6 +1040,7 @@ func (ls *LDKService) ldkPaymentToTransaction(payment *ldk_node.PaymentDetails) Description: description, DescriptionHash: descriptionHash, ExpiresAt: expiresAt, + Metadata: metadata, }, nil } From a7ddb6d31d0227dc460b5c5cd78f3422e5bcef3b Mon Sep 17 00:00:00 2001 From: Roland <33993199+rolznz@users.noreply.github.com> Date: Sat, 15 Jun 2024 13:42:12 +0700 Subject: [PATCH 36/36] fix: respect LSPS1 channel max expiry blocks (#449) --- lsp/lsp_service.go | 45 +++++++++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/lsp/lsp_service.go b/lsp/lsp_service.go index b4ea78d86..15479a5cb 100644 --- a/lsp/lsp_service.go +++ b/lsp/lsp_service.go @@ -23,10 +23,11 @@ type lspService struct { logger *logrus.Logger } -type lspConnectionInfo struct { - Pubkey string - Address string - Port uint16 +type lspInfo struct { + Pubkey string + Address string + Port uint16 + MaxChannelExpiryBlocks uint64 } func NewLSPService(svc service.Service, logger *logrus.Logger) *lspService { @@ -69,7 +70,7 @@ func (ls *lspService) NewInstantChannelInvoice(ctx context.Context, request *New ls.logger.Infoln("Requesting LSP info") - var lspInfo *lspConnectionInfo + var lspInfo *lspInfo var err error switch selectedLsp.LspType { case LSP_TYPE_FLOW_2_0: @@ -120,7 +121,7 @@ func (ls *lspService) NewInstantChannelInvoice(ctx context.Context, request *New case LSP_TYPE_PMLSP: invoice, fee, err = ls.requestPMLSPInvoice(&selectedLsp, request.Amount, nodeInfo.Pubkey) case LSP_TYPE_LSPS1: - invoice, fee, err = ls.requestLSPS1Invoice(ctx, &selectedLsp, request.Amount, nodeInfo.Pubkey, request.Public) + invoice, fee, err = ls.requestLSPS1Invoice(ctx, &selectedLsp, request.Amount, nodeInfo.Pubkey, request.Public, lspInfo.MaxChannelExpiryBlocks) default: return nil, fmt.Errorf("unsupported LSP type: %v", selectedLsp.LspType) @@ -142,13 +143,16 @@ func (ls *lspService) NewInstantChannelInvoice(ctx context.Context, request *New return newChannelResponse, nil } -func (ls *lspService) getLSPS1LSPInfo(url string) (*lspConnectionInfo, error) { - type LSPS1LSPInfo struct { - // TODO: implement options - Options interface{} `json:"options"` - URIs []string `json:"uris"` +func (ls *lspService) getLSPS1LSPInfo(url string) (*lspInfo, error) { + + type lsps1LSPInfoOptions struct { + MaxChannelExpiryBlocks uint64 `json:"max_channel_expiry_blocks"` + } + type lsps1LSPInfo struct { + Options lsps1LSPInfoOptions `json:"options"` + URIs []string `json:"uris"` } - var lsps1LspInfo LSPS1LSPInfo + var lsps1LspInfo lsps1LSPInfo client := http.Client{ Timeout: time.Second * 10, } @@ -204,13 +208,14 @@ func (ls *lspService) getLSPS1LSPInfo(url string) (*lspConnectionInfo, error) { return nil, err } - return &lspConnectionInfo{ - Pubkey: parts[1], - Address: parts[2], - Port: uint16(port), + return &lspInfo{ + Pubkey: parts[1], + Address: parts[2], + Port: uint16(port), + MaxChannelExpiryBlocks: lsps1LspInfo.Options.MaxChannelExpiryBlocks, }, nil } -func (ls *lspService) getFlowLSPInfo(url string) (*lspConnectionInfo, error) { +func (ls *lspService) getFlowLSPInfo(url string) (*lspInfo, error) { type FlowLSPConnectionMethod struct { Address string `json:"address"` Port uint16 `json:"port"` @@ -271,7 +276,7 @@ func (ls *lspService) getFlowLSPInfo(url string) (*lspConnectionInfo, error) { return nil, errors.New("unexpected LSP connection method") } - return &lspConnectionInfo{ + return &lspInfo{ Pubkey: flowLspInfo.Pubkey, Address: flowLspInfo.ConnectionMethods[ipIndex].Address, Port: flowLspInfo.ConnectionMethods[ipIndex].Port, @@ -520,7 +525,7 @@ func (ls *lspService) requestPMLSPInvoice(selectedLsp *LSP, amount uint64, pubke return invoice, fee, nil } -func (ls *lspService) requestLSPS1Invoice(ctx context.Context, selectedLsp *LSP, amount uint64, pubkey string, public bool) (invoice string, fee uint64, err error) { +func (ls *lspService) requestLSPS1Invoice(ctx context.Context, selectedLsp *LSP, amount uint64, pubkey string, public bool, channelExpiryBlocks uint64) (invoice string, fee uint64, err error) { client := http.Client{ Timeout: time.Second * 10, } @@ -557,7 +562,7 @@ func (ls *lspService) requestLSPS1Invoice(ctx context.Context, selectedLsp *LSP, ClientBalanceSat: "0", RequiredChannelConfirmations: requiredChannelConfirmations, FundingConfirmsWithinBlocks: 6, - ChannelExpiryBlocks: 13000, // TODO: this should be customizable + ChannelExpiryBlocks: channelExpiryBlocks, Token: "", RefundOnchainAddress: refundAddress, AnnounceChannel: public,

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ξGLkUz|9|mnA`=@XwSMOiHQwCu#){3i?YVH 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 Y0l?NRf^6ZT8~^|S07*qoM6N<$f+{Vsxc~qF diff --git a/build/darwin/Info.dev.plist b/build/darwin/Info.dev.plist new file mode 100644 index 000000000..836d49860 --- /dev/null +++ b/build/darwin/Info.dev.plist @@ -0,0 +1,68 @@ + + + + CFBundlePackageType + APPL + CFBundleName + {{.Info.ProductName}} + CFBundleExecutable + {{.Name}} + CFBundleIdentifier + com.getalby.{{.Name}} + CFBundleVersion + {{.Info.ProductVersion}} + CFBundleGetInfoString + {{.Info.Comments}} + CFBundleShortVersionString + {{.Info.ProductVersion}} + CFBundleIconFile + iconfile + LSMinimumSystemVersion + 10.13.0 + NSHighResolutionCapable + true + NSHumanReadableCopyright + {{.Info.Copyright}} + {{if .Info.FileAssociations}} + CFBundleDocumentTypes + + {{range .Info.FileAssociations}} + + CFBundleTypeExtensions + + {{.Ext}} + + CFBundleTypeName + {{.Name}} + CFBundleTypeRole + {{.Role}} + CFBundleTypeIconFile + {{.IconName}} + + {{end}} + + {{end}} + {{if .Info.Protocols}} + CFBundleURLTypes + + {{range .Info.Protocols}} + + CFBundleURLName + com.getalby.{{.Scheme}} + CFBundleURLSchemes + + {{.Scheme}} + + CFBundleTypeRole + {{.Role}} + + {{end}} + + {{end}} + NSAppTransportSecurity + + NSAllowsLocalNetworking + + + + diff --git a/build/darwin/Info.plist b/build/darwin/Info.plist new file mode 100644 index 000000000..ceaced927 --- /dev/null +++ b/build/darwin/Info.plist @@ -0,0 +1,63 @@ + + + + CFBundlePackageType + APPL + CFBundleName + {{.Info.ProductName}} + CFBundleExecutable + {{.Name}} + CFBundleIdentifier + com.getalby.{{.Name}} + CFBundleVersion + {{.Info.ProductVersion}} + CFBundleGetInfoString + {{.Info.Comments}} + CFBundleShortVersionString + {{.Info.ProductVersion}} + CFBundleIconFile + iconfile + LSMinimumSystemVersion + 10.13.0 + NSHighResolutionCapable + true + NSHumanReadableCopyright + {{.Info.Copyright}} + {{if .Info.FileAssociations}} + CFBundleDocumentTypes + + {{range .Info.FileAssociations}} + + CFBundleTypeExtensions + + {{.Ext}} + + CFBundleTypeName + {{.Name}} + CFBundleTypeRole + {{.Role}} + CFBundleTypeIconFile + {{.IconName}} + + {{end}} + + {{end}} + {{if .Info.Protocols}} + CFBundleURLTypes + + {{range .Info.Protocols}} + + CFBundleURLName + com.getalby.{{.Scheme}} + CFBundleURLSchemes + + {{.Scheme}} + + CFBundleTypeRole + {{.Role}} + + {{end}} + + {{end}} + + diff --git a/build/darwin/dmgcover.png b/build/darwin/dmgcover.png new file mode 100644 index 0000000000000000000000000000000000000000..1c83e2dcf338877d446a610df716638f85ae894c GIT binary patch literal 162557 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 literal 0 HcmV?d00001 diff --git a/build/darwin/entitlements.plist b/build/darwin/entitlements.plist new file mode 100644 index 000000000..d415eaaed --- /dev/null +++ b/build/darwin/entitlements.plist @@ -0,0 +1,16 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.network.client + + com.apple.security.network.server + + com.apple.security.files.user-selected.read-write + + com.apple.security.files.downloads.read-write + + + diff --git a/build/darwin/gon-notarize.json b/build/darwin/gon-notarize.json new file mode 100644 index 000000000..a44abc20f --- /dev/null +++ b/build/darwin/gon-notarize.json @@ -0,0 +1,8 @@ +{ + "notarize": [ + { + "path": "./build/bin/albyhub-macOS.dmg", + "bundle_id": "com.getalby.AlbyHub" + } + ] +} diff --git a/build/darwin/gon-sign.json b/build/darwin/gon-sign.json new file mode 100644 index 000000000..7f1f7a7ef --- /dev/null +++ b/build/darwin/gon-sign.json @@ -0,0 +1,13 @@ +{ + "source": [ + "./build/bin/AlbyHub.app", + "./build/bin/AlbyHub.app/Contents/MacOS/AlbyHub", + "./build/bin/AlbyHub.app/Contents/Frameworks/libbreez_sdk_bindings.dylib", + "./build/bin/AlbyHub.app/Contents/Frameworks/libglalby_bindings.dylib" + ], + "bundle_id": "com.getalby.AlbyHub", + "sign": { + "application_identity": "Developer ID Application: Alby Inc.", + "entitlements_file": "./build/darwin/entitlements.plist" + } +} From 9b330612b0c6b1e61737e51efb32f502568c4f64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Aaron?= <100827540+reneaaron@users.noreply.github.com> Date: Mon, 10 Jun 2024 09:20:17 +0200 Subject: [PATCH 02/36] feat: node selection (#387) Co-authored-by: Roland Bewick --- frontend/src/App.tsx | 22 +- frontend/src/assets/images/node/cashu.png | Bin 0 -> 1035 bytes frontend/src/assets/images/node/lnd.png | Bin 0 -> 597 bytes frontend/src/components/icons/Breez.tsx | 10 + frontend/src/components/icons/Greenlight.tsx | 9 + frontend/src/components/icons/LDK.tsx | 9 + frontend/src/components/icons/Phoenixd.tsx | 10 + frontend/src/screens/Intro.tsx | 8 +- frontend/src/screens/Welcome.tsx | 27 +- frontend/src/screens/setup/ImportMnemonic.tsx | 13 +- frontend/src/screens/setup/RestoreNode.tsx | 10 +- frontend/src/screens/setup/SetupAdvanced.tsx | 35 ++ frontend/src/screens/setup/SetupNode.tsx | 403 ++++-------------- frontend/src/screens/setup/SetupPassword.tsx | 49 +-- frontend/src/screens/setup/SetupWallet.tsx | 73 ---- frontend/src/screens/setup/node/BreezForm.tsx | 77 ++++ frontend/src/screens/setup/node/CashuForm.tsx | 61 +++ .../src/screens/setup/node/GreenlightForm.tsx | 62 +++ frontend/src/screens/setup/node/LDKForm.tsx | 28 ++ frontend/src/screens/setup/node/LNDForm.tsx | 90 ++++ .../src/screens/setup/node/PhoenixdForm.tsx | 75 ++++ .../src/screens/setup/node/PresetNodeForm.tsx | 31 ++ 22 files changed, 649 insertions(+), 453 deletions(-) create mode 100644 frontend/src/assets/images/node/cashu.png create mode 100644 frontend/src/assets/images/node/lnd.png create mode 100644 frontend/src/components/icons/Breez.tsx create mode 100644 frontend/src/components/icons/Greenlight.tsx create mode 100644 frontend/src/components/icons/LDK.tsx create mode 100644 frontend/src/components/icons/Phoenixd.tsx create mode 100644 frontend/src/screens/setup/SetupAdvanced.tsx delete mode 100644 frontend/src/screens/setup/SetupWallet.tsx create mode 100644 frontend/src/screens/setup/node/BreezForm.tsx create mode 100644 frontend/src/screens/setup/node/CashuForm.tsx create mode 100644 frontend/src/screens/setup/node/GreenlightForm.tsx create mode 100644 frontend/src/screens/setup/node/LDKForm.tsx create mode 100644 frontend/src/screens/setup/node/LNDForm.tsx create mode 100644 frontend/src/screens/setup/node/PhoenixdForm.tsx create mode 100644 frontend/src/screens/setup/node/PresetNodeForm.tsx diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 8acb296d3..4b67ca7fd 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -26,7 +26,6 @@ import { ImportMnemonic } from "src/screens/setup/ImportMnemonic"; import { SetupFinish } from "src/screens/setup/SetupFinish"; import { SetupNode } from "src/screens/setup/SetupNode"; import { SetupPassword } from "src/screens/setup/SetupPassword"; -import { SetupWallet } from "src/screens/setup/SetupWallet"; import Wallet from "src/screens/wallet"; import SignMessage from "src/screens/wallet/SignMessage"; import { usePosthog } from "./hooks/usePosthog"; @@ -45,6 +44,14 @@ import Peers from "src/screens/peers/Peers"; import { ChangeUnlockPassword } from "src/screens/settings/ChangeUnlockPassword"; import DebugTools from "src/screens/settings/DebugTools"; import { RestoreNode } from "src/screens/setup/RestoreNode"; +import { SetupAdvanced } from "src/screens/setup/SetupAdvanced"; +import { BreezForm } from "src/screens/setup/node/BreezForm"; +import { CashuForm } from "src/screens/setup/node/CashuForm"; +import { GreenlightForm } from "src/screens/setup/node/GreenlightForm"; +import { LDKForm } from "src/screens/setup/node/LDKForm"; +import { LNDForm } from "src/screens/setup/node/LNDForm"; +import { PhoenixdForm } from "src/screens/setup/node/PhoenixdForm"; +import { PresetNodeForm } from "src/screens/setup/node/PresetNodeForm"; function App() { usePosthog(); @@ -117,8 +124,17 @@ function App() { }> } /> } /> - } /> - } /> + + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + } /> } /> } /> } /> diff --git a/frontend/src/assets/images/node/cashu.png b/frontend/src/assets/images/node/cashu.png new file mode 100644 index 0000000000000000000000000000000000000000..b86012b325416ac9de90700163e9c942c1e32759 GIT binary patch literal 1035 zcmV+m1oZofP)6eJ-bF(JXpMa0B~IM{@^I8cyP0~0L9 zHY^Sev1}SGHh#%}|HnP|yuS0FD^U*g_xJ00vd3bv+ma+% zudc3iJQwo#%4Z>--}8Hy)9DOm(;;O#92y!joSvS(WCc)OME?NGIe8k-WGKx*UtiyY zf`Wp#EiEnZp6crAsIsy$O{vG@p+F#z*s~*H9#7vflyYk2#%{MiD=RB|)6mdxjR%#N zms4$RE$MVRDlRTg8Y~CTX?J&5jzY`hepgqQT zfRn|=MOs~5rCeYqj2b59E^-XG-ELZ1S|X#-NON;@3Bi$(5pp;js4xnJLgaF}#Cdyr zJ29zQ4RAFMt2;V6CU|YZL2GL(?d|P}NSd0OgonMoy(j>RL?X1Yu^|*fMz7aXcXxNj z2xUkBmu8sPCOJjb)z!4Wzb{GY>J?gf$wqJZRALHQQ;6MyCGqec^%O7wnp`)WC zLAKJ!_VzY~!(lo(IS~=Tp`D!_@t*bCRI{_QUwG}JJb_dw(~u49*oUd9sc(WkCh`&I z*~cN3!%NgV@{LLX$;z-13DT7bh+KgucnH>(mzV!=cu`*7fr9h%a}g@;1Pr0M#l1=x zNgYV-`uaKrgF)iI;n?)_^nAhqz(0x4+%}-32V^3@C`UO0R1y?n&NTdfKW%Pqf~V&* zGczv|sY(qKe>I-QIqP)U-KM3Lgh zcJsRw_1g1Z?hUijEA+y{dB30Yp2ImBx7+=|7@Gy|6N$ts>yc0>w5-?bW2B3s=nV#g z*GeoNk1uz-T`6WZo0(3hQ$ix}g4ns!={)0LSOE(hQ>;&t$)vT}Y+5MJaaOl}hiNRnv!6H45OeXVd4vtXji%G>X#c4De=R6+IT3_NK zlD-xD{r-qh;i literal 0 HcmV?d00001 diff --git a/frontend/src/components/icons/Breez.tsx b/frontend/src/components/icons/Breez.tsx new file mode 100644 index 000000000..7f026776e --- /dev/null +++ b/frontend/src/components/icons/Breez.tsx @@ -0,0 +1,10 @@ +export const BreezIcon = () => { + return ( + + + + ); +}; diff --git a/frontend/src/components/icons/Greenlight.tsx b/frontend/src/components/icons/Greenlight.tsx new file mode 100644 index 000000000..0d963a342 --- /dev/null +++ b/frontend/src/components/icons/Greenlight.tsx @@ -0,0 +1,9 @@ +export const GreenlightIcon = () => { + return ( + + + + + + ); +}; diff --git a/frontend/src/components/icons/LDK.tsx b/frontend/src/components/icons/LDK.tsx new file mode 100644 index 000000000..2770bfc08 --- /dev/null +++ b/frontend/src/components/icons/LDK.tsx @@ -0,0 +1,9 @@ +export const LDKIcon = () => { + return ( + + + + + + ); +}; diff --git a/frontend/src/components/icons/Phoenixd.tsx b/frontend/src/components/icons/Phoenixd.tsx new file mode 100644 index 000000000..8aa12dab3 --- /dev/null +++ b/frontend/src/components/icons/Phoenixd.tsx @@ -0,0 +1,10 @@ +export const PhoenixdIcon = () => { + return ( + + + + ); +}; diff --git a/frontend/src/screens/Intro.tsx b/frontend/src/screens/Intro.tsx index 3c41f9a6a..12e8f00c5 100644 --- a/frontend/src/screens/Intro.tsx +++ b/frontend/src/screens/Intro.tsx @@ -72,7 +72,7 @@ export function Intro() { A powerful, all-in-one bitcoin lightning wallet with the superpower of connecting to applications. -