* Remove gun+horse streak
* Add wallet badges
* Fix empty recv wallet detected as enabled
* Resolve badges via columns and triggers
* Fix backwards compatibility by not dropping GQL fields
* Gun+horse notifications as streaks via triggers
* Fix error while computing streaks
* Push notifications for horse+gun
* Move logic to JS via pgboss job
* Fix argument to notifyNewStreak
* Update checkWallet comment
* Refactor notification id hack
* Formatting
* Fix missing update of possibleTypes
This didn't cause any bugs because the added types have no field resolvers.
* Add user migration
* Fix missing cast to date
* Run checkWallet queries inside transaction
* commented the lines to make sure dupes are also checked on subdomains
* chore: fix lint issues
* add more than 3 custom tips, up to 7 total
* fix merge issue
* shorten logic
* don't check length for slice without need
---------
Co-authored-by: 김현희 <pygmal@gimhyeonhuiui-MacBookAir.local>
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
Co-authored-by: k00b <k00b@stacker.news>
* Refactor reminder push notifications
items should always exist and if not, we can just immediately fail imo
* Use same text for reminders in /notifications
* multi_auth cookies check + reset
* multi_auth cookies refresh
* Expire cookies after 30 days
This is the actual default for next-auth.session-token.
* Collapse issues by default
* Only refresh session cookie manually as anon
* fix mangled merge
---------
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
Co-authored-by: k00b <k00b@stacker.news>
* Prevent account creation if we're not signin up
* remove cookie once logged in, 24 hours expiry, comment
* adjust error messages
* check signin instead of signup
* appendHeader to avoid overwrites, fix typo, use NodeNextRequest to handle cookies
* expire cookie if signup
* fix: WebLN QR fallback for anon users
* wip: clear zap color on payment fail
* reverse clearItemMeAnonSats
* webln-specific retry bypass
* cleanup
* send WebLN payment when user is Anon AND on QR
* skip wallet checking on anon
* Use WalletError for all errors in webln.sendPayment
---------
Co-authored-by: ekzyis <ek@stacker.news>
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
* Dynamically import MathJax
* Only load if there's math content; cleanup
* avoid loading RSH on Math, we have MathJax for that; cleanup
* support multiline mathjax
---------
Co-authored-by: k00b <k00b@stacker.news>
* Poll failed invoices with visibility timeout
* Don't return intermediate failed invoices
* Don't retry too old invoices
* Retry invoices on client
* Only attempt payment 3 times
* Fix fallbacks during last retry
* Rename retry column to paymentAttempt
* Fix no index used
* Resolve TODOs
* Use expiring locks
* Better comments for constants
* Acquire lock during retry
* Use expiring lock in retry mutation
* Use now() instead of CURRENT_TIMESTAMP
* Cosmetic changes
* Immediately show failed post payments in notifications
* Update hasNewNotes
* Never retry on user cancel
For a consistent UX and less mental overhead, I decided to remove the exception for ITEM_CREATE where it would still retry in the background even though we want to show the payment failure immediately in notifications.
* Fix notifications without pending retries missing if no send wallets
If a stacker has no send wallets, they would miss notifications about failed payments because they would never get retried.
This commit fixes this by making the notifications query aware if the stacker has send wallets. This way, it can tell if a notification will be retried or not.
* Stop hiding userCancel in notifications
As mentioned in a previous commit, I want to show anything that will not be attempted anymore in notifications.
Before, I wanted to hide manually cancelled invoices but to not change experience unnecessarily and to decrease mental overhead, I changed my mind.
* Also consider invoice.cancelledAt in notifications
* Always retry failed payments, even without send wallets
* Fix notification indicator on retry timeout
* Set invoice.updated_at to date slightly in the future
* Use default job priority
* Stop retrying after one hour
* Remove special case for ITEM_CREATE
* Replace retryTimeout job with notification indicator query
* Fix sortTime
---------
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
* Update price button accessibility
* Updated accName and accDescription for speech dictation and screen reader users.
* Update price.js
Replace double quote with single
* Update price.js
Remove trailing spaces
* make .visually-hidden global, use className rather than class
* make accessible button component
---------
Co-authored-by: Jason Hester <jhester@TPGLPT-LTC23.attlocal.net>
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
Co-authored-by: k00b <k00b@stacker.news>