From dc2c2b36501b24c7f2ed8f3dd0f7e6edc9dd6658 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 18 Apr 2022 16:20:44 -0300 Subject: show btc wire details in withdraw details transaction --- .../src/components/BankDetailsByPaytoType.tsx | 71 ++++++++++++++++++++-- 1 file changed, 67 insertions(+), 4 deletions(-) (limited to 'packages/taler-wallet-webextension/src/components') diff --git a/packages/taler-wallet-webextension/src/components/BankDetailsByPaytoType.tsx b/packages/taler-wallet-webextension/src/components/BankDetailsByPaytoType.tsx index 182e82a3d..ac6f8541e 100644 --- a/packages/taler-wallet-webextension/src/components/BankDetailsByPaytoType.tsx +++ b/packages/taler-wallet-webextension/src/components/BankDetailsByPaytoType.tsx @@ -14,18 +14,24 @@ GNU Taler; see the file COPYING. If not, see */ -import { PaytoUri } from "@gnu-taler/taler-util"; +import { + AmountJson, + Amounts, + PaytoUri, + segwitMinAmount, +} from "@gnu-taler/taler-util"; import { Fragment, h, VNode } from "preact"; import { useEffect, useRef, useState } from "preact/hooks"; import { useTranslationContext } from "../context/translation.js"; import { CopiedIcon, CopyIcon } from "../svg/index.js"; +import { Amount } from "./Amount.js"; import { ButtonBox, TooltipRight } from "./styled/index.js"; export interface BankDetailsProps { payto: PaytoUri | undefined; exchangeBaseUrl: string; subject: string; - amount: string | VNode; + amount: AmountJson; } export function BankDetailsByPaytoType({ @@ -35,8 +41,65 @@ export function BankDetailsByPaytoType({ amount, }: BankDetailsProps): VNode { const { i18n } = useTranslationContext(); + if (!payto) return ; - const firstPart = !payto ? undefined : !payto.isKnown ? ( + if (payto.isKnown && payto.targetType === "bitcoin") { + const min = segwitMinAmount(amount.currency); + if (typeof window !== "undefined") { + //FIXME: generate (and possibly save in db?) in wallet-core + payto.generateSegwitAddress(subject); + } + return ( +
+

+ + Bitcoin exchange need a transaction with 3 output, one output is the + exchange account and the other two are segwit fake address for + metadata with an minimum amount. Reserve pub : {subject} + +

+

+ + In bitcoincore wallet use 'Add Recipient' button to add + two additional recipient and copy addresses and amounts + +

    +
  • + {payto.targetPath} {Amounts.stringifyValue(amount)} BTC +
  • +
  • + {payto.addr1} {Amounts.stringifyValue(min)} BTC +
  • +
  • + {payto.addr2} {Amounts.stringifyValue(min)} BTC +
  • +
+ + In Electrum wallet paste the following three lines in 'Pay + to' field : + +
    +
  • + {payto.targetPath},{Amounts.stringifyValue(amount)} +
  • +
  • + {payto.addr1},{Amounts.stringifyValue(min)} +
  • +
  • + {payto.addr2},{Amounts.stringifyValue(min)} +
  • +
+ + Make sure the amount show{" "} + {Amounts.stringifyValue(Amounts.sum([amount, min, min]).amount)}{" "} + BTC, else you have to change the base unit to BTC + +

+
+ ); + } + + const firstPart = !payto.isKnown ? ( Account} value={payto.targetPath} @@ -66,7 +129,7 @@ export function BankDetailsByPaytoType({ /> Chosen amount} - value={amount} + value={} /> Subject} -- cgit v1.2.3