Commit graph

52 commits

Author SHA1 Message Date
infinite-persistence
37b85b16c3
Fetch and store active-livestream info in redux 2021-09-25 12:05:06 +08:00
infinite-persistence
e624ed8c51
-- tmp revert --
This reverts commit 3b47edc3b9 to allow putting back in the original commits.
2021-09-25 12:05:05 +08:00
infinite-persistence
3b47edc3b9
Livestream category improvements (#7115)
*  Remove old method of displaying active livestreams

Completely remove it for now to make the commit deltas clearer.
We'll replace it with the new method at the end.

* Fetch and store active-livestream info in redux

* Tiles can now query active-livestream state from redux instead of getting from parent.

*  ClaimTilesDiscover: revert and cleanup

## Simplify
- Simplify to just `uris` instead of having multiple arrays (`uris`, `modifiedUris`, `prevUris`)
- The `prevUris` is for CLS prevention. With this removal, the CLS issue is back, but we'll handle it differently later.
- Temporarily disable the view-count fetching. Code is left there so that I don't forget.

## Fix
- `shouldPerformSearch` was never true when `prefixUris` is present. Corrected the logic.
- Aside: prefix and pin is so similar in function. Hm ....

* ClaimTilesDiscover: factor out options

## Change
Move the `option` code outside and passed in as a pre-calculated prop.

## Reason
To skip rendering while waiting for `claim_search`, we need to add `React.memo(areEqual)`. However, the flag that determines if we are fetching `claim_search` (fetchingClaimSearchByQuery[]) depends on the derived options as the key.

Instead of calculating `options` twice, we moved it to the props so both sides can use it.

It also makes the component a bit more readable.

The downside is that the prop-passing might not be clear.

* ClaimTilesDiscover: reduce ~17 renders at startup to just 2.

* ClaimTilesDiscover: fill with placeholder while waiting for claim_search

## Issue
Livestream claims are fetched seperately, so they might already exists. While claim_search is running, the list only consists of livestreams (collapsed).

## Fix
Fill up the space with placeholders to prevent layout shift.

* Add 'useFetchViewCount' to handle fetching from lists

This effect also stashes fetched uris, so that we won't re-fetch the same uris during the same instance (e.g. during infinite scroll).

*  ClaimListDiscover: revert and cleanup

## Revert
- Removed the 'finalUris' stuff that was meant to "pause" visual changes when fetching. I think it'll be cleaner to use React.memo to achieve that.

## Alterations
- Added `renderUri` to make it clear which array that this component will render.
- Re-do the way we fetch view counts now that 'finalUris' is gone. Not the best method, but at least correct for now.

* ClaimListDiscover: add prefixUris, similar to ClaimTilesDiscover

This will be initially used to append livestreams at the top.

*  Re-enable active livestream tiles using the new method

* doFetchActiveLivestreams: add interval check

- Added a default minimum of 5 minutes between fetches. Clients can bypass this through `forceFetch` if needed.

* doFetchActiveLivestreams: add option check

We'll need to support different 'orderBy', so adding an "options check" when determining if we just made the same fetch.

* WildWest: limit livestream tiles + add ability to show more

Most likely this behavior will change in the future, so we'll leave `ClaimListDiscover` untouched and handle the logic at the page level.

This solution uses 2 `ClaimListDiscover` -- if the reduced livestream list is visible, it handles the header; else the normal list handles the header.

* Use better tile-count on larger screens.

Used the same method as how the homepage does it.
2021-09-24 10:26:21 -04:00
infinite-persistence
afe4fee3f3 Fallback image for <FileThumbnail>
## Ticket
5457 Create file thumbnail fallback image for odysee

## Approach
Since `background-image` does not invoke an `onerror` event, create a test Image instance to have the `onerror` capability. This technique is used by majority of plugins. No additional fetch is seen with this technique.
2021-08-17 19:46:54 -07:00
jessopb
5f55603fb2
send recsys powered-by (#6875)
* send recsys powered-by

* update lighthouse call in useLighthouse

* rename select selectors

* update channel search too
2021-08-17 10:03:25 -04:00
zeppi
9889c258e3 livestream api constant rename 2021-07-28 16:51:11 -04:00
infinite-persistence
f7cf21b661 useLazyLoading: start loading when near viewport
## Issue
#6332 <Thumbnail lazy-loader is too slow || Use browser-level lazy-loading>

## Change
Switch from "threshold-based check" to "viewport distance comparison" using the `rootMargin` parameter. The root is the viewport.

This change makes it closer to the native `loading="lazy"` behavior, where it starts to load when approaching the viewport. Chrome I believe uses 3000px distance -- I think 500px is a good compromise for now. Can adjust further.

## Future
- We are currently creating N instances of IntersectionObserver.
  - https://developers.google.com/web/updates/2016/04/intersectionobserver
  - "If you need to observe multiple elements, it is both possible and advised to observe multiple elements using the same IntersectionObserver instance by calling observe() multiple times."

This would probably need a refactor to make ClaimList (or something higher) own the IntersectionObserver.
2021-07-12 17:06:30 -04:00
infinite-persistence
36ac9e038d Wunderbar: change throttle to debounce + add min chars
## Issue
6314: prevent lighthouse spam from wunderbar

## Changes
- Wunderbar: change throttle to debounce + add min chars.
- useLighthouse: added option to not throttle.
2021-06-23 14:15:59 -04:00
infinite-persistence
510056a479 WunderBar customizations for re-use 2021-06-18 15:46:51 -04:00
zeppi
ca116ba010 wip
wip

wip - everything but publish, autoplay, and styling

collection publishing

add channel to collection publish

cleanup

wip

bump

clear mass add after success

move collection item management controls

redirect replace to published collection id

bump

playlist selector on create

bump

use new collection add ui element

bump

wip

gitignore

add content json

wip

bump

context add to playlist

basic collections page style pass wip

wip: edits, buttons, styles...

change fileAuthor to claimAuthor

update, pending bugfixes, delete modal progress, collection header, other bugfixes

bump

cleaning

show page bugfix

builtin collection headers

no playlists, no grid title

wip

style tweaks

use normal looking claim previews for collection tiles

add collection changes

style library previews

collection menulist for delete/view on library

delete modal works for unpublished

rearrange collection publish tabs

clean up collection publishing and items

show on odysee

begin collectoin edit header and css renaming

better thumbnails

bump

fix collection publish redirect

view collection in menu does something

copy and thumbs

list previews, pending, context menus, list page

enter to add collection, lists page empty state

playable lists only, delete feature, bump

put fileListDownloaded back

better collection titles

improve collection claim details

fix horiz more icon

fix up channel page

style, copy, bump

refactor preview overlay properties,
fix reposts showing as floppydisk
add watch later toast,
small overlay properties on wunderbar results,
fix collection actions buttons

bump

cleanup

cleaning, refactoring

bump

preview thumb styling, cleanup

support discover page lists search

sync, bump

bump, fix sync more

enforce builtin order for now

new lists page empty state

try to indicate unpublished edits in lists

bump

fix autoplay and linting

consts, fix autoplay

bugs

fixes

cleanup

fix, bump

lists experimental ui, fixes

refactor listIndex out

hack in collection fallback thumb

bump
2021-06-08 13:25:52 -04:00
infinite-persistence
4dc333de41
Fix blank gif avatars (#6060)
## Issue
6010: hyperchat send display issues with GIF profiles

The FreezeFrameWrapper have no `src` to freeze due to the lazy loading.

## Fix
Delay the freezing by making the lazy-load effect return a state to indicate when then `src` has been loaded.

Since the lazy-loader will `unobserve` after loading, the state will never go back to false, so we don't need to handle the case of preventing `new FreezeFrameWrapper` from being called multiple times from it's effect.
2021-05-14 11:00:07 -04:00
infinite-persistence
0258c2d3c3 useGetLivestreams: add ability to filter by minimum viewers 2021-04-30 14:11:42 -04:00
infinite-persistence
355bc9296c Pull out livestream data-fetch into an effect.
Differences with the original from 'livestreamList/view.jsx':

- Returns null instead of an empty object for the empty case. This removes the need for clients to create a temp array to determine if the list is empty ('Object.keys(x).length').

- Allow option to not periodically refresh by setting the interval to 0.
2021-04-30 14:11:42 -04:00
Sean Yesmunt
f2d83cbf9d fetch ads provider for all homepage videos (but still only show ads for unauth users) 2021-04-26 16:38:33 -04:00
Sean Yesmunt
e4a3e54613 move lazy loading effect into effects/ 2021-04-14 15:25:19 -04:00
Sean Yesmunt
216d0fefa0
fix typo 2021-04-12 13:14:20 -04:00
Sean Yesmunt
e08b71774c pre-roll ads 2021-04-12 12:55:06 -04:00
zeppi
6a16d8e0cd fix bad lighthouse results 2021-01-28 15:35:15 -05:00
infiinte-persistence
912489cce0 Make zoom level persistent on Desktop
- uses local storage.
- for 'web', the browser is already handling that.
2021-01-26 10:20:59 -05:00
infiinte-persistence
d0f42ce6b3 Desktop: Enable 'Alt+Left/Right' for history navigation.
## Why
- Consistent behavior across Web and Desktop.
2020-12-30 14:55:24 -05:00
Sean Yesmunt
0cc3af28a3 flow fixes 2020-12-16 10:52:22 -05:00
Sean Yesmunt
05d625484d improve jumpiness on search suggestions 2020-12-11 14:37:06 -05:00
Sean Yesmunt
120300643f improved mobile-search experience 2020-12-11 14:37:06 -05:00
Sean Yesmunt
30d8a0406d wunderbar improvements 2020-12-03 12:39:12 -05:00
Sean Yesmunt
19fb7d7f06 new layout 🕺 2020-09-29 17:12:32 -04:00
Sean Yesmunt
3b4ac976b6 Revert "full width homepage"
This reverts commit 0018fdaebc.
2020-08-18 12:53:07 -04:00
Sean Yesmunt
0018fdaebc full width homepage 2020-08-18 09:25:36 -04:00
Sean Yesmunt
692862c769 collapsable sidebar initial commit 2020-08-11 17:04:14 -04:00
btzr-io
036aedd88d use redux to load post content 2020-08-04 11:49:12 -04:00
btzr-io
c47c6f6034 fix story validation and content loading on web 2020-08-04 11:49:12 -04:00
infiinte-persistence
2ea66f9d8d Refactor zooming code into "effects/use-zoom.js" 2020-07-14 16:08:24 -04:00
Sean Yesmunt
78422ccfb2 fix thumbnails on desktop 2020-06-03 13:49:44 -04:00
Sean Yesmunt
48eac1188f always use thumbnail from claim if it exists on web 2020-06-02 16:10:43 -04:00
jessop
e3c2919373 rename lbrytv to web
language and API consts

improve customization
custom homepages
get config from .env.default
custom title and logo

small changes

add pinned item to sidebar

rebase?
2020-05-25 17:21:02 -04:00
Baltazar Gomez
ca4bbf53df
Support drag-and-drop file publishing (#4170) 2020-05-25 10:27:36 -04:00
btzr-io
036cf734c6 prevent state updates after component unmounted 2020-05-13 10:18:36 -04:00
Baltazar Gomez
1f6dd89e55 create effect to load blob from streaming url
Use this on the web for files that need to wait for the full stream
2020-05-13 10:18:36 -04:00
Baltazar Gomez
dc10a2ddf1 create effect for file stream: fix #2777
Use this effect instead of the "file://" protocol
2020-05-13 10:18:36 -04:00
JT Turner
b0ed767c27 Fix channel reply switching channels. 2020-05-01 14:46:29 -04:00
Mr. X
4efc0fbd3e fix: better hover use-effect 2020-04-23 13:10:41 -04:00
seanyesmunt
691e648f6a ensure we properly track if users want to skip the rewards intro 2020-03-16 14:49:47 -04:00
seanyesmunt
292f547c59 initial commits included in #3809 2020-03-16 14:49:47 -04:00
Sean Yesmunt
80f24edcb3 Revert "skip rewards validation on future sign ins if user clicks 'skip' button"
This reverts commit 8a73cdbc0b.
2020-03-13 21:16:30 -04:00
Sean Yesmunt
8a73cdbc0b skip rewards validation on future sign ins if user clicks 'skip' button 2020-03-13 18:25:04 -04:00
jessop
33672a789b app plays embed in iframe
make player full screen and prepared for overlay actions

small changes

cleanup
2020-01-28 10:20:54 -05:00
Sean Yesmunt
e1dd28fff6 use new player api for streaming 2020-01-24 11:26:19 -05:00
Sean Yesmunt
ad125b3d2a bump sdk and comment out thumbnail gets on desktop 2020-01-17 14:57:09 -05:00
Sean Yesmunt
eab7807d59 don't call get for hidden claims 2020-01-13 14:38:14 -05:00
Sean Yesmunt
c29be5b7ec automatically get free images and display as thumbnails 2020-01-13 14:38:14 -05:00
Sean Yesmunt
86cfa746de mobile view 2019-12-20 15:03:18 -05:00