Commit Graph

1469 Commits

Author SHA1 Message Date
ekzyis 41a1c686dc
Fix stale images (#618)
Co-authored-by: ekzyis <ek@stacker.news>
2023-11-08 18:17:51 -06:00
SatsAllDay 522c821c89
Notification badges (#595)
* First pass of implementing Badging API for notifications

* Only show app badge when driven from push notifications

* Display number of unread push notifications instead of just an empty badge

Clear badge via postMessage when notifications page is loaded

* de-dupe some code, update badge counter on each notification click

* remove ids, track open note count instead

* restore optional chaining

* ensure note count doesn't go below 0, and fix event.waitUntil error when clearing badge

* incorporate PR feedback
2023-11-08 18:17:01 -06:00
rleed 3a56782572
Custom date selector for more pages (#567)
* add custom range option to top items page

* add custom range option to profile page

* add date filter option to chart pages

* cleanup

* fix x-axis date labels

* date picker improvements

* enhancements to custom date selection

* remove unneeded condition

---------

Co-authored-by: rleed <rleed1@pm.me>
Co-authored-by: Keyan <34140557+huumn@users.noreply.github.com>
2023-11-08 18:15:36 -06:00
ekzyis 8f590425dc
Image uploads (#576)
* Add icon to add images

* Open file explorer to select image

* Upload images to S3 on selection

* Show uploaded images below text input

* Link and remove image

* Fetch unsubmitted images from database

* Mark S3 images as submitted in imgproxy job

* Add margin-top

* Mark images as submitted on client after successful mutation

* Also delete objects in S3

* Allow items to have multiple uploads linked

* Overwrite old avatar

* Add fees for presigned URLs

* Use Github style upload

* removed upfront fees
* removed images provider since we no longer need to keep track of unsubmitted images on the client
* removed User.images resolver
* removed deleteImage mutation
* use Github style upload where it shows ![Uploading <filename>...]() first and then replaces that with ![<filename>](<url>) after successful upload

* Add Upload.paid boolean column

One item can have multiple images linked to it, but an image can also be used in multiple items (many-to-many relation).

Since we don't really care to which item an image is linked and vice versa, we just use a boolean column to mark if an image was already paid for.

This makes fee calculation easier since no JOINs are required.

* Add image fees during item creation/update

* we calculate image fees during item creation and update now
* function imageFees returns queries which deduct fees from user and mark images as paid + fees
* queries need to be run inside same transaction as item creation/update

* Allow anons to get presigned URLs

* Add comments regarding avatar upload

* Use megabytes in error message

* Remove unnecessary avatar check during image fees calculation

* Show image fees in frontend

* Also update image fees on blur

This makes sure that the images fees reflect the current state. For example, if an image was removed.

We could also add debounced requests.

* Show amount of unpaid images in receipt

* Fix fees in sats deducted from msats

* Fix algebraic order of fees

Spam fees must come immediately after the base fee since it multiplies the base fee.

* Fix image fees in edit receipt

* Fix stale fees shown

If we pay for an image and then want to edit the comment, the cache might return stale date; suggesting we didn't pay for the existing image yet.

* Add 0 base fee in edit receipt

* Remove 's' from 'image fees' in receipts

* Remove unnecessary async

* Remove 'Uploading <name>...' from text input on error

* Support upload of multiple files at once

* Add schedule to delete unused images

* Fix image fee display in receipts

* Use Drag and Drop API for image upload

* Remove dragOver style on drop

* Increase max upload size to 10MB to allow HQ camera pictures

* Fix free upload quota

* Fix stale image fees served

* Fix bad image fee return statements

* Fix multiplication with feesPerImage

* Fix NULL returned for size24h, sizeNow

* Remove unnecessary text field in query

* refactor: Unify <ImageUpload> and <Upload> component

* Add avatar cache busting using random query param

* Calculate image fee info in postgres function

* we now calculate image fee info in a postgres function which is much cleaner
* we use this function inside `create_item` and `update_item`: image fees are now deducted in the same transaction as creating/updating the item!
* reversed changes in `serializeInvoiceable`

* Fix line break in receipt

* Update upload limits

* Add comment about `e.target.value = null`

* Use debounce instead of onBlur to update image fees info

* Fix invoice amount

* Refactor avatar upload control flow

* Update image fees in onChange

* Fix rescheduling of other jobs

* also update schedule from every minute to every hour

* Add image fees in calling context

* keep item ids on uploads

* Fix incompatible onSubmit signature

* Revert "keep item ids on uploads"

This reverts commit 4688962abc.

* many2many item uploads

* pretty subdomain for images

* handle upload conditions for profile images and job logos

---------

Co-authored-by: ekzyis <ek@ekzyis.com>
Co-authored-by: ekzyis <ek@stacker.news>
2023-11-06 14:53:33 -06:00
SatsAllDay 5fd74e9329
Closes #601 Fix next.config.js to apply res headers to ttf font (#602) 2023-11-05 15:10:23 -06:00
ekzyis 5dfeb700bc
Resubscribe if service worker lost push subscription (#597)
* Also delete push subscription in IndexedDB

* Fix pushsubscriptionchange function signature

* Send SYNC_SUBSCRIPTION after successful registration

* Resubscribe if service worker lost subscription

---------

Co-authored-by: ekzyis <ek@stacker.news>
2023-11-05 15:08:44 -06:00
ekzyis 7040dbfce6
Fix missing merge of FOLLOW push notifications (#596)
* Use consistent lowercase titles

* Fix missing merge of FOLLOW push notifications

---------

Co-authored-by: ekzyis <ek@stacker.news>
2023-11-05 15:06:38 -06:00
VaibhavWakde52 e24e2a6b20
Update README.md (#593) 2023-11-01 14:54:41 -05:00
keyan 8bc3f5b384 Revert "halloween animation"
This reverts commit e939026295.
2023-11-01 11:57:55 -05:00
keyan 8881b19e45 Revert "protect zaps from webgl occasionally being unavailable"
This reverts commit b5828cdf94.
2023-11-01 11:57:17 -05:00
keyan b5bf3299f2 add /bitcoin.pdf easter egg 2023-10-31 11:02:13 -05:00
keyan b5828cdf94 protect zaps from webgl occasionally being unavailable 2023-10-31 09:48:39 -05:00
keyan e939026295 halloween animation 2023-10-29 16:50:03 -05:00
keyan d43155243a give self subscription proper migration name 2023-10-28 18:48:07 -05:00
keyan e3b81b7746 add top meme and fact to newsletter script 2023-10-28 18:28:13 -05:00
keyan d91d69bd42 fix deployment commit 2023-10-26 16:12:54 -05:00
keyan 30d8c92fe2 fix accidental reply hit on mobile 2023-10-26 15:49:28 -05:00
keyan 835554b3cd small adjustments to secondary form text 2023-10-26 15:12:21 -05:00
keyan 7589295e8c fix url UX exposing state 2023-10-26 14:36:20 -05:00
keyan 43a54d407e keep as much context as possible when navigating deeper in comment threads 2023-10-26 14:24:49 -05:00
keyan 39625f7e08 improve markdown tab spacing 2023-10-26 13:28:12 -05:00
keyan 43d3ba1807 better search layout spacing 2023-10-26 13:01:01 -05:00
keyan e8aaf1956e fix spacing on mixed items 2023-10-26 12:52:06 -05:00
keyan 4d98110282 restore ctrl+click on item title clicking 2023-10-26 12:30:13 -05:00
keyan 02b98582b8 add spacing to comment reply button 2023-10-26 12:17:43 -05:00
keyan 41cb6ac3d8 continue notification polling even if found 2023-10-26 11:53:27 -05:00
ekzyis cbcf80e1ba
Fix QR code overflow on mobile (#589)
Co-authored-by: ekzyis <ek@stacker.news>
2023-10-26 10:36:46 -05:00
SatsAllDay 843774183b
Wallet history timestamps (#585)
* Show when wallet history facts occurred

make use of the `timeSince` function that we use in item components
to show a relative time that a wallet history event occurred.

you an also hover over the relative time to see the ISO timestamp.

* Add `suppressHydrationWarning` to avoid hydration issues in dev mode

* Display date/time instead of relative time since
2023-10-25 13:06:15 -05:00
ekzyis 64cf40a04c
Additionally compare user ids during bookmark privacy check (#587)
Co-authored-by: ekzyis <ek@stacker.news>
2023-10-25 13:04:13 -05:00
keyan a0216788b4 remove debug log message 2023-10-24 14:10:54 -05:00
ekzyis eeaf2d5cf6
Fix FORWARDEDTIP change lost in serviceworker (#582)
Co-authored-by: ekzyis <ek@stacker.news>
2023-10-24 11:27:59 -05:00
keyan 0c9131f698 only show invoice data on full page 2023-10-23 19:58:33 -05:00
keyan a85af82460 make rewards query less aggressive 2023-10-23 19:46:51 -05:00
keyan d2697477a0 saner lastSeenAt checking 2023-10-23 18:19:36 -05:00
keyan ef884181e8 remove debug loggin for rehype plugin 2023-10-23 18:16:06 -05:00
keyan 53a8af8d20 improve delete bot ux 2023-10-23 17:55:48 -05:00
keyan 302f3459a1 fix markdown inline code and headings 2023-10-23 17:14:37 -05:00
keyan 67ec82b6d9 disambiguate preimage after payment from hold preimage 2023-10-23 16:44:09 -05:00
keyan e696a9bc82 fix display of child comments 2023-10-22 23:21:38 -05:00
ekzyis d641c305b5
Fix TypeError regarding matchAll (#579)
Co-authored-by: ekzyis <ek@stacker.news>
2023-10-22 23:03:11 -05:00
keyan 3160a3f66f prevent redoing queries for notifications 2023-10-22 17:51:07 -05:00
keyan f9f13cc752 update checkedNotesAt when there are none 2023-10-22 17:38:24 -05:00
keyan 3929593d90 don't poll for notifications if we already know 2023-10-22 16:26:52 -05:00
keyan 7b0021d933 enhance youtube embeds in markdown 2023-10-22 13:28:18 -05:00
keyan 1a33c8778b hasnewnotes query cleanup 2023-10-22 12:47:46 -05:00
keyan 4d7d4c28f9 user new create_item and remove double check for replies 2023-10-22 12:19:11 -05:00
keyan b853cacfa7 simplify optional text on link 2023-10-22 11:54:27 -05:00
G 40f63baa05
Embed Youtube videos in posts for valid Youtube URLs (#572)
* Render video if it's valid Youtube URL

* Fix lint
2023-10-22 11:13:16 -05:00
SatsAllDay 1d394bebe1
Ephemeral item support (#570)
backend impl and some of the UI for ephemeral item support

more to come, this is just a WIP so far

Consolidate client-side ephemeral fee logic in FeeButton components for easier reuse

* update the update_item function to handle the case where an item was not
ephemeral, but now is, so we charge the user accordingly

* introduce `hasDeleteCommand` for a better logical abstraction for some use cases in the code

* introduce `EPHEMERAL_FEE_SATS` which is derived from `EPHEMERAL_FEE_MSATS`, so we don't
have to the same calculation over and over

Remove fees for ephemeral items

* remove unused markdownField prop in FeeButton

* remove empty migration

minor code cleanup

Centralize delete item by author code to reduce duplication
2023-10-22 11:02:58 -05:00
rleed e713387920
migrate to ThreadSubscription model and enable self-unsubscribe (#569)
Co-authored-by: rleed <rleed1@pm.me>
2023-10-22 11:00:23 -05:00