Commit graph

27 commits

Author SHA1 Message Date
infinite-persistence
11b5eb49a0
Optimize ChannelThumbnail using the new method 2021-07-20 16:21:51 +08:00
infinite-persistence
fc7edc875b
ChannelThumbnail improvements
- [x] (6332) The IntersectionObserver method of lazy-loading loads cached images visibly late on slower devices. Previously, it was also showing the "broken image" icon briefly, which we mended by placing a dummy transparent image as the initial src.
  - Reverted that ugly transparent image fix.
  - Use the browser's built-in `loading="lazy"` instead. Sorry, Safari.

- [x] Size-optimization did not take "device pixel ratio" into account.
  - When resizing an image through the CDN, we can't just take the dimensions of the tag in pixels directly -- we need to take zooming into account, otherwise the image ends up blurry.
  - Previously, we quickly disabled optimization for the channel avatar in the Channel Page because of this. Now that we know the root-cause, the change was reverted and we now go through the CDN with appropriate sizes. This also improves our Web Vital scores.

- [x] Size-optimization wasn't really implemented for all ChannelThumbnail instances.
  - The CDN-optimized size was hardcoded to the largest instance, so small images like sidebar thumbnails are still loading images that are unnecessarily larger.
  - There's a little-bit of hardcoding of values from CSS here, but I think it's a ok compromise (not something we change often). It also doesn't need to be exact -- the "device pixel ratio" calculate will ensure it's slightly larger than what we need.

- [x] Set `width` and `height` of `<img>` to improve CLS.
  - Addresses Ligthhouse complaints, although technically the shifting was addressed at the `ClaimPreviewTile` level (sub-container dimensions are well defined).
  - Notes: the values don't need to be the final CSS-adjusted sizes. It just needs to be in the right aspect ratio to help the browser pre-allocate space to avoid shifts.

- [x] Add option to disable lazy-load Channel Thumbnails
  - The guidelines mentioned that items that are already in the viewport should not enable `loading="lazy"`.
  - We have a few areas where it doesn't make sense to lazy-load (e.g. thumbnail in Header, channel selector dropdown, publish preview, etc.).
2021-07-05 16:04:10 +08:00
infinite-persistence
dec38e1770 ChannelThumbnail: use 1x1 transparent image as starting point instead of 'undefined'.
## Issue
6135

While waiting for the lazy-loader IntersectionObserver to initialize, and for the real image to be fetched, an undefined `src` results in the "broken image" thumbnail.

## Fix
Use a transparent image as the starting point. This visually retains the current behavior but minus the "broken image" part.
2021-06-02 08:20:37 +08:00
infinite-persistence
2a6df18b72
ChannelThumbnail fixes (#6075)
* Restore "use cdn for channel thumbnails"

This reverts commit e7adc607fa.

* ChannelThumbnail: disable optimization in Channel Page and for GIFs

## Issue
5564: Don't use optimized URLs on channel pages (profile/banner)

## Notes
This is not the best/full solution yet, but it is better than what we have to today (one step in the right direction).

Optimized channel thumbnail size is currently hardcoded to a lowest common denominator.
- Pro(s):
  - For images used in multiple places (different sizes) in a page, the total time needed to get the optimized version for each size is too much. Also, the optimizer seems to increase the size of the image in some cases. So, getting 1 image and re-using it is faster for this scenario.
  - Simpler code (no need to mount first -> get dimension -> load image)
- Cons:
  - We aren't fully optimizing the size, so not really addressing Core Web Vitals score problem.
    - e.g. in the front page, we could have used a smaller image for the channel thumbnails.
  - We haven't address the problem with large screen sizes.

* Restore channel selector

This reverts b5cc0bb42d

* ChannelThumbnail: fix lazy-loading

- Closes 6066: Revisit lazy-loading Channel thumbnails
- Properly fixes 5933: Thumbnail lazy-load causes ChannelSelector icon to not update.
    - Add effect-dependency on `channelThumbnail` and `thumbError`.
- Really perform the lazy-loading now.
    - `data-src` was not used, so it wasn't actually lazy loading previously.
2021-05-17 15:51:21 -04:00
Sean Yesmunt
6d89f0df7e hyperchats 2021-04-23 16:20:17 -04:00
infinite-persistence
b5cc0bb42d Disable thumbnail lazy-load for Channels
## Issue
5933: Thumbnail lazy-load causes ChannelSelector icon to not update
2021-04-23 00:23:36 -04:00
Sean Yesmunt
e4a3e54613 move lazy loading effect into effects/ 2021-04-14 15:25:19 -04:00
Louis Sandoval
a7cb0e240e Fix #5795 - Claim images not lazy loaded 2021-04-14 15:25:19 -04:00
infinite-persistence
e7adc607fa Revert "use cdn for channel thumbnails"
This reverts commit b231b1a51f.

## Issue
5564: Don't use optimized URLs on channel pages (profile/banner)
2021-02-23 12:53:16 -05:00
Sean Yesmunt
b231b1a51f use cdn for channel thumbnails 2021-02-18 17:24:31 -05:00
Sean Yesmunt
09b689ba1c add channel staked amount indicator on channel thumbnails 2021-02-18 01:14:39 -05:00
Franco Montenegro
77d90b807e Display default image for channel thumbnail on error 2021-01-29 14:50:36 -05:00
Sean Yesmunt
9801f43d3e hack together a thumbnail message on the channel page 2020-11-19 13:33:37 -05:00
Sean Yesmunt
788fd153da fix thumbnail gifs in comments 2020-10-21 16:45:43 -04:00
Sean Yesmunt
5ac404c01a comment cleanup 2020-09-29 17:12:32 -04:00
Sean Yesmunt
90327a72ed add comments behind a flag 2020-07-23 11:03:00 -04:00
Sean Yesmunt
259f51abd6 style pass for channel edit
clean up sections and improve navigation handling

cleanup + image upload modal styling
2020-07-01 22:04:23 -04:00
jessop
91662a9d57 force https thumbs or handle img src error 2020-06-08 09:42:19 -04:00
Sean Yesmunt
85ec35f246 pause gifs until hover round 2 2020-05-28 13:07:51 -04:00
Sean Yesmunt
06f71f2f0d Revert "pause gifs until hover"
This reverts commit e97a03c5c9.
2020-05-28 12:31:45 -04:00
Sean Yesmunt
e97a03c5c9 pause gifs until hover 2020-05-28 11:39:39 -04:00
Sean Yesmunt
8a9a79720b add aria-label and alt messages 2020-01-30 15:56:54 -05:00
Jeremy Kauffman
b374e94710 fix small channel image previews 2019-12-09 10:19:49 -05:00
Sean Yesmunt
01a45e00bb clean up styles 2019-12-04 13:24:57 -05:00
Oleg Silkin
6018429e68 Adds thumbnail support for default, null-valued thumbnails 2019-12-04 13:24:57 -05:00
Sean Yesmunt
15815e5071 remove [data-mode='dark'] 2019-11-22 16:45:33 -05:00
Sean Yesmunt
6ad31a3ce9 refactor lbrytv web server 2019-11-11 13:27:29 -05:00
Renamed from src/ui/component/channelThumbnail/view.jsx (Browse further)