show btc wire details in withdraw details transaction
This commit is contained in:
parent
c3e65fb49d
commit
dc2c2b3650
@ -14,18 +14,24 @@
|
|||||||
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
|
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { PaytoUri } from "@gnu-taler/taler-util";
|
import {
|
||||||
|
AmountJson,
|
||||||
|
Amounts,
|
||||||
|
PaytoUri,
|
||||||
|
segwitMinAmount,
|
||||||
|
} from "@gnu-taler/taler-util";
|
||||||
import { Fragment, h, VNode } from "preact";
|
import { Fragment, h, VNode } from "preact";
|
||||||
import { useEffect, useRef, useState } from "preact/hooks";
|
import { useEffect, useRef, useState } from "preact/hooks";
|
||||||
import { useTranslationContext } from "../context/translation.js";
|
import { useTranslationContext } from "../context/translation.js";
|
||||||
import { CopiedIcon, CopyIcon } from "../svg/index.js";
|
import { CopiedIcon, CopyIcon } from "../svg/index.js";
|
||||||
|
import { Amount } from "./Amount.js";
|
||||||
import { ButtonBox, TooltipRight } from "./styled/index.js";
|
import { ButtonBox, TooltipRight } from "./styled/index.js";
|
||||||
|
|
||||||
export interface BankDetailsProps {
|
export interface BankDetailsProps {
|
||||||
payto: PaytoUri | undefined;
|
payto: PaytoUri | undefined;
|
||||||
exchangeBaseUrl: string;
|
exchangeBaseUrl: string;
|
||||||
subject: string;
|
subject: string;
|
||||||
amount: string | VNode;
|
amount: AmountJson;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function BankDetailsByPaytoType({
|
export function BankDetailsByPaytoType({
|
||||||
@ -35,8 +41,65 @@ export function BankDetailsByPaytoType({
|
|||||||
amount,
|
amount,
|
||||||
}: BankDetailsProps): VNode {
|
}: BankDetailsProps): VNode {
|
||||||
const { i18n } = useTranslationContext();
|
const { i18n } = useTranslationContext();
|
||||||
|
if (!payto) return <Fragment />;
|
||||||
|
|
||||||
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 (
|
||||||
|
<section style={{ textAlign: "left" }}>
|
||||||
|
<p>
|
||||||
|
<i18n.Translate>
|
||||||
|
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}
|
||||||
|
</i18n.Translate>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<i18n.Translate>
|
||||||
|
In bitcoincore wallet use 'Add Recipient' button to add
|
||||||
|
two additional recipient and copy addresses and amounts
|
||||||
|
</i18n.Translate>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
{payto.targetPath} {Amounts.stringifyValue(amount)} BTC
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
{payto.addr1} {Amounts.stringifyValue(min)} BTC
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
{payto.addr2} {Amounts.stringifyValue(min)} BTC
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<i18n.Translate>
|
||||||
|
In Electrum wallet paste the following three lines in 'Pay
|
||||||
|
to' field :
|
||||||
|
</i18n.Translate>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
{payto.targetPath},{Amounts.stringifyValue(amount)}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
{payto.addr1},{Amounts.stringifyValue(min)}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
{payto.addr2},{Amounts.stringifyValue(min)}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<i18n.Translate>
|
||||||
|
Make sure the amount show{" "}
|
||||||
|
{Amounts.stringifyValue(Amounts.sum([amount, min, min]).amount)}{" "}
|
||||||
|
BTC, else you have to change the base unit to BTC
|
||||||
|
</i18n.Translate>
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const firstPart = !payto.isKnown ? (
|
||||||
<Row
|
<Row
|
||||||
name={<i18n.Translate>Account</i18n.Translate>}
|
name={<i18n.Translate>Account</i18n.Translate>}
|
||||||
value={payto.targetPath}
|
value={payto.targetPath}
|
||||||
@ -66,7 +129,7 @@ export function BankDetailsByPaytoType({
|
|||||||
/>
|
/>
|
||||||
<Row
|
<Row
|
||||||
name={<i18n.Translate>Chosen amount</i18n.Translate>}
|
name={<i18n.Translate>Chosen amount</i18n.Translate>}
|
||||||
value={amount}
|
value={<Amount value={amount} />}
|
||||||
/>
|
/>
|
||||||
<Row
|
<Row
|
||||||
name={<i18n.Translate>Subject</i18n.Translate>}
|
name={<i18n.Translate>Subject</i18n.Translate>}
|
||||||
|
@ -1,10 +1,4 @@
|
|||||||
import {
|
import { AmountJson, PaytoUri, stringifyPaytoUri } from "@gnu-taler/taler-util";
|
||||||
AmountJson,
|
|
||||||
Amounts,
|
|
||||||
PaytoUri,
|
|
||||||
segwitMinAmount,
|
|
||||||
stringifyPaytoUri,
|
|
||||||
} from "@gnu-taler/taler-util";
|
|
||||||
import { Fragment, h, VNode } from "preact";
|
import { Fragment, h, VNode } from "preact";
|
||||||
import { Amount } from "../components/Amount.js";
|
import { Amount } from "../components/Amount.js";
|
||||||
import { BankDetailsByPaytoType } from "../components/BankDetailsByPaytoType.js";
|
import { BankDetailsByPaytoType } from "../components/BankDetailsByPaytoType.js";
|
||||||
@ -42,61 +36,10 @@ export function ReserveCreated({
|
|||||||
}
|
}
|
||||||
function TransferDetails(): VNode {
|
function TransferDetails(): VNode {
|
||||||
if (!paytoURI) return <Fragment />;
|
if (!paytoURI) return <Fragment />;
|
||||||
if (paytoURI.isKnown && paytoURI.targetType === "bitcoin") {
|
|
||||||
const min = segwitMinAmount();
|
|
||||||
return (
|
|
||||||
<section>
|
|
||||||
<p>
|
|
||||||
<i18n.Translate>
|
|
||||||
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 : {reservePub}
|
|
||||||
</i18n.Translate>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
<i18n.Translate>
|
|
||||||
In bitcoincore wallet use 'Add Recipient' button to add
|
|
||||||
two additional recipient and copy addresses and amounts
|
|
||||||
</i18n.Translate>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
{paytoURI.targetPath} {Amounts.stringifyValue(amount)} BTC
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
{paytoURI.addr1} {Amounts.stringifyValue(min)} BTC
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
{paytoURI.addr2} {Amounts.stringifyValue(min)} BTC
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<i18n.Translate>
|
|
||||||
In Electrum wallet paste the following three lines in 'Pay
|
|
||||||
to' field :
|
|
||||||
</i18n.Translate>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
{paytoURI.targetPath},{Amounts.stringifyValue(amount)}
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
{paytoURI.addr1},{Amounts.stringifyValue(min)}
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
{paytoURI.addr2},{Amounts.stringifyValue(min)}
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<i18n.Translate>
|
|
||||||
Make sure the amount show{" "}
|
|
||||||
{Amounts.stringifyValue(Amounts.sum([amount, min, min]).amount)}{" "}
|
|
||||||
BTC, else you have to change the base unit to BTC
|
|
||||||
</i18n.Translate>
|
|
||||||
</p>
|
|
||||||
</section>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return (
|
return (
|
||||||
<section>
|
<section>
|
||||||
<BankDetailsByPaytoType
|
<BankDetailsByPaytoType
|
||||||
amount={<Amount value={amount} />}
|
amount={amount}
|
||||||
exchangeBaseUrl={exchangeBaseUrl}
|
exchangeBaseUrl={exchangeBaseUrl}
|
||||||
payto={paytoURI}
|
payto={paytoURI}
|
||||||
subject={reservePub}
|
subject={reservePub}
|
||||||
|
@ -224,7 +224,7 @@ export function TransactionView({
|
|||||||
WithdrawalType.ManualTransfer ? (
|
WithdrawalType.ManualTransfer ? (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
<BankDetailsByPaytoType
|
<BankDetailsByPaytoType
|
||||||
amount={<Amount value={transaction.amountRaw} />}
|
amount={Amounts.parseOrThrow(transaction.amountRaw)}
|
||||||
exchangeBaseUrl={transaction.exchangeBaseUrl}
|
exchangeBaseUrl={transaction.exchangeBaseUrl}
|
||||||
payto={parsePaytoUri(
|
payto={parsePaytoUri(
|
||||||
transaction.withdrawalDetails.exchangePaytoUris[0],
|
transaction.withdrawalDetails.exchangePaytoUris[0],
|
||||||
|
Loading…
Reference in New Issue
Block a user