Commit graph

181 commits

Author SHA1 Message Date
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
infinite-persistence
474da87c11
Commentron: min tip API now uses float again 2021-08-12 14:51:41 +08:00
infinite-persistence
e9a2f44899
Commentron: incorporate 'setting.Get' into 'doFetchCreatorSettings'
## General
- `setting.List`: returns full creator settings. Requires signature (i.e. you own the channel)
- `setting.Get`: returns a public subset of the creator settings. No signature required, and it is mainly used by the GUI to determine the constraints of a channel (e.g. comments enabled? min tip requirements? etc.). Does not include private settings like "blocked words list".

`doFetchCreatorSettings` will handle both of these. Clients that uses the stashed results (`settingsByChannelId`) just needs to be aware the result might not contain everything, depending on whether you own the channel or not.

## Misc Related Changes
- Finally fix the reducer for COMMENT_FETCH_SETTINGS_COMPLETED to not purge the data on each call.
- Change `doFetchCreatorSettings` to operate on a single channel instead of multiple. We ended up not using the multple mode anyway, so it was wasteful code trying to batch the promises.
- `commentsDisabledChannelIds` is no longer needed. Previously, this was created just to differentiate between Creator (full) and Channel (subset) settings. It's cleaner to just use one object, so eliminated this.
- Remove unused 'commentingEnabled'.

## Aside
- There are now 2 ways to know if a channel has disabled comments: (1) from `comment.list` and `setting.Get|List`. Both of them updates `settingsByChannelId`, so it'll still be a single place for the GUI to check against.
2021-08-12 14:51:41 +08:00
infinite-persistence
658e9bd1db
Enable min_tip setting 2021-08-12 14:51:40 +08:00
infinite-persistence
ff9ca662f2
Option to change commments-server (desktop)
## Issue
> 5459 Add setting for changing your comment server. Visible on desktop (and possibly defaulting to Odysee URL), hidden on odysee.

## Comments
Not sure how this would actually work properly without the user recompiling the app to handle server differences. For example, even when we use our own server but switch between v1 and v2, some code changes are need to handle the differences. At that point, it seems easier for the user to just change the .env file? Anyway...

## Changes
- Added Desktop-only options to define custom server. [Settings > Advanced Settings > "Comment server" section].
2021-08-12 14:01:22 +08:00
infinite-persistence
4731786a3f
Livestream: implement Pinned Comments 2021-08-12 10:39:21 +08:00
infinite-persistence
34368760de Fill in remaining Recsys fields
## Issue
6366 Recsys Evaluation Telemetry

The recommended list from lighthouse is obtained from `makeSelectRecommendedContentForUri`. This list is further tweaked by the GUI (e.g. move autoplay next item to top, remove blocked content, etc.). Recsys wants the final recommendation list and the clicked index (in exact order), so we need pass these info to the videojs recsys plugin somehow. Also, Recsys wants a recommendation list ID as well as the parent (referrer) ID, we so need to track the clicks and navigation.

## General Approach
- It seems easiest to just spew back the final (displayed) list and all the required info to Redux, and the recsys plugin (or anyone else in the future) can grab it.
- Try to touch few files as possible. The dirty work should all reside in `<RecommendedContent>` only.

## Changes
- `ClaimPreview`: add optional parameters to store an ID of the container that it is in (for this case, it is `ClaimList`) as well as the index within the container.
  - When clicked, we store the container ID in the navigation history `state` object.
    - For general cases, anyone can check this state from  `history.location.state` to know which container referred/navigated to the current page. For the recsys use case, we can use this as the `parentUUID`.
- `ClaimList`: just relay `onClick` and set IDs.
- `RecommendedContent`: now handles the uuid generation (for both parent and child) and stores the data in Redux.
2021-08-03 09:34:36 -04:00
zeppi
ad3fd5700f default search types from config 2021-07-23 10:31:07 -04:00
infinite-persistence
6e402240b0
Fix muted-words now returning null instead of ""
## Issue
Creating Settings suddenly start to stop loading correctly for some of my channels.

## Change
`settings.List` now returns null instead of empty array. Double-checked the Commentron repo and this is indeed the case.

Updated the code to handle null.
2021-07-23 15:46:38 +08:00
infinite-persistence
e5f32b21c4
Reaction-fetch: handle "no results"
If there are no API errors but no reactions returned, consider the requested IDs as "done" and stop requesting again. When a channel is being confirmed, Commentron doesn't return the reaction object.

Also added extra guard in case Commentron does return an object in the future, but an empty one.
2021-07-20 15:22:51 +08:00
zeppi
9b03f5a1d0 more 2021-07-19 13:52:15 -04:00
infinite-persistence
abe32e5f5c
Revert "Reactions: consider failures as "fetched""
This reverts commit 84a2a74c8c.
2021-07-18 10:55:11 +08:00
infinite-persistence
84a2a74c8c
Reactions: consider failures as "fetched"
In the event that Commentron returned an empty object, we'll end up re-requesting the same IDs again. Haven't seens this happen before, but since we don't know what's causing the spike, we'll just consider failures and "fetched" to stop the loop.

User can always click Refresh to repopulate the values.
2021-07-17 21:53:23 +08: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
zeppi
b2b88b466e fix colon handling 2021-07-15 17:48:02 -04: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
f8bdd0704f
Handle temporary Commentron bugs
Can be removed when bugs are fixed, but would still work if left there.
2021-07-14 12:58:27 +08:00
infinite-persistence
0cf6fe3df5
Comments Pagination
## Issue
6158 - Support Comment Pagination
2021-07-14 12:58:25 +08:00
infinite-persistence
b4b45ffbdc Commentron Moderation Delegation API 2021-06-18 15:46:51 -04:00
infinite-persistence
d6ac2c7954 Comments: enable 'enable_comments' flag
## Issue
Closes 6159 "Support Comments Enabled/Disabled for comment.List API"

## New behavior
- `disable-comments` tag will block the comments component entirely.
- `settings.commentsEnabled`:
  - When false, will pause comment fetching, posting and replying.
  - Any already-fetched comments will stay on screen (unless user reloads/F5).
2021-06-18 15:46:51 -04:00
zeppi
03e921e6df use commentron for live view counts 2021-06-17 14:58:55 -04:00
infinite-persistence
15015dacd7 Performance: don't spread in 'reduce' 2021-06-02 08:21:43 +08:00
infinite-persistence
54b17ee739 Commentron Settings API 2021-05-26 15:38:29 -04:00
Sean Yesmunt
3808c61148 fetch notofication/categories for notification types dropdown 2021-04-30 12:45:46 -04:00
zeppi
b9fc9b6319 allow unsubscribe from deleted channels by navigating from sidebar 2021-04-30 11:06:34 -04:00
Sean Yesmunt
d4fa45b257 fix hyperchat size when thumbanil is gif and fix totalAmount calculation 2021-04-26 00:32:52 -04:00
Sean Yesmunt
6d89f0df7e hyperchats 2021-04-23 16:20:17 -04:00
zeppi
bd62a55608 review 2021-04-23 14:51:09 -04:00
zeppi
f3463ebdeb use redux for livestream claim setup 2021-04-23 14:51:09 -04:00
infinite-persistence
bcbb1c8185 Add 'ReportContent' actions/reducers/selectors 2021-04-21 10:49:31 -04:00
infinite-persistence
f94f98e0f3 ViewPastSwaps: limit to 10 entries + other fixes
(1) Due to IAPI/commerce query limit, and also to not pollute the wallet with infinite chargeCodes, we'll only show the last 10 swaps. Beamer mentioned that it's possible to tracked back the past chargeCodes of the user, and potential provide a `list` endpoint to handle disputes.

(2) If a user explicitly removed an entry, don't repopulate that entry even if websocket returned an updated status for it. While it might be useful to handle accidental removals, it looks weird when the list gets repopulated with 'Expired' entries.

(3) Add sanitization when repopulating the chargeCodes from the wallet data (i.e. remove 'null' entries).

(4) Always repopulate the list per wallet data so every instance looks the same.
2021-04-13 14:02:25 -04:00
infinite-persistence
7cf5c1f6fe CoinSwap: websocket + multi-coin
- For the active swap, switch from polling to websocket. The returned data is now the Charge data from the commerce, so some parsing will be required.

- Allow the user to send other coins that the commerce supports.

- Only save the 'chargeCode' to the wallet. The other data can be repopulated from this.

- Store the receipt currency. I'm not sure if the commerce supports sending bits from various coins. Take the coin that came with the 'COMPLETED' message for now.

- Fix 'lbc' calculation to match IAPI side.

- Allow users to see full detauls from "View Past Swaps".

- String cleanup

- GUI cleanup.
2021-04-13 14:02:25 -04:00
infinite-persistence
b2630f6f21 Save entire swap info instead of just the address.
- Users should be able to see the entered and promised amount, otherwise they might forget how much to send over.
- This change also prepares for the future upgrade to support multiple coins.
2021-04-13 14:02:25 -04:00
infinite-persistence
9c808e2b5e Implement Swap BTC page 2021-04-13 14:02:25 -04:00
infinite-persistence
b8ec0c9967 Augment doNotificationList to get a filtered list.
Initially, the filtered list was done at the component level, and the list was simply a subset of `notifications`. But due to the limit issue explained in 5694, we now query the filtered list instead.

Considerations:
- The filtered list could contain items not listed in the 'All' list. We could add a string at the bottom of 'All' that says "not all items retrieved" if this confuses the user.
- The unseen count needs to be based on 'All' and not the filtered one, so that data needs to be stashed somehow (can't re-use the array).

Use 2 arrays for now instead of trying to accumulate "all" and "filtered" into 1 array.
2021-04-08 14:28:21 -04:00
infinite-persistence
8111b8d9dc Only concatenate results if 'from !== 0' 2021-04-07 12:08:17 -04:00
infinite-persistence
855ae15a27 Search: infinite scroll 2021-04-07 12:08:17 -04:00
Stefan Sundin
039264531f Add 24-hour clock setting. 2021-04-06 13:00:10 -04:00
Sean Yesmunt
3644eed49b fix first livestream comment not being displayed 2021-03-22 15:30:13 -07:00
infinite-persistence
1e4c79cf06 Don't clear all notifications when only 1 is clicked.
## Issue:
Closes 5515: All videos marked as read when clicking a single notification from notification list

## Change:
- Augment `doReadNotifications` to only clear the given IDs. If the argument is `null` or is not a valid array (e.g. when used as a click handlers, the click event object is passed in), all notifications will be cleared.

- Augment `NOTIFICATION_READ_COMPLETED` to only clear the given IDs.

## Notes:
- Wasn't sure of the API will fail if the ID is invalid, so I start from `unreadNotifications` first, then only filtering it further with the given ID. Otherwise, we could just skip the `unreadNotifications` filtering.
2021-03-08 11:41:04 -05:00
infinite-persistence
2e49421960 Lint - separated commit to make the next diff clearer 2021-03-08 11:41:04 -05:00
Sean Yesmunt
ea74a66dbd
New moderation tools: block & mute (#5572)
* initial support for block/mute

* hide blocked + muted content everywhere

* add info message for blocked/muted characteristics

* sort blocked list by most recent block first

* add 'blocked' message on channel page for channels that you have blocked

* cleanup

* delete unused files

* always pass mute/block list to claim_search on homepage

* PR cleanup
2021-03-03 13:50:16 -05:00
Sean Yesmunt
1f117e43bd add initial support for comment API outside of SDK 2021-02-11 10:45:34 -05:00
Sean Yesmunt
db87125dc8 refactor 'active' channel usage across the app 2021-02-11 10:45:34 -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
95b4f89e50 Make 'playback rate' persistent
## Issue
5308: Ability to choose default play speed and theatre mode or regular playback size

## Comments
Initially, I used the local storage, as per 'muted' and 'volume' -- I thought that would be appropriate.
Later, I saw that Theater Mode is already using Client Settings, so I re-did everything to match that.

Also, there is an accompanying commit in lbyr-redux.
2021-01-19 10:16:46 -05:00
zeppi
6fb345dbbc zh languages
bugfix

bugfix3

publish

add zh back for homepage selector

test

revert i18n file

DRY publish language
2021-01-11 10:30:26 -05:00
Sean Yesmunt
d43c4d053e add video theater mode button 2021-01-08 08:27:41 -07:00
Sean Yesmunt
30d8a0406d wunderbar improvements 2020-12-03 12:39:12 -05:00
zeppi
d7856b7618 settings use null when matching current browser language
default language functions

bugfix1

bugfix2

bugfix4
2020-11-23 14:12:31 -05:00
Thomas Zarebczan
07916059ed
Don't hard fail on sync set error
Need to fix double sync loop first.
2020-11-14 01:17:26 -05:00
Sean Yesmunt
abacafb0c5 better handle bad wallet password errors 2020-11-13 14:48:04 -05:00
Sean Yesmunt
f1adfddded bump lbry-redux and handle other fatal sync errors 2020-11-13 14:48:04 -05:00
Sean Yesmunt
cfb10db4ea add fatal error handling when sync/get fails with unknown error 2020-11-13 14:48:04 -05:00
Sean Yesmunt
1023f30b4c initial PR for custom homepages - take 2 2020-11-10 12:08:19 -05:00
Sean Yesmunt
353c1a5689 Revert "unified custom homepage"
This reverts commit 55768fc6b5.
2020-11-10 10:36:11 -05:00
jessop
55768fc6b5 unified custom homepage 2020-11-10 10:24:04 -05:00
Sean Yesmunt
1cc7be746b move splash animation out of settings 2020-11-09 13:37:51 -05:00
Sean Yesmunt
485a734c9b make notifications deleteable + unsub from the bell on notifications page 2020-11-04 10:25:49 -05:00
Sean Yesmunt
63f1fed33c per channel notification settings 2020-11-02 14:13:13 -05:00
jessop
c4d05a5a1a claim-search by language
setting to search only in language as default

add channel update language selection and about

bump

searchable languages
2020-10-29 15:20:18 -04:00
Sean Yesmunt
e901daa849 wait to render comments until reactions are fetched 2020-10-27 22:18:22 -04:00
jessop
9d4f7dc642 sync reducer stuff
bring tags into app repo

prevent prefset until prefsReady

prefs ready on sign up

prefsReady-desktop
2020-10-27 10:17:11 -04:00
Sean Yesmunt
f54a0de797 bring in sync code from lbryinc 2020-10-27 10:17:11 -04:00
Sean Yesmunt
295b8cf2e1 refactor floatingUri to allow inline players in comments/markdown 2020-10-21 15:29:29 -04:00
Sean Yesmunt
106f5a0ac2 initial comment pin PR with new commit 2020-10-19 23:37:39 -04:00
Sean Yesmunt
264a85d837 Revert "comment pin action"
This reverts commit 636ab7427d.
2020-10-19 15:01:09 -04:00
jessop
636ab7427d comment pin action
owners can pin and unpin comments

tweak pin icon styles

move commenting activeChannel from localStorage to redux
2020-10-19 14:48:01 -04:00
infiinte-persistence
4a2e9bf1c7 Fix: Videos start muted on initial session
## Issue
4831: Videos start muted on Desktop (fresh install) and web (sometimes resets)

This covers the Desktop fresh install and Web fresh session (incognito) part. It doesn't cover the "sometimes reset" part as I don't know how to reproduce that.

## Change
`sessionStorage` is always empty when that piece of code is called, even for non-fresh Desktop and even in Brave. We now fallback to `1` when `volume` is `null`. Still not sure the purpose of that code, but leaving it there just in case something relies on it.

## Tests
[/] Desktop fresh-install is not muted.
[/] Desktop return session restores previous volume level.
[/] Web* fresh session (cleared data) is not muted.
[/] Web return session restores previous volume level.

*Web = Chrome, Firefox and Brave.
2020-10-07 16:24:34 -04:00
Sean Yesmunt
eb84a366d2 add file reactions code from odysee 2020-10-02 15:28:00 -04:00
infiinte-persistence
16b1605a35 Add SETTINGS.ENABLE_PUBLISH_PREVIEW
This option allows users to bypass the "publish preview" modal. Users can disable it by checking "don't show this again" in the modal, and re-enable it in the Settings Page.
2020-10-02 10:25:17 -04:00
jessop
e954bce821 allow reaction list without channel
uncomment

reacts requireauth, commentReact handles missing channels

enable config, better track pending reacts
2020-10-01 15:23:15 -04:00
jessop
ad88f7de7f disable while reacting, dont call api twice 2020-09-29 17:12:32 -04:00
jessop
63ce107cc1 comment reactions 2020-09-29 17:12:32 -04:00
Sean Yesmunt
dd5636c2b3 prevent multiple claim_search's happening on the homepage 2020-09-29 17:12:32 -04:00
Sean Yesmunt
35d959208a fix first comment on claim not showing instantly 2020-09-29 17:12:32 -04:00
Sean Yesmunt
f547053ebc add yotube sync to initial sign up flow 2020-09-29 17:12:32 -04:00
Sean Yesmunt
248e578422 new comments 2020-09-29 17:12:32 -04:00
Sean Yesmunt
61b1ca89d3 first run cleanup + sync first run acknowledgements 2020-09-29 17:12:32 -04:00
Sean Yesmunt
19fb7d7f06 new layout 🕺 2020-09-29 17:12:32 -04:00
jessop
3b23f09bed fix sync clean wallet bug
remove previous changes,keep syncpref in wallet, change anon wallet pref key to local

sync choices wip

dont relocate syncenable setting

bump

no prefs on web unauth

bugfix redux bump

pull after sync change

bump
2020-09-21 14:11:25 -04:00
infiinte-persistence
4fc5a018e5 Clear 'passwordSet*' flags too in USER_PASSWORD_SET_CLEAR
## Issue
4749: "Password updated successfully" kept showing up

## Change
In addition to the `passwordReset*` variables, reset the `passwordSet*` variables as well for `USER_PASSWORD_SET_CLEAR`.
2020-09-15 12:52:12 -04:00
jessop
b5dccced6d bugfix 2020-09-10 14:20:02 -04:00
jessop
6c4842a111 sync changes 2020-09-10 14:20:02 -04:00
Sean Yesmunt
799c0c1f11 quick comment fix while waiting for release branch to be merged into master 2020-09-09 14:54:29 -04:00
Sean Yesmunt
404f0dc195 fix first comment on post failing even when it is created successfully 2020-09-01 20:27:52 -04:00
jessopb
3a69f47347
quick fix for sync (#4718) 2020-08-28 11:25:47 -04:00
jessop
c78e1e2970 patch null blocked error 2020-08-25 09:53:22 -04:00
Sean Yesmunt
9ee4b256fb add mark as seen to notifications 2020-08-21 16:04:27 -04:00
Sean Yesmunt
33d47d1d6d default sync to false on desktop 2020-08-20 01:38:48 -04:00
Franco Montenegro
cbfed97853 Add app closing behavior setting 2020-08-20 01:16:11 -04:00
jessop
ab56633eed prevent specific settings sync in config 2020-08-04 12:00:20 -04:00
Sean Yesmunt
0df388280e add search code from lbry-redux 2020-07-27 16:37:36 -04:00
jessop
d9bf72a351 all settings constants come from redux
sync settings

backout nav cases and anon preference key

more robust backout header

put notificationSettings under backout bar

review changes
2020-07-27 11:53:14 -04:00
Sean Yesmunt
90327a72ed add comments behind a flag 2020-07-23 11:03:00 -04:00
Sean Yesmunt
69cfcd81e9 bring in 'blocked' code from lbry-redux take 2 2020-07-15 09:52:08 -04:00
Sean Yesmunt
9c9530c6f3 Revert "bring in comments/blocked code from 'lbry-redux'"
This reverts commit fa7f74f979.
2020-07-14 19:23:25 -04:00
Sean Yesmunt
fa7f74f979 bring in comments/blocked code from 'lbry-redux' 2020-07-14 15:57:19 -04:00
Sean Yesmunt
41abbcc861 Revert "bring in blocked redux code from lbry-redux"
This reverts commit b9f3146180.
2020-06-23 16:21:40 -04:00