40 Commits

Author SHA1 Message Date
keyan
0c9131f698 only show invoice data on full page 2023-10-23 19:58:33 -05:00
keyan
67ec82b6d9 disambiguate preimage after payment from hold preimage 2023-10-23 16:44:09 -05:00
SatsAllDay
56111efd6a
SN wallet transaction details (#550)
* display bolt11 info and preimage for invoices

* Remove preimage attempt for wdrwl, since it doesn't make sense

Other various code cleanup

* Only include preimage for confirmed paid and settled invoices
2023-10-20 19:25:22 -05:00
keyan
8ca8bb985e reuse debounce hook more places 2023-10-06 15:01:51 -05:00
SatsAllDay
3acaee377b
LUD-18 Service Support (#518)
* first pass of LUD-18 support

* Various LUD-18 updates

* don't cache the well-known response, since it includes randomly generated single use values

* validate k1 from well-known response to pay URL

* only keep k1's for 10 minutes if they go unused

* fix validation logic to make auth object optional

* Various LUD18 updates

* move k1 cache to database

* store payer data in invoice db table

* show payer data in invoices on satistics page

* show comments and payer data on invoice page

* Show lud18 data in invoice notification

* PayerData component for easier display of info in invoice, notification, wallet history

* `payerData` -> `invoicePayerData` in fact schema

* Merge prisma migrations

* lint fixes

* worker job to clear out unused lnurlp requests after 30 minutes

* More linting

* Move migration to older

* WIP review

* enhance lud-18

* refine notification ui

---------

Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
Co-authored-by: keyan <keyan.kousha+huumn@gmail.com>
2023-10-03 14:35:53 -05:00
keyan
cfb8fa7014 remove expiration when invoice is confirmed 2023-09-27 12:19:56 -05:00
keyan
29d17dce21 fix invoicable modal close race condition 2023-08-31 12:26:42 -05:00
keyan
ed722fffdd remove reminder that you can overpay an invoice 2023-08-31 10:37:58 -05:00
keyan
3e0167a4aa fix merge typo 2023-08-31 10:20:01 -05:00
ekzyis
6c203a4476
Use callback to clear local storage on success (#462)
Co-authored-by: ekzyis <ek@stacker.news>
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
2023-08-31 10:15:52 -05:00
ekzyis
803acd1fc4
Replace FundError with InvoiceModal (#455)
* invoices are no longer deleted to prevent double-spends but marked as confirmed.
  therefore, during checkInvoice, we also check if the invoice is already confirmed.
* instead of showing FundError (with "fund wallet" and "pay invoice" as options), we now always immediately show an invoice
* since flagging, paying bounties and poll voting used FundError but only allowed spending from balance, they now also support paying per invoice

Co-authored-by: ekzyis <ek@stacker.news>
2023-08-31 10:10:24 -05:00
ekzyis
ac45fdc234
Use HODL invoices (#432)
* Use HODL invoices

* Fix expiry check comparing string with Date

* Fix unconfirmed user balance for HODL invoices

This is done by syncing the data from LND to the Invoice table.

If the columns is_held and msatsReceived are set, the frontend is told that we're ready to execute the action.

We then update the user balance in the same tx as the action.

We need to still keep checking the invoice for expiration though.

* Fix worker acting upon deleted invoices

* Prevent usage of invoice after expiration

* Use onComplete from <Countdown> to show expired status

* Remove unused lnd argument

* Fix item destructuring from query

* Fix balance added to every stacker

* Fix hmac required

* Fix invoices not used when logged in

* refactor: move invoiceable code into form

* renamed invoiceHash, invoiceHmac to hash, hmac since it's less verbose all over the place
* form now supports `invoiceable` in its props
* form then wraps `onSubmit` with `useInvoiceable` and passes optional invoice options

* Show expired if expired and canceled

* Also use useCallback for zapping

* Always expire modal invoices after 3m

* little styling thing

---------

Co-authored-by: ekzyis <ek@stacker.news>
Co-authored-by: keyan <keyan.kousha+huumn@gmail.com>
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
2023-08-30 21:48:49 -05:00
ekzyis
f0bc1baed2 Save payment tokens in localStorage 2023-08-12 04:18:32 +02:00
keyan
5b821906cf use builtin copy input label 2023-08-11 18:43:45 -05:00
keyan
86239a235d make invoice expiration times have saner defaults 2023-08-11 18:10:46 -05:00
keyan
a5eb7b5443 invoice check backoff 2023-08-11 17:54:26 -05:00
keyan
63dd5d4d09 fix qr layout shift 2023-08-11 17:05:21 -05:00
ekzyis
73aa0d2d44 Fix localStorage cleared because error were swallowed 2023-08-11 23:36:53 +02:00
keyan
38fddcf283 concat hash and hmac and call it a token 2023-08-11 14:22:18 -05:00
ekzyis
41f46cf41e Fix empty invoice creation attempts
I stumbled across this while checking if anons can edit their items.

I monkey patched the code to make it possible (so they can see the 'edit' button) and tried to edit an item but I got this error:

  Variable "$amount" of required type "Int!" was not provided.

I fixed this even though this function should never be called without an amount anyway. It will return a sane error in that case now.
2023-08-11 05:30:22 +02:00
ekzyis
28b4588a12 Fix [object Object] as error message
Any errors thrown here are already objects of shape { message: string }
2023-08-11 05:30:06 +02:00
keyan
d92701c56f don't abbreviate 2023-08-10 19:58:33 -05:00
keyan
ea9c405dfa add sat amounts to invoices 2023-08-10 18:33:57 -05:00
ekzyis
49736e8d3c Always show repeat and contacts on action error 2023-08-10 23:04:06 +02:00
keyan
081c5fef0b make anon posting less hidden, add anon info button explainer 2023-08-10 14:41:56 -05:00
ekzyis
bb2212d51e Add invoice HMAC
This prevents entities which know the invoice hash (like all LN nodes on the payment path) from using the invoice hash on SN.

Only the user which created the invoice knows the HMAC and thus can use the invoice hash.
2023-08-10 07:10:07 +02:00
ekzyis
4fe1d416de Fix onConfirmation called at every render 2023-08-10 04:13:09 +02:00
ekzyis
318088179a Rename to useInvoiceable 2023-08-10 03:34:38 +02:00
ekzyis
118f591d04 Merge branch 'master' into 266-zaps-without-account 2023-08-10 03:34:38 +02:00
SatsAllDay
6e05cd38f9
Singular/Plural "Sats" labels (#380)
Co-authored-by: keyan <keyan.kousha+huumn@gmail.com>
2023-08-08 16:04:06 -05:00
ekzyis
67a0de3ea5
Notifications with nostr info (#368)
* Show zap message and pubkey in notifications

+ show zap request event in invoice view

* enhance ui

---------

Co-authored-by: ekzyis <ek@stacker.news>
Co-authored-by: keyan <keyan.kousha+huumn@gmail.com>
2023-08-08 13:19:31 -05:00
ekzyis
5415c6b0f6 Add anon zaps 2023-07-30 23:45:07 +02:00
keyan
9644a9f867 slashtags auth 2023-01-18 12:49:20 -06:00
keyan
1bf747c7c0 sats to msats 2022-11-16 10:57:03 -06:00
keyan
7ffb3fd18a support webln fund and withdrawal 2021-09-07 12:52:59 -05:00
keyan
2e26e421e7 lnurl-auth 2021-06-26 22:09:39 -05:00
keyan
ce55fdfe9c withdrawl page 2021-05-13 08:28:38 -05:00
keyan
bc0389e622 invoiced ... WIP transactions 2021-05-11 10:52:50 -05:00
keyan
4b07edf6f5 ready for invoices 2021-05-06 16:15:22 -05:00
keyan
d4d1169058 small ui stuff 2021-05-05 13:13:14 -05:00