Commit graph

1993 commits

Author SHA1 Message Date
infinite-persistence
7a8d213861
Eliminate CLS in Recommended due to wrapper mismatch
Seem like `type === small` was missed out, so it was using a wrapper than necessary, causing the shift.
2021-07-23 13:23:52 +08:00
zeppi
038431f95c channel follow first run on master 2021-07-23 00:00:32 -04:00
zeppi
ed0387d94a pinning 2021-07-22 23:24:55 -04:00
zeppi
d88752c646 music icon, fix lint 2021-07-22 17:31:46 -04:00
Anthony
78b4fa05b3 pull out variable for max and min fiat amounts 2021-07-22 14:06:59 -04:00
Anthony
7975ccf3e0 disable button if theres a fiat tip error 2021-07-22 14:06:59 -04:00
Anthony
713dc69ed7 add check for two decimals and fix showing error for fiat tip 2021-07-22 14:06:59 -04:00
zeppi
f4559c1cce fileSubtitle recon 2021-07-22 12:09:54 -04:00
zeppi
8919182c0c default avatar config 2021-07-22 09:44:57 -04:00
btzr-io
86e1cfc3dd refactoring of claim preview aria-label format 2021-07-22 03:24:25 -05:00
btzr-io
2a291366da use full sentences with variables for claim preview aria-label 2021-07-22 02:37:57 -05:00
infinite-persistence
032e17cecd
Improve CLS on Posts
## Issue
6068 Fix "Cumulative Layout Shift" for Core Web Vitals

In Posts, the Comments section appears first while we fetch the MD file. When the MD is fetched, Comments get pushed to the bottom (or shifted up for short posts), hence the red CLS scores.

## Approach
There are too many layers between `<FilePage>` and `<DocumentViewer>` to pass the `loading` state around to hide the Comments section, so just make Comments fade in after a 2s delay.

## Changes
- Posts: Add 2s fade-in delay to Comments.
- Posts: remove the gray placeholder. This improves the score a bit more, and reduces flicker as well. There's already a spinner from `FileRenderInline` to tell the user to be patient.
- Posts: add a minimum 30vh height so that short posts don't get collapsed too much, causing the `FileDetails` and Comments to shift. Small shifts are fine as long as CLS is below 0.1.
2021-07-22 10:38:01 +08:00
Baltazar Gomez
c983af927f
Merge branch 'master' into accessibility 2021-07-21 20:59:12 -05:00
infinite-persistence
50c606d916 claimListDiscover: don't re-render until query is done
## Issue
6542 Livestream listing and blocked list kills CLS score

This is basically a repeat of what was done on `claimTileDiscover` (homepage), but now on `claimListDiscover` (category pages).

This handles the unnecessary re-render when:
- the uri list temporarily being zero while waiting for new claim-search results.
- livestream claim-search invalidating the list.

## Changes
Store the last uri list and use that when we know that claim-search is still not done.

## Tests
1. Ran Lighthouse on category pages (force a livestream channel on it). CLS score must be green.
2. Block `claim_search` from Dev Tools and move to another category. The page should say "timed out" instead of "no results" (i.e. maintain existing behavior).
2021-07-21 21:51:12 -04:00
zeppi
1994b5da04 guidelines optional in sidenav 2021-07-21 20:26:17 -04:00
zeppi
fbf105e113 fileActions recon 2021-07-21 18:37:43 -04:00
zeppi
91b908ad50 pubfile copy 2021-07-21 16:18:46 -04:00
infinite-persistence
4fc6b89975 Fix reposted channels incorrectly showing the channel thumb
## Issue
6589

## Notes
`parseURI` will return `isChannel=false` due to the reposted channel URL not having the '@' symbol.

Since we already have the claim object, check `value_type` directly instead.
2021-07-21 14:41:47 -04:00
saltrafael
b164a5d1f4 Pop up Menu Fixes and Improvements
Pop up Menu Fixes and Improvements

Improve re-directs

Fix file deletion

Improve code, and more

Fix List Layout collection popup

Allow to edit list

Fix blocking when not logged or no channel

Fix Edit and Delete showing for not owned Lists

Fix actions breaking when not logged in

Fix List options not showing

Lint

Shorten logic

Lint
2021-07-21 14:40:44 -04:00
zeppi
fdca58727c restore paid content 2021-07-21 12:49:56 -04:00
zeppi
1600bb69b9 sms copy 2021-07-21 08:11:33 -04:00
infinite-persistence
6b2548cc49
Fix channel-selector thumbnail not updating
Recently changed to `<OptimizedImg>`, which was assuming the `src` never changes.

dejavu ... we also hit this issue when implementing the `IntersectionObserver` lazy-loading.
2021-07-21 16:38:54 +08:00
btzr-io
6a8d32c9bf add SkipNavigationButton to its own file 2021-07-20 19:31:26 -05:00
btzr-io
f6261611f0 fix ClaimPreview errors 2021-07-20 18:49:41 -05:00
Dispatch
e138673d27
Merge pull request #6508 from saltrafael/live_comments
Fix 'Recent Comments' button for livestreams
2021-07-20 12:33:52 -07:00
zeppi
283bbb52fa disable google imasdk 2021-07-20 15:12:14 -04:00
zeppi
8674b97be8 disable aniview 2021-07-20 15:12:14 -04:00
Baltazar Gomez
0db4e4ab51
Merge branch 'master' into accessibility 2021-07-20 12:24:36 -05:00
btzr-io
bc2a8ba77d fix accessibility issue on rewards page #5991 2021-07-20 12:14:28 -05:00
zeppi
e4f1d4221b header notify recon 2021-07-20 12:32:17 -04:00
zeppi
8301244507 commentReactions recon ma 2021-07-20 11:17:44 -04:00
zeppi
27400cbe03 yt recon 2021-07-20 10:37:46 -04:00
zeppi
e834a4aa51 change uploads copy 2021-07-20 10:33:48 -04:00
infinite-persistence
11b5eb49a0
Optimize ChannelThumbnail using the new method 2021-07-20 16:21:51 +08:00
infinite-persistence
68432eef26
OptimizedImage - wrapper for CDN-optimized image
Objective:
- Get appropriately sized images to improve performance and Core Vitals score.
- Ensure images using "objectFit=cover" doesn't get stretched out if the source is large enough.
- Peg to 100px increments for better caching.

Notes:
- Skip images hosted in '/public'. If we really want to optimize it, then we'll need to provide the full path in the code, otherwise CDN lookup will fail.
2021-07-20 16:21:50 +08:00
infinite-persistence
08738ffcee
Reaction-fetch: handle "deleted all channels"
- use `selectActiveChannelClaim` as that takes the current channel list into account (i.e. correct state when all channels are deleted).
    - `selectActiveChannelId` should probably be removed or not exposed through a selector, as it is not updated when channel list changes?
2021-07-20 15:22:50 +08:00
infinite-persistence
c71e4718d0
Remove (revert) reaction-fetch hardstop
Root-cause is known, so removing it to detect other issues.
2021-07-20 15:22:49 +08:00
zeppi
4bf7c68574 use config for showTagsIntro 2021-07-19 22:46:43 -04:00
zeppi
765cef7564 recon notify components 2021-07-19 22:16:29 -04:00
zeppi
3dc7c35cd7 recon 2021-07-19 21:46:28 -04:00
zeppi
f6dc48fdc0 use odysee recsys plugin 2021-07-19 17:30:44 -04:00
zeppi
26e67b375c more 2021-07-19 13:52:15 -04:00
zeppi
50875566ad more 2021-07-19 13:52:15 -04:00
Anthony
fdfa2f1660 hotfix for bug 2021-07-19 11:08:59 -04:00
jessopb
ae2354a0e0 Revert "move stuff to web (#6537)"
This reverts commit a6c413da5c.
2021-07-19 10:12:57 -04:00
infinite-persistence
6f4ce0a57c
Apply placeholder images
https://lbryians.slack.com/archives/C81FGKR51/p1624278721203900?thread_ts=1624269131.202200&cid=C81FGKR51

The intrinsic size needs to be at least equal the final image's size. Stretching, SVGs, etc. doesn't count.
2021-07-19 12:07:26 +08:00
zeppi
e03325d0e4 remove old stripe setting 2021-07-18 22:30:12 -04:00
jessopb
a6c413da5c
move stuff to web (#6537) 2021-07-18 21:57:36 -04:00
mayeaux
4fe17363f3
disable review button if no card saved also some cleanup (#6535)
* disable review button if no card saved also some cleanup

* fix flow errors
2021-07-18 21:49:21 -04:00
jessopb
5a04d0fea0
some recon (#6532) 2021-07-18 13:06:52 -04:00
zeppi
dfc013d423 more recon 2021-07-18 11:27:05 -04:00
infinite-persistence
1fa7533ee3
Hide 'download' for livestreams
6517
2021-07-18 23:10:59 +08:00
infinite-persistence
f3ed597ff6
i18n: Fix invalid template literal use + split strings 2021-07-18 22:42:21 +08:00
Anthony
6aea8e38bc fix css 2021-07-17 13:19:33 -04:00
zeppi
7ffd59c169 more lint 2021-07-17 13:19:33 -04:00
zeppi
27aa4e4a22 lint 2021-07-17 13:19:33 -04:00
Anthony
7bb5df97fd Stripe 2
show visible card and add remove card button

show your transactions even if you dont have a card

fix presentational issues

show your transactions even if you dont have a card

fix presentational issues

add link to channel section

update yarn

show donation location

add remove card modal still needs completion and also changed how stripe is used on settings stripe card page

add confirm remove card modal to router

move bank account stuff to settings page

move account functionality to settings page

continuing to move account transactions to settings

list transactions for creator

updating copy

touchup tip error

do a better job autofocusing

bugfix

show an error on the card page if api returns 500

building out frontend for comment tip

display dollar sign if its a fiat tip

more frontend work

more frontend work

more frontend bug fixes

working with hardcoded payment intent id

working but with one bug

bugfixed

add toast if payment fails

add add card button

cant get claim id but otherwise done

more frontend work

call is working

show fiat for livestream comments

add is fiat on comments

round and show values properly

dont allow review if tiperror

copy displaying properly

disable buttons conditionally properly

remove card button working

remove card working with a workaround by refreshing page

bugfix

send toast when tip on comment

jeremy frontend changes

only show cart on lbc
2021-07-17 13:19:33 -04:00
infinite-persistence
cd32fb71c7
Experiment: hardstop reaction-fetch at 500
(Hypothetical max comment of 3000) / (10 comments per page) = 300.
Cap at 500 to stop runnaway loops.
2021-07-17 22:19:15 +08:00
infinite-persistence
47d39b20d3
Stop fetching reacts if failed for 3 times
Not sure if this will ever occur, but technically possible from the code point of view. Try adding this to see if it stops the spikes in `reaction.list` calls.
2021-07-17 13:53:58 +08:00
infinite-persistence
9c05239b04
Don't show "comments disabled" while still fetching.
## Issue
6513
2021-07-17 12:09:42 +08:00
keikari
1882e78d51 Tried to clear errors mentioned in lint details
154:28  error    Trailing spaces not allowed     
 161:6   error    Unexpected tab character
2021-07-16 18:32:41 -04:00
keikari
299682a6dc Make "support-pop-up" text match claim type.
Confirm button label will also show "your" instead of "this" for your own claims.
2021-07-16 18:32:41 -04:00
keikari
08dd1cbf0b Minor fix suggestion: Default to "TAB_BOOST" when supporting own claims
Someone mentioned about odysee.com showing "tip" related text when supporting own claim. Now it should default to "Boost" related text for own claims.

L167: Not edited but not sure if "claimIsMine" is needed there any more.
2021-07-16 18:32:41 -04:00
zeppi
70af46149d discover channelIds from homepages 2021-07-16 18:31:48 -04:00
saltrafael
9cdfb239c0
Playlist style fixes (#6509)
* Fix spacing on List page

* Fix alignment on List sidebar
2021-07-16 15:13:28 -04:00
Baltazar Gomez
e59c67a144
render filedrop for only authenticated users (#6466) 2021-07-16 14:53:14 -04:00
Marko Lorentz
e44b7b929e
i18n: Added missing state handling for RTL languages (#6275)
* Add RTL Support

* Add Arabic to supportedLanguages

* Fixed lint errors

* Allowed RTL flow for Hebrew

Co-authored-by: Sana <sana.benhassouna@ensi-uma.tn>
2021-07-16 13:51:08 -04:00
btzr-io
4d28c5d208 use aria current 2021-07-16 10:58:40 -04:00
btzr-io
504f230d59 show currently active playing item on playlist: #6204 2021-07-16 10:58:40 -04:00
infinite-persistence
ad7db1e939 Reactions: wait for previous fetch to complete before fetching again.
This was causing duplicate IDs to be fetched over and over again when scrolling quickly.
2021-07-16 10:54:12 -04:00
infinite-persistence
a13708f4dd Handle the case of all replies are blocked.
In this scenario, `comment.List` does not return `comment`. I was expecting an empty array.

Handled accordingly.
2021-07-16 10:54:12 -04:00
infinite-persistence
08c701ba19 Restore comment pagination
This reverts commit e6addb8c2a, reversing
changes made to 47b594107a.
2021-07-16 10:54:12 -04:00
saltrafael
b5ad359e32 Fix 'Recent Comments' button for livestreams 2021-07-16 10:55:47 -03:00
btzr-io
ba763a85cd remove react-helmet 2021-07-16 02:22:54 -05:00
btzr-io
d1a8f28464 use new aria label format for claim preview 2021-07-16 01:53:38 -05:00
infinite-persistence
73c872501c
Copy Link: use canonical
## Issue
6497
2021-07-16 10:18:37 +08:00
btzr-io
06e6feaf3b add date to claim-preview aria-label 2021-07-15 19:44:51 -05:00
btzr-io
d56b32ff19 simplify localization of claim-preview aria-label 2021-07-15 19:13:54 -05:00
btzr-io
60c5d3bf67 add more info for claim-preview-tile aria label 2021-07-15 18:12:11 -05:00
zeppi
b2b88b466e fix colon handling 2021-07-15 17:48:02 -04:00
btzr-io
7c8c43d3a7 fix file actions accessibility 2021-07-15 15:14:21 -05:00
btzr-io
6354a77bf1 make skip navigation link first focusable element 2021-07-15 13:32:58 -05:00
infinite-persistence
a2a1ddb403
Revert "Comments Pagination #6390"
This reverts commit 16ef013025, reversing
changes made to fba8b89b3b.
2021-07-15 22:23:26 +08:00
infinite-persistence
08548916df
Revert "Fix continuous reaction fetch in incognito"
This reverts commit ff059c58fd.
2021-07-15 22:23:14 +08:00
infinite-persistence
47b594107a
Use better icon for "Copy Link"
Not re-using the same icon as "Share".
2021-07-15 14:40:10 +08:00
btzr-io
d0e865b9ec define main language on html head 2021-07-15 01:12:18 -05:00
btzr-io
eb1ab935c5 consistent menu button styles and minor css fixes: #5145 2021-07-15 00:40:40 -05:00
btzr-io
4d4fbe4e9a fix typo 2021-07-14 22:12:40 -05:00
btzr-io
6d7e92d73b improve header accessibility
add skip navigation link + minor fixes
2021-07-14 22:08:30 -05:00
infinite-persistence
ff059c58fd
Fix continuous reaction fetch in incognito
myReactions will never be filled in incognito. Also, it's probably enough to just check othersReactions, but for now, still do both when logged in.
2021-07-15 09:58:15 +08:00
btzr-io
7aaaf998a8 use aria-hidden on all tile cards thumbnails 2021-07-14 18:58:56 -05:00
btzr-io
695343532d minor css fixes: #5145 2021-07-14 18:35:49 -05:00
btzr-io
484f2830c8 improve accessibility of claim preview tiles: #6480 2021-07-14 17:12:07 -05:00
btzr-io
6df622307c simplify card tile keyboard navigation 2021-07-14 15:09:48 -05:00
Baltazar Gomez
2f67ca370e
Merge branch 'master' into accessibility 2021-07-14 13:48:37 -05:00
btzr-io
0397617bed use aria-hidden on all icons by default 2021-07-14 13:44:22 -05:00
zeppi
d612b86a8c homepages v2
homepages served without cache

error catching

memo homepagedata

support auto limit

no more config pins
2021-07-14 14:09:46 -04:00
zeppi
bc4f71ed8c clean 2021-07-14 12:26:21 -04:00
zeppi
7581d914fe hide menu on web for unauth 2021-07-14 12:26:21 -04:00
saltrafael
aced8fb593 Add watch later hover action and Favorites
add watch later hover action

replace watch later popup item for favorites

lint

styling for watch_later overlay

Add label

Use just claim, add requiresAuth

Add list icon

Tone down text

Turn WL Hover Button into component

Change WL hover icons

small revert

Keep watch later in the menu
2021-07-14 11:41:36 -04:00
infinite-persistence
5742e1c2ca
Handle representation of blocked replies
## Issue
- `Comment.replies` currently represent all replies, while `comment.List` returns a filtered version, so the actual replies could be less.
- The actual replies is represented by `total_filtered_items`, but we only get that after making a fetch. So, users could click "Show more" but get nothing.

## Fix
- Stop showing "Show more" based on `total_filtered_items`.
- If there is a balance, display 1 dummy comment to represent all blocked replies. This handles the case of "Show more" being displayed but ended up with 0 replies if all replies were blocked.

## Future
Note that `Comment.replies` might be changed to represented filtered comments in the near future (refer to Beamer), so the GUI is made such that the dummy just won't appear when that change happens.
2021-07-14 15:11:44 +08:00
infinite-persistence
e77a986125
Load comments if spinner is visible from the start
It was previously only responding to scroll events.
2021-07-14 13:00:26 +08:00
infinite-persistence
3d63ce4666
Load comments when approaching viewport
Seeing the spinner too much can be annoying.

- This approach works, but currently, when the list is very long, something is taking up resources and the handler couldn't be processed, so the effect is lost (still seeing the spinner). See 6473.

- Since we are now prefetching, bumped the debounceMs a bit.
2021-07-14 13:00:25 +08:00
infinite-persistence
5ef95846d8
Add AUTO_EXPAND_REPLIES flag to toggle the feature. 2021-07-14 12:58:26 +08:00
infinite-persistence
0cf6fe3df5
Comments Pagination
## Issue
6158 - Support Comment Pagination
2021-07-14 12:58:25 +08:00
infinite-persistence
052aa87ddd
Remove unused items 2021-07-14 11:13:13 +08:00
DispatchCommit
d32af5606b move pre-roll ad logic into it's designated video.js plugin 2021-07-13 22:22:06 -04:00
btzr-io
7398120c0c fix incorrect aria-label in rewards page 2021-07-13 18:09:09 -04:00
btzr-io
2391f66d90 fix upload button on creator analytics: #6323 2021-07-13 18:09:09 -04:00
btzr-io
2dbd5d0f00 fix sidebar shortcut activation on textarea: #6326 2021-07-13 18:07:41 -04:00
btzr-io
97202dd7aa allow other props for lbry icon (aria-hidden) 2021-07-13 16:56:21 -05:00
btzr-io
b595021a7f fix missing aria-label on links / navlinks 2021-07-13 16:38:50 -05:00
btzr-io
c11b73d117 use aria-hidden for icons indside buttons
use aria-expanded for sidebar menu button
2021-07-13 16:23:29 -05:00
btzr-io
9f18822754 use aria-hidden for filedrop component 2021-07-13 15:31:42 -05:00
btzr-io
6eca14f140 fix issue of invalid aria-label values 2021-07-13 15:19:52 -05:00
DispatchCommit
47d9b4a866 fix site detection, add hide logo to macro url 2021-07-13 00:06:32 -04:00
DispatchCommit
8253f5e0dc center play button 2021-07-13 00:06:32 -04:00
DispatchCommit
b777669a7e Add pre-roll ads
change ad macro url
rework video.js load logic
fix autoplay and retry errors
yeet player.ended error
fix another race condition
fix another error message
add allowPreRoll restrictions
fix some lint issues
remove annoying lint rule
remove video.js lazy loading
more linting fixes
2021-07-13 00:06:32 -04:00
infinite-persistence
59a8b9d663 WaitUntilOnPage: take scaling into account
It was waiting too near the viewport to load on certain zoom levels. This will maintain the same physical distance for the "approaching viewport" buffer regardless of zoom levels.
2021-07-12 17:06:30 -04:00
infinite-persistence
ad1c826f2c RSS: Use canonical_url (with ':') instead of slicing to 2 characters.
## Changes
- Change to canonical_url (with ':').
- The old format of 'claimName/claimId' needs to be supported still, since we shipped with it.

## Notes
- It would be nice to use regex instead of 2 separate paths, but I couldn't figure out how to make the koa variables work.
2021-07-12 17:06:03 -04:00
saltrafael
4bd5beb2f6 Fix notification bell toast 2021-07-12 11:03:11 -04:00
infinite-persistence
cd9337f2d4
Skip RSS URL generation if it's not a channel. 2021-07-09 21:54:44 +08:00
infinite-persistence
da8000303b
Add toast feedback for RSS and Link copy action.
6369
2021-07-09 21:54:43 +08:00
infinite-persistence
1f16736e5a
Fix invalid semicolon 2021-07-09 21:28:58 +08:00
infinite-persistence
d97a23b699 Rename default import/exports for clarity in text search (no functional change)
I believe it was just due to copy/pasting from another file and not renaming it.
2021-07-09 08:40:26 +08:00
zeppi
0bb9c520ff fix livestream display 2021-07-08 15:08:53 -04:00
infinite-persistence
67324aca21
Reload page when trying to open stale chunks
https://raphael-leger.medium.com/react-webpack-chunkloaderror-loading-chunk-x-failed-ac385bd110e0

#codesplit
2021-07-08 15:06:09 +08:00
infinite-persistence
3017155867
Don't lazy-load components in ErrorBoundary
We currently handle major errors through ErrorBoundary. If the error is network related, ErrorBoundary ends up blank if it's components are lazy-loaded.

#codesplit
2021-07-08 14:52:29 +08:00
infinite-persistence
a493428247
Skin fiat-tip notification
## Issue
6421 Notification: Fiat Tip Notification
2021-07-08 11:21:58 +08:00
infinite-persistence
52cba611b3
Cleaned up notification constants
- Organized under an object.
- Removed old unused ones.
2021-07-08 11:21:24 +08:00
infinite-persistence
26efe9fd45 Enable 'slow mode' in comments
## Issue
Sub item in <6119 Creator Settings: beyond "Muted Words">

## Changes
- Removed the existing 5s min gap on livestreams.
- Enabled the 'slow mode min gap' in Creator Settings

This change now affects both comments in claims and livestream comments.
2021-07-07 19:31:15 -04:00
zeppi
6761cd2aa6 add star icon 2021-07-07 14:36:20 -04:00
jessopb
be879ae90a
Recon 7 6 b (#6418)
* changes

* clean

* showNoSourceClaims
2021-07-07 14:21:11 -04:00
infinite-persistence
ffadae9373 Remove unused (?) selector 2021-07-07 07:50:59 -04:00
zeppi
b045f62eb7 rm comment 2021-07-06 16:06:58 -04:00
zeppi
e2b8aae554 use ENABLE_MATURE for fileTitleSection 2021-07-06 16:06:58 -04:00
zeppi
6b2569e5f2 use ENABLE_UI_NOTIFICATIONS 2021-07-06 16:06:58 -04:00
infinite-persistence
73e8a99c7e i18n - "LBC" to "Credit" 2021-07-06 14:53:23 -04:00
infinite-persistence
05d831b283 i18n - fiat 2021-07-06 14:53:23 -04:00
infinite-persistence
1f4746ed89 Fix RSS icon not having a gap 2021-07-06 11:21:40 -04:00
infinite-persistence
5d8e3d8b0a
Revert lazy-loading videojs
## Issue
The loading circle wasn't showing up, causing confusion.

Splitting CSS doesn't seem trivial as there seems to be a huge dependency on the load order. Pretty much similar to what this person is facing https://lihautan.com/css-code-splitting/#the-problem

## Change
This reverts videojs-specific changes from 4d638bcf.
2021-07-06 17:04:16 +08:00
jessopb
75a78cb65d
More recon (#6400)
* rm

* rm

* recon

* claimlist recon
2021-07-05 17:45:20 -04:00
infinite-persistence
8d1d2d2cf0 RecommendedContent: prevent excessive render
## Issue
When seeking on a video, RecommendedContent gets re-rendered, which causes the 20 ClaimPreviews to be re-rendered, several times. ClaimPreview has lots of children, plus it's constantly checking against the blacklist, among other things.

## Fix
The culprit seems to be the `recommendedContent` array -- the address may be different, but the contents are the same.
Do a deep compare instead.
2021-07-05 11:03:53 -04:00
zeppi
4f6740d1f8 flow... 2021-07-05 10:02:03 -04:00
zeppi
d34ef851d0 make flow shut up 2021-07-05 10:02:03 -04:00
zeppi
50556bba97 lint master 2021-07-05 10:02:03 -04: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
033b03e6e4
WaitUntilOnPage: respond to window resizing or zooming. 2021-07-05 12:06:55 +08:00
infinite-persistence
bb8fb038ca
WaitUntilOnPage: add option to load when approaching viewport 2021-07-05 12:06:54 +08:00
infinite-persistence
9745d6df3e
WaitUntilOnPage: Fix scroll listener always registered + bump debounce ms
## Issue
The scroll listener never unregisters, and is always registering itself on every scroll. I believe it was done that way to also handle the case of "element is already in viewport when mounted".

## Change
Tried to separate both "element is already in viewport when mounted" and "element scrolled into viewport" into different effects.

The timeout value used is a bit arbitrary, but is needed because the initial size is (0, 0), and to debounce any layout shifts. Reasoning: If an element is explicitly placed under this wrapper, the additional delay is acceptable since it's meant to be lazy-loaded anyway.
2021-07-05 12:06:54 +08:00