A browser and wallet for LBRY, the decentralized, user-controlled content marketplace.
Find a file
Rafael Saes 83dbe8ec7c
Playlists v2: Refactors, touch ups + Queue Mode (#1604)
* Playlists v2

* Style pass

* Change playlist items arrange icon

* Playlist card body open by default

* Refactor collectionEdit components

* Paginate & Refactor bid field

* Collection page changes

* Add Thumbnail optional

* Replace extra info for description on collection page

* Playlist card right below video on medium screen

* Allow editing private collections

* Add edit option to menus

* Allow deleting a public playlist but keeping a private version

* Add queue to Save menu, remove edit option from Builtin pages, show queue on playlists page

* Fix scroll to recent persisting on medium screen

* Fix adding to queue from menu

* Fixes for delete

* PublishList: delay mounting Items tab to prevent lock-up (#1783)

For a large list, the playlist publish form is unusable (super-slow typing) due to the entire list being mounted despite the tab is not active.
The full solution is still to paginate it, but for now, don't mount the tab until it is selected. Add a spinner to indicate something is loading. It's not prefect, but it's throwaway code anyway. At least we can fill in the fields properly now.

* Batch-resolve private collections (#1782)

* makeSelectClaimForClaimId --> selectClaimForClaimId

Move away from the problematic `makeSelect*`, especially in large loops.

* Batch-resolve private collections
1758

This alleviates the lock-up that is caused by large number of invidual resolves. There will still be some minor stutter due to the large DOM that React needs to handle -- that is logged in 1758 and will be handled separately.

At least the stutter is short (1-2s) and the app is still usable.
Private list items are being resolve individually, super slow if the list is large (>100). Published lists doesn't have this issue.
doFetchItemsInCollections contains most of the useful logic, but it isn't called for private/built-in lists because it's not an actual claim.
Tweaked doFetchItemsInCollections to handle private (UUID-based) collections.

* Use persisted state for floating player playlist card body
- I find it annoying being open everytime

* Fix removing edits from published playlist

* Fix scroll on mobile

* Allow going editing items from toast

* Fix ClaimShareButton

* Prevent edit/publish of builtin

* Fix async inside forEach

* Fix sync on queue edit

* Fix autoplayCountdown replay

* Fix deleting an item scrolling the playlist

* CreatedAt fixes

* Remove repost for now

* Anon publish fixes

* Fix mature case on floating

Co-authored-by: infinite-persistence <64950861+infinite-persistence@users.noreply.github.com>
2022-07-13 10:59:59 -03:00
.github update yarn version (#1654) 2022-06-08 15:48:32 +02:00
.tx make "I Understand" acknowledgement work for i18n case 2019-10-13 12:42:55 -04:00
build working 2020-12-16 10:52:22 -05:00
custom initial PR for custom homepages - take 2 2020-11-10 12:08:19 -05:00
electron Remove use-zoom 2021-11-09 15:57:12 +08:00
extras Playlists v2: Refactors, touch ups + Queue Mode (#1604) 2022-07-13 10:59:59 -03:00
flow-typed Playlists v2: Refactors, touch ups + Queue Mode (#1604) 2022-07-13 10:59:59 -03:00
homepages Revert "Code-split homepages" 2021-10-28 01:33:46 +08:00
static Playlists v2: Refactors, touch ups + Queue Mode (#1604) 2022-07-13 10:59:59 -03:00
ui Playlists v2: Refactors, touch ups + Queue Mode (#1604) 2022-07-13 10:59:59 -03:00
web Fix url problems (#1679) 2022-07-12 16:58:18 -03:00
.env.defaults (patch) Don't nudge to refresh in localhost 2022-07-12 18:52:35 +08:00
.eslintignore inline-attachment: move to local copy + handle xhr errors 2022-04-01 12:36:49 -04:00
.eslintrc bump eslint version (#1640) 2022-06-06 12:19:35 -04:00
.flowconfig Recsys: add flow and fix uncovered issues 2022-05-24 14:58:52 +08:00
.gitignore Ignore .vscode directory to allow disabling js typechecking. (#712) 2022-01-17 08:39:40 -05:00
.lintstagedrc.json Lint '/extras/*' + fixes 2021-10-19 20:40:08 +08:00
.prettierignore Use non-VHS link when "auto" matches non-VHS quality 2022-04-14 02:41:23 -04:00
.prettierrc.json redesign channel page 2019-05-06 23:29:50 -04:00
.sentryclirc update iframe type + sentry 2022-03-02 12:45:26 -05:00
babel.config.js use same code for handling open links on lbry.tv and desktop 2019-12-03 13:25:17 -05:00
config.js (patch) Don't nudge to refresh in localhost 2022-07-12 18:52:35 +08:00
CONTRIBUTING.md CONTRIBUTING.MD: remove electron and other app references 2022-06-02 14:11:09 +08:00
electron-builder.json remove 32 bit build 2021-01-25 14:24:57 -05:00
LICENSE Bump copyright year to 2021 2021-02-17 17:40:00 -05:00
package.json bump videojs version (#1775) 2022-06-29 08:59:28 -04:00
postcss.config.js redesign channel page 2019-05-06 23:29:50 -04:00
README.md README: remove obsolete items + improve formatting 2022-02-26 21:19:01 +08:00
webpack.base.config.js Enable BundleAnalyzerPlugin + remove 'yarn analyze' 2021-11-11 00:07:18 +08:00
webpack.electron.config.js Initial commit for LBRY-First 2020-07-08 14:23:43 -04:00
yarn.lock tus-js-client: 2.3.0 to 2.3.2 (#1807) 2022-07-07 08:43:45 -04:00

Odysee Frontend - Odysee.com

This repo contains the UI and front end code that powers Odysee.com.

npm chat on Discord

Table of Contents

  1. Usage
  2. Running from Source
  3. Contributing
  4. License
  5. Security
  6. Contact

Usage

Go to the website to interact on this frontend.

Running from Source

Prerequisites

  1. Clone (or fork) this repository: git clone https://github.com/OdyseeTeam/odysee-frontend
  2. Change directory into the cloned repository: cd odysee-frontend
  3. Install the dependencies: yarn

Run the web app for development

yarn dev:web

  • This uses webpack-dev-server and includes hot-reloading. If you want to debug the web server we use in production you can run yarn dev:web-server. This starts a server at localhost:1337 and does not include hot reloading.

Customize the web app

  • In root directory, duplicate the .env.default file as .env and make customizations there.
    cp .env.defaults .env
    nano .env
    
  • To specify your own OG-IMAGE:
    • Either place a png named v2-og.png in the /custom folder or specify the OG_IMAGE_URL in .env file.
  • To specify your own channels to be followed on first run:
    • AUTO_FOLLOW_URLS=lbry://@chan#123...a lbry://@chan2#456...a
  • To customize the homepage content:
    1. Add CUSTOM_HOMEPAGE=true to the .env file.
    2. Copy /custom/homepage.example.js to /custom/homepage.js and make desired changes to homepage.js.
  • Finally, run NODE_ENV=production yarn compile:web to rebuild.
    • Note: You do not need to edit the .env file in the /web folder - that is copied during compilation.

Deploy the web app (experimental)

  1. Create a server with a domain name and a reverse proxy https to port 1337.
  2. Install pm2, node v10, yarn
  3. Clone this repo
  4. Make any customizations as above
  5. Run yarn to install
  6. Run NODE_ENV=production yarn compile:web to build
  7. Set up pm2 to start ./web/index.js

Resetting your Packages

If the app isn't building, or yarn xxx commands aren't working you may need to just reset your node_modules. To do so you can run: rm -r node_modules && yarn or del /s /q node_modules && yarn on Windows.

If you really think something might have gone wrong, you can force your repo to clear everything that doesn't match the repo with git reset --hard HEAD && git clean -fxd && git pull -r

Contributing

We ❤️ contributions from everyone and contributions to this project are encouraged, and compensated. We welcome bug reports, bug fixes and feedback is always appreciated. For more details, see CONTRIBUTING.md.

contributions welcome GitHub contributors

License

This project is MIT licensed. For the full license, see LICENSE.

Security

For security issues, please reach out to security@odysee.com