1270 Commits

Author SHA1 Message Date
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
38dbbd5a4f Fix comment copy-paste error 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
d5f7855adf
Debounce API requests on edit nym by 500ms (#387)
Support an optional debounce prop on Input component

If provided, the debounce is applied to the validation of the containing form,
imperatively invoking form validation after debounce is finalized

Also required introducing the `validateOnChange` prop on `Form` which gets passed to `Formik`, and defaults to true, just as it does in `Formik`.

Imperatively invoking form validation seemed to be the only way to debounce the validation call through formik.
2023-08-09 17:06:22 -05:00
keyan
b92f63ca88 fix remaining misuses of plural units 2023-08-08 17:15:30 -05:00
keyan
da78d244ef handle when navigator controller isn't present 2023-08-08 16:55:53 -05:00
keyan
3cfeede46a handle all singular units appropriately 2023-08-08 16:47:27 -05:00
SatsAllDay
9941bc6519
render "reply" or "replies", "comment" or "comments" depending on the count (singular or plural) (#382)
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
2023-08-08 16:07:00 -05: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
Keyan
76b4156ccb
Merge branch 'master' into 266-zaps-without-account 2023-08-08 09:42:21 -05:00
ekzyis
e3c60d1ef8
Sync push subscriptions on every page load (#370)
Most browsers don't support the pushsubscriptionchange event.

We workaround this by saving the current push subscription in IndexedDB so we can check during every page load if the push subscription changed.

If that is the case, we manually sync the push subscription with the server.

However, this solution is not perfect as mentioned in https://medium.com/@madridserginho/how-to-handle-webpush-api-pushsubscriptionchange-event-in-modern-browsers-6e47840d756f which was used for reference:

> This solution is not perfect, the user could lose some push notifications if he doesn’t open the webapp for a long time.

Co-authored-by: ekzyis <ek@stacker.news>
2023-08-07 20:03:34 -05:00
ekzyis
7369bd819d
Add nostr login (#367)
Co-authored-by: keyan <keyan.kousha+huumn@gmail.com>
2023-08-07 19:50:01 -05:00
keyan
a0974e4d6c Merge branch 'master' into 266-zaps-without-account 2023-08-07 16:48:52 -05:00
keyan
a3b668587d fix top cowboys 2023-08-07 16:26:15 -05:00
Keyan
3d0bb4b32c
Merge branch 'master' into 266-zaps-without-account 2023-08-07 15:10:20 -05:00
keyan
0867f3ff1c only outline eldest new comment ... unset on touch 2023-08-07 09:29:47 -05:00
keyan
d661c70f16 more noticable new comment indicator 2023-08-06 14:31:24 -05:00
keyan
1efc17fcc2 subtle highlight of new comments 2023-08-06 14:18:40 -05:00
keyan
ea1e31c6ee prevent horizontal layout shift on new comments 2023-08-06 13:21:38 -05:00
keyan
ebfff4677f fix top header/stat order on back/forward nav 2023-08-06 13:13:32 -05:00
keyan
90f4d41fc8 remove list jitter by initially preferring ssr 2023-08-06 13:04:25 -05:00
keyan
eeaf6e10e5 reduce rerenders in notifications 2023-08-06 10:47:58 -05:00
keyan
b9fdbde520 fix back button render jitter 2023-08-05 12:56:03 -05:00
keyan
d9dd4bc05b prevent scroll to comment on rerender 2023-08-05 12:13:15 -05:00
keyan
aea8948c45 dark-mode needs to block block 2023-08-04 20:45:12 -05:00
keyan
8d8e2859dd fix dark mode 2023-08-04 19:21:51 -05:00
keyan
23257d8c63 fix notifications glitchiness 2023-08-04 12:08:16 -05:00
keyan
42234eae9b highlight notification on back button 2023-08-03 19:14:04 -05:00
keyan
4e41f67e87 fix notification url replacement 2023-08-03 18:04:43 -05:00
keyan
94e975033c fix fee button receipt background color 2023-08-03 15:13:07 -05:00
keyan
0ab9119739 improve notifications UX: highlight reply and distinguish new notifications 2023-08-03 14:56:59 -05:00
keyan
7596b0302a improve click to context behavior and add ssrForceFetchDelay to apollo 2023-08-03 13:13:49 -05:00
keyan
b1b8f9de56 implement our own nprogress bar 2023-08-01 21:06:15 -05:00
keyan
e1c51075a2 fix conditional nextFetchPolicy overriding cache-only on SSR and suppress time hydration warnings 2023-07-31 14:54:30 -05:00
keyan
f91be5d70f fix form skeleton 2023-07-31 12:35:58 -05:00
keyan
b42a934207 fix invites signup via lightning/slashtags 2023-07-31 09:19:53 -05:00
keyan
bc5a19c6ee suppress hydration warnings when relative time is rendered 2023-07-31 09:12:56 -05:00
keyan
d2216e80da conform to linter 2023-07-31 08:39:10 -05:00
ekzyis
ba04e6522d Also strike on payment after short press 2023-07-30 23:45:08 +02:00
ekzyis
d186e869e1 Allow pay per invoice for bounty and job posts 2023-07-30 23:45:08 +02:00
ekzyis
f2f09b22c4 Fix invoice amount for comments 2023-07-30 23:45:08 +02:00
ekzyis
1cd9750be5 Fix insufficient funds error detection 2023-07-30 23:45:08 +02:00
ekzyis
773f658e00 Remove duplicate insufficient funds handling 2023-07-30 23:45:08 +02:00
ekzyis
6b4b5023f6 Keep invoice modal open if focus is lost 2023-07-30 23:45:07 +02:00
ekzyis
853a389b65 Allow pay per invoice for stackers
The modal which pops up if the stacker does not have enough sats now has two options: "fund wallet" and "pay invoice"
2023-07-30 23:45:07 +02:00
ekzyis
fd8510d59f Use payment hash instead of invoice id as proof of payment
Our invoice IDs can be enumerated.
So there is a - even though very rare - chance that an attacker could find a paid invoice which is not used yet and use it for himself.
Random payment hashes prevent this.

Also, since we delete invoices after use, using database IDs as proof of payments are not suitable.
If a user tells us an invoice ID after we deleted it, we can no longer tell if the invoice was paid or not since the LN node only knows about payment hashes but nothing about the database IDs.
2023-07-30 23:45:07 +02:00
ekzyis
74893b09dd Add anon comments and posts (link, discussion, poll) 2023-07-30 23:45:07 +02:00