Commit graph

1641 commits

Author SHA1 Message Date
infinite-persistence
bd8172693c Re-enable "file download" in Odysee
## Issue
Closes 6167 Make downloading more intuitive / obvious in web mode
2021-06-07 09:18:08 +08:00
infinite-persistence
fae90c4ba1
i18n update
- Screen readers will announce an <img> tag as that, so no need to say "image" again in the `alt` text.
2021-06-07 09:15:55 +08:00
infinite-persistence
f1bf067ebd Combine Buy and Swap
## Issue
5873 Unify swap and buy flow // swaps round 2

## Changes
- Added "Buy|Swap" tab in the Buy Page and display the Swap component when needed.
- Removed 'Swap' button from Wallet Page.
- "Buy More" and related tooltips updated to "Buy or Swap Credits".
2021-06-05 10:07:38 +08:00
Anthony
272eb90392 remove native controls for ios 2021-06-04 15:41:42 -04:00
Anthony
eef218a807 use video js viewer for ios and add playsinline 2021-06-04 15:41:42 -04:00
Thomas Zarebczan
b8c5a0ed29
Add support for reward approval prompt 2021-06-03 14:54:06 -04:00
zeppi
3ce551f106 copy 2021-06-03 12:08:46 -04:00
zeppi
28a3db28b7 use tag to disable interactions on livestreams 2021-06-03 12:08:46 -04:00
zeppi
f386352be3 fix lint 2021-06-02 22:42:50 -04:00
Jeremy Kauffman
22447aa20a
shorter text on sign up 2021-06-02 13:42:30 -04:00
infinite-persistence
a613f28bc8 Login graphic improvements
1. Lock the width of the second pane so that the layout doesn't shift after the image is fetched.
2. The image is huge, so pass through the optimizer.
  - Wait until the container is mounted to get the exact image width.

Unfortunately, it still takes 0.8s on average to fetch the image, regardless of how small the image has been optimized.
Login graphic improvements

1. Lock the width of the second pane so that the layout doesn't shift after the image is fetched.
2. The image is huge, so pass through the optimizer.
  - Wait until the container is mounted to get the exact image width.

Unfortunately, it still takes 1s (on average) to fetch the image, regardless of how small the image has been optimized.
2021-06-02 08:24:35 +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
eba8de1cda i18n update 2021-06-01 13:33:58 -04:00
infinite-persistence
315bbe21b1 Open the sidebar by default
## Issue
Closes "6112 Side menu expanded by default unless collapsed by user"
2021-06-01 11:16:08 -04:00
infinite-persistence
d6d1cf58e9 Fix SidebarNavigation key errors 2021-06-01 11:15:30 -04:00
infinite-persistence
6043b6101b ClaimTilesDiscover: pause visual update until new results are fetched
## Issue
GUI fix for 5979 `claim search runs twice sometimes and "refreshes" view`

The search query might encounter minor alterations after rendered (e.g. for the case of 5979, the `moderation.Blocklist` data came late). The code currently resets the result to 0 before initiating `claim_search`, so we see the GUI blink.

## Idea
There is a possibility that the query-change does not alter the final results in the end. Instead of reseting to the results to zero, hold on to the previous results until the fetch is done.

## Known issue
The tiles no longer blink if there is no change, but the "LIVE" indicator still does. I didn't want to propagate the info too deep, so leaving as is for now. It can be considered a feature ("blinking LIVE indicator" :))

## Results
- No blinking if results stay the same.
- Minimal tile-shifting if new ones are added or removed.
- In the current Odysee homepage, reduced React commits from 88 to 76 (save some CPU cycles).
2021-05-27 13:50:59 -04:00
infinite-persistence
1b3fec0452 Add sign-in graphics for SIMPLE_SITE
Homepages repo: `Issue 64 - Add new graphics to odysee sign in`
2021-05-27 14:21:16 +08:00
infinite-persistence
82aaf361f1 Hide "control tags" except when creating/editing claims.
## Changes:
1) TagSearch: hide the "control tags" in the Creator Settings page (irrelevant).
2) TagSearch: show the "control tags" when creating/editing Channel (let's use `setting.CommentsEnabled` instead).
3) TagSearch: show the "control tags" when creating/editing Content (`disable-comments` can be used to block comments at the per-claim level, e.g. allow comments in general but block only for specific claims).

## Missing pieces:
For (2) and (3), some work is needed to hide the comment GUI when `setting.CommentsEnabled` is disabled for a particular channel. That flag is not ready in Commentron yet, so I'm not sure how this will be done at the moment. In other words, the checkbox does nothing at the moment.

## Potential flaw:
This change will hide all control tags. If we have more tags in the future and would like to selectively disable some, we'll have to change this parameter to an array instead. Since the usage is not widespread at the moment, a single `disableControlFlag` seems cleaner (don't over-think it yet).
2021-05-26 15:38:29 -04:00
infinite-persistence
2b70ad667b Add/implement SettingsCreatorPage 2021-05-26 15:38:29 -04:00
infinite-persistence
b2c2096da5 TagsSearch: tweaks to allow re-use beyond tags
- Allow 'followed' and 'unfollowed' list to be overridden via props.
- Allow labels to be overridden via props.
- Add ability to disable "Suggestions"
2021-05-26 15:38:29 -04:00
infinite-persistence
1008724761 Fix lint 2021-05-26 15:38:29 -04:00
infinite-persistence
cded632fd2
DateTime: avoid unnecessary update (#6110)
## Issue
Part of `5834 Performance investigation`

In a homepage with 120 tiles, the lists get rendered 3 times during initial update. The sub-components are updating recursively (will investigate), so instead of 120 DateTime renders, we have 1000+ renders.

The resolved DateTime string for `timeAgo` rarely changes, and even if the string was "a few seconds ago", there's no real need to constantly update it.

## Change
Require a minimum 1-minute delta when deciding whether the component should update. Clients can change this value as needed.

## Test
- [x] Verified `shouldComponentUpdate` doesn't end up taking more time than not having it (it's in micro-second range, compared to the millisecond render).
- [x] Profiler showed no significant improvement for low number of DateTime components, but for the 120 DateTime case, almost 1/4 of a second is saved.
2021-05-24 18:29:58 -04:00
infinite-persistence
9e13596104 Fix 5932 "no way to buy Paid Images or Posts"
- FileRenderInitiator: we don't display if it's not Audio or Video ("playables"). But only do that if it's free or was purchased, otherwise there's no button to buy it.

- FileRenderInline: if the user have not purchased it, don't show anything (not even the spinner).
2021-05-24 11:07:13 -04:00
infinite-persistence
b101cb304f Auto fetch paid-content if already paid.
Seems odd to force users to manually "play" purchased files.
2021-05-24 11:07:13 -04:00
Thomas Zarebczan
b4da616176
Fetch last 75 comments for livestreams
We only show 75 anyway...
2021-05-21 15:48:43 -04:00
saltrafael
2852138c3a
allow sending directly to a channel or content address (#5990)
* allow sending directly to a channel or content address
2021-05-20 15:30:40 -04:00
infinite-persistence
2dac41e5e5
Mute video when autoplay is blocked by browser policy (#6087)
## Issue
When opening a video directly in Chrome Incognito, the video should autoplay (since that's the default Lbry setting), but it doesn't due to browser policy
https://developers.google.com/web/updates/2017/09/autoplay-policy-changes

## Changes
- We don't want to forcefully mute the video when `autoplay=true`; we just want to do it when the browser policy is applied.
- Fortunately, there is already an existing code-block for us to check that.

## Test cases
- [x] "Autoplay=Off" should not be affected.
- [x] After manually unmuting, the next autoplayed video should not be muted (this is "user interacted" opening, so the policy allows autoplay)
- [x] If manually muting, the next autoplayed video should retain user's last setting.

## Known issues
- I've seen `error` occasionally being undefined in the `catch` block. In those cases, the solution doesn't work. We could remove `if (player.autoplay() && !player.muted())` and simply just try muting it, but for now it's better to ensure `NotAllowedError` is due to unmuted first before applying the fix.
- This doesn't work for Firefox as there is an explicit "Allow Autoplay" button in the address bar that user needs to click themselves. Applies to all sites.
2021-05-19 11:56:54 -04:00
infinite-persistence
df03cf1032
Skip thumbnail fetch if autoplay is ON (#6084)
It's useful to show the thumbnail as the player's backdrop when Video Autoplay is OFF, but it's a wasted fetch when it's ON because the videojs component will be blocking it.

Although it's the same image as the ClaimPreview, this one will be in full size, so a fetch will always happen.

Aside: videojs handles the backdrop for the audio and embed case, so this change won't affect those items.
```
  <VideoJs
    poster={isAudio || (embedded && !autoplayIfEmbedded) ? thumbnail : ''}
  />
```

Future: for "mobile + autoplay=OFF", we should consider using the optimized thumbnail. 6074 should help.
2021-05-18 01:48:23 -04:00
saltrafael
31a84828cc
improve logic for own comments showing first (#6073) 2021-05-17 15:55:23 -04: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
infinite-persistence
73f6d207ea Restore "Autoplay media files" behavior
## Issue
Closes 6078 `"Autoplay media files = disable" is broken`

`if (-1)` is "truthy"
2021-05-18 01:57:16 +08:00
infinite-persistence
354027a5f4
i18n update (#6039)
* Don't translate non-English strings

This requires an accompanying change in the homepages repo.

* Translate swap errors.

* i18n update

- Add missing sub-strings.
- Removed 'video stonks'.
- Added 'Nothing here...'
- Updated notifications drop-down strings.
- Add latest "mayo" meme.

* Remove strings that can't be translated due to dynamic values.
2021-05-15 02:01:00 -04:00
mayeaux
2292f790a0
force autoplay when timestamped (#6064) 2021-05-15 01:59:21 -04:00
saltrafael
3131b48c77
Fix blocking/muting issues on channel pages (#6034)
* dont use no_channel_ids on channel content claim search

* ClaimMenuList not filtering own content initially

* fix errors

Co-authored-by: Thomas Zarebczan <thomas.zarebczan@gmail.com>
2021-05-15 01:53:56 -04:00
infinite-persistence
c85d7f12c8
Livestream-only query cleanup. (#6036)
This completes the change in c24c016e, covering ClaimListDiscover as well.
2021-05-15 01:52:24 -04:00
saltrafael
e5795baa10
own comments show first in controversial / best #5905 (#5939)
* own comments show first in controversial / best #5905

* workaround to place my recent comment at the top

* only most recent comment

* lint fix

Co-authored-by: Thomas Zarebczan <thomas.zarebczan@gmail.com>
2021-05-15 00:56:58 -04:00
infinite-persistence
698bd5eef1
Continuation of "Add release date field #5514" (#6049)
* Release date -- initial attempt (squashed and rebased)

- Use white color for calendar buttons in release date input
- Update icon color for release date input
- Allow to set time in release date and display it under additional options
- Add release date field

* Upgrade to latest react-datetime-picker.

I believe this also picks up the y18n security fix.

* Handle dark theme and general style fixes.

* [+redux] Change how release_time is edited.

- `releaseTime` is now a number instead of a string, matching `release_time`. It was getting confusing what the variable units were.

- `releaseTime` will always match `release_time` for an edit. It will be used in the GUI to reset just the date to the original, instead of having to reset the entire form.

- `releaseTimeEdited` will be used by `updatePublishForm` in the GUI to represent the desired new release time. Set to `undefined` if we don't want to change the date.

* Add 'Reset|Now|Default' buttons instead of overloading the date-picker's "X" button.

Before this, the "X" button resets to the original (previous) publish date for Edits, and resets to current time for New Claims. This is very confusing, so added explicit text-based buttons -- hopefully this is more intuitive.

* bump redux to master

Co-authored-by: Franco Montenegro <franco.montenegro.ruke@gmail.com>
Co-authored-by: Thomas Zarebczan <thomas.zarebczan@gmail.com>
2021-05-15 00:10:28 -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
ee1825f5f1
Notification: handle "creator_comment" (#6069)
## Issue
Closes 6022 Notifications: Creator Commented

## Changes
- Beautify - show creator icon instead of generic bell.
- Link to comment directly instead of the claim.
2021-05-14 10:59:36 -04:00
infinite-persistence
645f8ef452
Posts: restore "Tip unlock | Claim details" component (#6051)
* Add ICON.INFO - "i" within a circle.

Basically, an inverted ICON.ALERT.

* Posts: restore "Tip unlock | Claim details" component

## Issue
5882: tip unlock + claim id detials missing from markdown posts view

## Notes
The easiest solution would be to put `FileDescription` into posts, but I think that goes against the clean up of the Post layout, where the focus should be on the content. The faded style of the File Details section seems too distracting, plus we don't want the File Description anyway.

Fixed by:
- Make the existing "LBC amount" clickable to show credit details. An additional padlock will appear if the content is yours and you have tips to unlock.
- Add an "info" icon beside it to show file details.

These "link" buttons are usually lit, but I dimmed it in this case to make them stand out less. Again, focusing on Post content instead of buttons.
2021-05-12 14:26:47 -04:00
infinite-persistence
02fdb1e6df
Notification: further handle "missed_out" + other tweaks (#6052)
* Show full notification text via tooltip

The tooltip fixes the system notifications problem (mentioned below), and also allows one to quickly read the entire comment without actually having to visit the comment.

Currently, we only show about 50 characters in the notification, truncating it to an ellipsis when exceeded.

This is not much of a problem for dynamic text (e.g. comments) since the full text can be seen after clicking on the notification (brings you to the comment). For system notifications, this is problematic since there's no other way to know what the full text was.

Tried to dynamically change the font size to auto fit, but it wasn't fruitful. Even if it did work, it'll probably won't be legible for a 2000-character comment, plus the entire list will look weird with various font sizes.

* Beautify "missed out" notification; bring user to Verify page.

## Issue
6021: Notifications: Missed Out

## Changes
- The notification already brings the user to the `/rewards`. Tweaked it to directly enter the Verify Page.
- Use LBC icon instead of generic bell for this notification.
2021-05-12 13:51:55 -04:00
saltrafael
355dd8e755
remove emojis from reporting (#6042) 2021-05-12 10:19:45 -04:00
zeppi
c24c016eb7 livestream fixes from odysee 2021-05-04 23:00:43 -04:00
Thomas Zarebczan
de8d139351
Force page size to 50 on live streams 2021-05-04 14:12:51 -04:00
infinite-persistence
c32a95a885
Livestream comment delete/edit fix (#5971)
* Fix ability to delete own comments in livestream

## Issue
5832: can't remove own comments in live stream mode (if you have multiple channels?)

Looks like it was just missing `commentIsMine` for the new component.

* Disable editing livestream comments

It doesn't do anything at the moment, anyways.

* Disable deleting hyperchats

The "total tipped" will get deducted when hyperchats are deleted, which doesn't make sense (doesn't reflect actual total that the creator received).
2021-05-04 11:08:36 -04:00
infinite-persistence
432c1233b6
Swap: populate 'status' from 'btc/swap' response instead of waiting for first websocket input. (#5997)
* Swap: populate 'status' from 'btc/swap' response instead of waiting for first websocket input.

## Issue
Clsoes 5975: swap stop at processing even though response comes through

## Notes
Occasionally, the first websocket message doesn't come through (seems like the commerce didn't send?). There's really no need to wait for one more 'status=NEW' message to ensure the right data is being populated (being over-cautious here).

* Beautify the "exact amount" advice.
2021-05-04 11:08:01 -04:00
Thomas Zarebczan
09ee081218 remove stream_types from live
and fix homepage too
2021-04-30 17:55:33 -04:00
Sean Yesmunt
b9a7f9673d remove has_source param from livestream claim_search on homepage 2021-04-30 16:53:17 -04:00
Sean Yesmunt
ce71393d83 theme orginization and cleanup 2021-04-30 15:05:58 -04:00
infinite-persistence
742110c81c Homepage|Discover: hide livestreams, then append active livestreams at the top.
This essentially hides inactive livestreams from the list.
2021-04-30 14:11:42 -04:00