diff --git a/api/resolvers/wallet.js b/api/resolvers/wallet.js
index 07915631..430a1007 100644
--- a/api/resolvers/wallet.js
+++ b/api/resolvers/wallet.js
@@ -1,4 +1,4 @@
-import { createHodlInvoice, createInvoice, decodePaymentRequest, payViaPaymentRequest, cancelHodlInvoice } from 'ln-service'
+import { createHodlInvoice, createInvoice, decodePaymentRequest, payViaPaymentRequest, cancelHodlInvoice, getInvoice as getInvoiceFromLnd } from 'ln-service'
import { GraphQLError } from 'graphql'
import crypto from 'crypto'
import serialize from './serial'
@@ -40,6 +40,15 @@ export async function getInvoice (parent, { id }, { me, models, lnd }) {
} catch (err) {
}
+ try {
+ if (inv.confirmedAt) {
+ const lnInv = await getInvoiceFromLnd({ id: inv.hash, lnd })
+ inv.preimage = lnInv.secret
+ }
+ } catch (err) {
+ console.error('error fetching invoice from LND', err)
+ }
+
return inv
}
diff --git a/api/typeDefs/wallet.js b/api/typeDefs/wallet.js
index 190f3c88..bb6fe274 100644
--- a/api/typeDefs/wallet.js
+++ b/api/typeDefs/wallet.js
@@ -30,6 +30,7 @@ export default gql`
lud18Data: JSONObject
hmac: String
isHeld: Boolean
+ preimage: String
}
type Withdrawl {
diff --git a/components/bolt11-info.js b/components/bolt11-info.js
new file mode 100644
index 00000000..4867572e
--- /dev/null
+++ b/components/bolt11-info.js
@@ -0,0 +1,49 @@
+import { decode } from 'bolt11'
+import AccordianItem from './accordian-item'
+import { CopyInput } from './form'
+
+export default ({ bolt11, preimage }) => {
+ const { tagsObject: { description, payment_hash: paymentHash } } = decode(bolt11)
+ if (!description && !paymentHash && !preimage) {
+ return null
+ }
+
+ return (
+
+
+ {description &&
+ }
+ {paymentHash &&
+ }
+ {preimage &&
+ }
+ >
+ }
+ />
+
+ )
+}
diff --git a/components/form.js b/components/form.js
index 74ad74e0..98c4165c 100644
--- a/components/form.js
+++ b/components/form.js
@@ -4,7 +4,6 @@ import BootstrapForm from 'react-bootstrap/Form'
import { Formik, Form as FormikForm, useFormikContext, useField, FieldArray } from 'formik'
import React, { createContext, useCallback, useContext, useEffect, useRef, useState } from 'react'
import copy from 'clipboard-copy'
-import Thumb from '../svgs/thumb-up-fill.svg'
import Col from 'react-bootstrap/Col'
import Dropdown from 'react-bootstrap/Dropdown'
import Nav from 'react-bootstrap/Nav'
@@ -53,12 +52,15 @@ export function SubmitButton ({
}
export function CopyInput (props) {
- const [copied, setCopied] = useState(false)
+ const toaster = useToast()
- const handleClick = () => {
- copy(props.placeholder)
- setCopied(true)
- setTimeout(() => setCopied(false), 1500)
+ const handleClick = async () => {
+ try {
+ await copy(props.placeholder)
+ toaster.success('copied')
+ } catch (err) {
+ toaster.danger('failed to copy')
+ }
}
return (
@@ -69,10 +71,9 @@ export function CopyInput (props) {
className={styles.appendButton}
size={props.size}
onClick={handleClick}
- >
- {copied ? : 'copy'}
+ >copy
-}
+ }
{...props}
/>
)
diff --git a/components/invoice.js b/components/invoice.js
index 04c2283e..73aba36e 100644
--- a/components/invoice.js
+++ b/components/invoice.js
@@ -12,6 +12,7 @@ import { useShowModal } from './modal'
import { sleep } from '../lib/time'
import Countdown from './countdown'
import PayerData from './payer-data'
+import Bolt11Info from './bolt11-info'
export function Invoice ({ invoice, onPayment, info, successVerb }) {
const [expired, setExpired] = useState(new Date(invoice.expiredAt) <= new Date())
@@ -39,7 +40,7 @@ export function Invoice ({ invoice, onPayment, info, successVerb }) {
}
}, [invoice.confirmedAt, invoice.isHeld, invoice.satsReceived])
- const { nostr, comment, lud18Data } = invoice
+ const { nostr, comment, lud18Data, bolt11, preimage } = invoice
return (
<>
@@ -85,6 +86,7 @@ export function Invoice ({ invoice, onPayment, info, successVerb }) {
body={{comment}}
/>
}
+
>
)
}
diff --git a/fragments/wallet.js b/fragments/wallet.js
index 2d79a587..14f9d6dc 100644
--- a/fragments/wallet.js
+++ b/fragments/wallet.js
@@ -16,6 +16,7 @@ export const INVOICE = gql`
isHeld
comment
lud18Data
+ preimage
}
}`
diff --git a/pages/withdrawals/[id].js b/pages/withdrawals/[id].js
index a86aadaf..2b259c9e 100644
--- a/pages/withdrawals/[id].js
+++ b/pages/withdrawals/[id].js
@@ -8,6 +8,7 @@ import { WITHDRAWL } from '../../fragments/wallet'
import Link from 'next/link'
import { SSR } from '../../lib/constants'
import { numWithUnits } from '../../lib/format'
+import Bolt11Info from '../../components/bolt11-info'
export default function Withdrawl () {
return (
@@ -97,6 +98,7 @@ function LoadWithdrawl () {
/>
+
>
)
}