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 4688962abcd54fdc5850109372a7ad054cf9b2e4.

* 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
..
2021-05-24 19:08:56 -05:00
2021-09-12 11:55:38 -05:00
2021-09-23 12:42:00 -05:00
2021-09-23 12:42:00 -05:00
2021-11-04 19:07:41 -04:00
2021-12-09 14:41:09 -06:00
2022-01-05 14:37:34 -06:00
2022-01-14 17:43:12 -06:00
2022-02-24 13:05:57 -06:00
2022-03-17 15:13:19 -05:00
2022-04-18 15:19:07 -05:00
2022-07-05 14:51:13 -05:00
2022-07-30 08:51:04 -05:00
2022-07-30 08:51:04 -05:00
2022-07-30 08:51:04 -05:00
2022-08-11 15:38:10 -05:00
2022-08-11 15:38:10 -05:00
2022-09-21 14:57:36 -05:00
2022-09-27 16:19:15 -05:00
2022-09-27 16:19:15 -05:00
2022-11-16 10:57:03 -06:00
2022-11-16 10:57:03 -06:00
2022-11-16 10:57:03 -06:00
2022-12-19 16:27:52 -06:00
2022-12-19 16:27:52 -06:00
2022-12-19 16:27:52 -06:00
2023-01-13 11:52:18 -06:00
2023-01-18 12:49:20 -06:00
2023-01-22 14:17:50 -06:00
2023-02-01 17:40:49 -06:00
2023-02-01 17:40:49 -06:00
2023-02-15 11:20:43 -06:00
2023-05-01 15:58:30 -05:00
2023-05-01 15:58:30 -05:00
2023-05-01 15:58:30 -05:00
2023-05-23 09:21:04 -05:00
2023-06-12 12:41:22 -05:00
2023-06-20 09:57:06 -05:00
2023-06-20 11:27:41 -05:00
2023-10-19 18:45:07 -05:00
2023-09-28 15:02:25 -05:00
2023-09-28 15:02:25 -05:00
2023-10-19 18:45:07 -05:00
2023-10-19 18:45:07 -05:00
2021-03-25 14:29:24 -05:00