1523 Commits

Author SHA1 Message Date
keyan
9064224fd3 allow input character overflow for editting 2023-09-11 19:59:36 -05:00
SatsAllDay
77daa458cf
Visual Character counter for post titles, poll options (#466)
* Indicate how many chars remain for title field and poll options

Live counter update to help authors know how many more chars they have
to use in their post titles, and also poll options

* Use InputInner for consistency

* Refactor to reuse title hint across all forms

* Character(s)

* Move maxLength hint impl to InputInner, per PR feedback

---------

Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
2023-09-11 19:20:44 -05:00
SatsAllDay
cd3dbeb19b
Automatically subscribe forward users to threads (#464)
* Automatically subscribe forward users to threads

Update create and update item sql functions to subscribe forward
recipients to the post

When the post is updated, ensure that if a forward user has already unsubscribed, keep it that way. Also ensure that any forward users that are no longer forward users are removed from subscription

* Preserve thread subs from non-fwd users during post edit

* use EXISTS to make a little clearer

---------

Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
Co-authored-by: keyan <keyan.kousha+huumn@gmail.com>
2023-09-11 19:08:31 -05:00
rleed
1969d82741
move search bar to top of page (#433)
* move search bar to top of page

* move select inputs below search bar

* reduce complexity

* default search to zaprank

* votes => zaprank

---------

Co-authored-by: rleed <rleed1@pm.me>
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
Co-authored-by: keyan <keyan.kousha+huumn@gmail.com>
2023-09-11 18:11:47 -05:00
rleed
2ba969ebab
Add new visitor welcome banner (#418)
* add new visitor welcome banner

* show dismissible banner on first-time login

* add mutation to hide welcome banner

* Update components/banners.js

Co-authored-by: ekzyis <27162016+ekzyis@users.noreply.github.com>

* fix error handling

* simplifications and other review suggestions

* cleanup

* restore selective display logic

* remove unnecessary query arguments

* cleanup a bit more

* don't show welcome banner to existing stackers

---------

Co-authored-by: rleed <rleed1@pm.me>
Co-authored-by: ekzyis <27162016+ekzyis@users.noreply.github.com>
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
Co-authored-by: keyan <keyan.kousha+huumn@gmail.com>
2023-09-11 16:29:45 -05:00
ekzyis
e2548e718d
Remove orientation from manifest (#483)
This overrides OS auto-rotate settings on Android. This means that the PWA does auto-rotate even if the OS setting to auto-rotate is not enabled.

This property is experimental and only supported by Chromium-based browsers anyway.

Also, you can still manually rotate if you want.

Co-authored-by: ekzyis <ek@stacker.news>
2023-09-11 14:58:41 -05:00
ekzyis
0c7d432056
Fix replying to wrong comment (#478)
Co-authored-by: ekzyis <ek@stacker.news>
2023-09-11 14:58:11 -05:00
SatsAllDay
9d05a5d09f
toast border color based on variant (#469) 2023-09-11 14:57:41 -05:00
SatsAllDay
ec758b2d5f
vary push notification body for subscriptions based on whether item is post (#476) 2023-09-11 14:56:50 -05:00
keyan
e6ffeb8f76 newsletter template improvements 2023-09-03 11:59:55 -05:00
keyan
89e64351dd fix boost in newsletter template gen 2023-09-02 12:24:00 -05:00
keyan
40a01789ec newsletter script 2023-09-02 12:21:00 -05:00
keyan
29d17dce21 fix invoicable modal close race condition 2023-08-31 12:26:42 -05:00
keyan
b7d0a373f4 don't notify for hold invoices 2023-08-31 11:38:45 -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
SatsAllDay
c6dfd1e39c
Fix toast weirdness on iOS scrolling (#461)
* Fix toast weirdness on iOS scrolling

* Remove unnecessary css hacks
2023-08-30 21:16:47 -05:00
SatsAllDay
906571324a
De-dupe item-driven notifications (#457)
* De-dupe item-driven notifications

Update how we query for item-driven notifications to de-dupe them for:

1. mentions
2. replies
3. thread subscriptions
4. user subscriptions

users should recieve only 1 notification for any given item created by another user, following the above priority order

this is accomplished by querying for replies to current user, replies on subscribed threads, items from subscribed users, and mentions (if enabled for the current user), sorting those results by item id and priority order within item id based on notification type, then selecting the highest priority notification from each item id

these results are then union all'ed with all other notification types, unchanged.

* remove extra union hashing

---------

Co-authored-by: keyan <keyan.kousha+huumn@gmail.com>
2023-08-30 20:38:31 -05:00
SatsAllDay
1872d6a7ad
Update twitter url regexs to match x.com or twitter.com (#454)
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
2023-08-30 20:13:43 -05:00
keyan
61485d38b5 remove stray log statement 2023-08-30 20:08:38 -05:00
keyan
6042026c87 clear notification indicator when notifications are received on the notification page 2023-08-30 20:00:16 -05:00
keyan
68e9dfd69c fix closure stacker bug 2023-08-30 19:03:05 -05:00
keyan
b3eb1fbd96 fix reward range notification link 2023-08-30 10:22:25 -05:00
keyan
faf71f744c handle some rewards corner cases 2023-08-30 10:00:47 -05:00
keyan
9a4476b1fe fix time zone problems 2023-08-29 21:05:10 -05:00
keyan
b6c822f40e allow viewing reward ranges 2023-08-29 19:13:21 -05:00
keyan
a40eb642a0 rewards only go to top posts/comments 2023-08-29 16:05:09 -05:00
keyan
58c1980786 break out user subscriptions 2023-08-29 14:38:00 -05:00
SatsAllDay
0d4a225442
Subscribe to a user (#443)
* First pass of user subscriptions

* add new db model to track subscriptions
* update user typedef and api resolver for subscription state
* add subscribe action to user profile page
* add mutation to subscribe to a user

* Update notifications queries, hasNewNotes queries for FollowActivity note type

* Only show items that have been created since subscribing to the user

* Send push notifications to user subscribers for posts and comments

* Rename item dropdown to action dropdown and re-use for item info and user actions

* Don't allow self-follows

* Add index on followee for faster lookups

* Don't show subscribe action if not logged in

* small style enhance

---------

Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
Co-authored-by: keyan <keyan.kousha+huumn@gmail.com>
2023-08-28 20:27:56 -05:00
keyan
781d034422 fix top cowboy nulls 2023-08-28 20:12:33 -05:00
SatsAllDay
b24b06eeee
Minor tweaks to the page footer (#452)
1. Use an ActionTooltip to explain what the light/dark mode and lightning buttons are for
2. Open the current commit github link in a new tab
2023-08-28 19:35:25 -05:00
keyan
e77bc819bb fix forward percentage width on mobile 2023-08-28 14:31:28 -05:00
keyan
a0af954d60 add how many times bounty has been paid 2023-08-28 14:14:14 -05:00
keyan
7bbcc86270 redirect to login on pages that require auth (#269) 2023-08-28 12:52:15 -05:00
keyan
169c762a1f rm commas in forward lists 2023-08-28 09:59:01 -05:00
keyan
f23e05f671 foss contrib in footer 2023-08-28 09:46:56 -05:00
keyan
88da287a87 hide zap bolt for forward users (#445) 2023-08-28 09:40:29 -05:00
keyan
f1ad321857 fix forward notification styling 2023-08-28 08:22:51 -05:00
ekzyis
4a0e615d7d
Fix TypeError during push notifications (#448)
Without this, following error is thrown when notifying users about new replies:

[webPush] error sending user notification:  TypeError: Cannot read properties of undefined (reading 'id')
app  |     at createItemUrl (webpack-internal:///(api)/./api/webPush/index.js:76:29)
app  |     at async sendUserNotification (webpack-internal:///(api)/./api/webPush/index.js:125:33)
app  |     at async Promise.allSettled (index 0)

Co-authored-by: ekzyis <ek@stacker.news>
2023-08-28 07:16:34 -05:00
ekzyis
ded3bd680f
Fix forward required in GraphQL mutations (#446)
If no forward variable is set, the API responds with

> Cannot read properties of undefined (reading 'map')

Co-authored-by: ekzyis <ek@stacker.news>
2023-08-28 07:12:36 -05:00
ekzyis
107a7f9e77
Fix expireSecs ignored for anons (#447)
Co-authored-by: ekzyis <ek@stacker.news>
2023-08-28 07:08:29 -05:00
keyan
2e846af737 fix bio 2023-08-27 17:48:46 -05:00
keyan
fda7b1b140 isimage fetch timeout 2023-08-27 13:28:33 -05:00
keyan
3e4c189a1d fix alert close styling and zap popover styling 2023-08-25 19:03:02 -05:00
keyan
46f235d60c add removed snl banner 2023-08-25 18:43:50 -05:00
SatsAllDay
0ee056b2a1
Toast (#431)
* Prototype of toast system

* More toast adoption

* share
* flag
* bookmark
* subscribe
* delete

* More toast usage:

* forms
* settings save

* Log error during flag failure

* Incorporate PR feedback:

1. return `toaster` from `useToast` hook, with simplified `success` and `danger` methods

2. remove toast header, move close button to body

3. change how toast ids are generated to use a global incrementing int

4. update toast messages

* PR feedback:

* reduce width of toast on narrow screens
* dynamic delete success toast message based on deleted type
* add toasts to auth methods deletion operations

* Dismiss all toasts upon page navigation

* refine style and use delay prop

* more styling

---------

Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
Co-authored-by: keyan <keyan.kousha+huumn@gmail.com>
2023-08-25 18:21:51 -05:00
keyan
61c7bb28c2 allow name checking if you aren't logged in 2023-08-25 14:22:02 -05:00