Compare commits

..

No commits in common. "8e18fa0760fd074f439b2fb54bc4801a360d63d9" and "ddb32e0bb719982325f9361b61365dafa23adf14" have entirely different histories.

5 changed files with 24 additions and 24 deletions

View File

@ -1,9 +1,10 @@
import { SSR } from '@/lib/constants' import { SSR } from '@/lib/constants'
import { useCallback, useState } from 'react' import { useCallback, useState } from 'react'
export default function useLocalState (storageKey, defaultValue) { export default function useLocalState (storageKey, initialValue = '') {
const [value, innerSetValue] = useState( const [value, innerSetValue] = useState(
(SSR ? null : JSON.parse(window.localStorage.getItem(storageKey))) || defaultValue initialValue ||
(SSR ? null : JSON.parse(window.localStorage.getItem(storageKey)))
) )
const setValue = useCallback((newValue) => { const setValue = useCallback((newValue) => {

View File

@ -31,7 +31,7 @@ export default function WalletSettings () {
...acc, ...acc,
[field.name]: wallet.config?.[field.name] || '' [field.name]: wallet.config?.[field.name] || ''
} }
}, wallet.config) }, wallet.config || {})
// check if wallet uses the form-level validation built into Formik or a Yup schema // check if wallet uses the form-level validation built into Formik or a Yup schema
const validateProps = typeof wallet.fieldValidation === 'function' const validateProps = typeof wallet.fieldValidation === 'function'

View File

@ -158,7 +158,7 @@ function useConfig (wallet) {
const me = useMe() const me = useMe()
const storageKey = getStorageKey(wallet?.name, me) const storageKey = getStorageKey(wallet?.name, me)
const [clientConfig, setClientConfig, clearClientConfig] = useClientConfig(storageKey, {}) const [clientConfig, setClientConfig, clearClientConfig] = useClientConfig(storageKey)
const [serverConfig, setServerConfig, clearServerConfig] = useServerConfig(wallet) const [serverConfig, setServerConfig, clearServerConfig] = useServerConfig(wallet)

View File

@ -11,25 +11,19 @@ export const createInvoice = async (
{ msats, description, descriptionHash, expiry }, { msats, description, descriptionHash, expiry },
{ cert, macaroon, socket } { cert, macaroon, socket }
) => { ) => {
try { const { lnd } = await authenticatedLndGrpc({
const { lnd } = await authenticatedLndGrpc({ cert,
cert, macaroon,
macaroon, socket
socket })
})
const invoice = await lndCreateInvoice({ const invoice = await lndCreateInvoice({
lnd, lnd,
description, description,
description_hash: descriptionHash, description_hash: descriptionHash,
mtokens: String(msats), mtokens: String(msats),
expires_at: datePivot(new Date(), { seconds: expiry }) expires_at: datePivot(new Date(), { seconds: expiry })
}) })
return invoice.request return invoice.request
} catch (err) {
// LND errors can be in this shape: [code, type, { err: { code, details, metadata } }]
const details = err[2]?.err?.details || err.message || err.toString?.()
throw new Error(details)
}
} }

View File

@ -59,10 +59,15 @@ export async function createInvoice (userId, { msats, description, descriptionHa
return { invoice, wallet } return { invoice, wallet }
} catch (error) { } catch (error) {
console.error(error) console.error(error)
// TODO: I think this is a bug, `createInvoice` should parse the error
// LND errors are in this shape: [code, type, { err: { code, details, metadata } }]
const details = error[2]?.err?.details || error.message || error.toString?.()
await addWalletLog({ await addWalletLog({
wallet, wallet,
level: 'ERROR', level: 'ERROR',
message: `creating invoice for ${description ?? ''} failed: ` + error message: `creating invoice for ${description ?? ''} failed: ` + details
}, { models }) }, { models })
} }
} }