* Move menu entries & add publish buttons
* Save
* Separate publish forms
* Make new header dynamic for all screen sizes
* Save some livestream creation changes
* Save more livestream changes
* Save
* Change publish folder structure
* Update paths
* Change position of form elements. Again.
* Move, add & delete form fields
* Clean post form
* Clean post form even more
* Clean publish post component
* Save
* Add custom post form state
* Move price to additional options
* Adjust livestream form
* Adjust headers & titles
* Update key section
* Adjust active header icons
* Adjust toggle menu
* Save
* Adjust active button style
* Change active button selector in header
* Fix header menu links
* Move price section in post form
* Adjust instruction text color
* Adjust replay table
* Revert changes & adjust tag section
* Make more form elements dynamic
* Finalize additional options section
* Update post form
* Set mode in upload form
* Update livestream form
* Add clear button
* Make clear button dynamic
* Set upload mode
* Remove new button
* Clean upload form
* Show disabled key on livestream form
* Remove old key section
* Update channel selector for publish forms
* Add updated channel selector to publish forms
* Add mobile links
* Update mobile header
* Adjust channel selector on mobile
* Adjust livestream form on mobile
* Adjust edit links for livestreams
* Adjust edit links for posts
* Adjust more edit links
* Adjust channel selector
* Update disabled in livestream form
* Add missing change
* Fix sign out function
* Save
* Adjust livestream page on mobile
* Adjust tags section on upload page on mobile
* Adjust publish links in left navigation on mobile
* Add images to accepted filetypes on upload page
* Add autofocus to input fields
* Add autofocus to all publish forms
* Save
* Ignore thumbnail api status
* Put active thumbnail upload label in card
* Fix crashes
* Fix flow
* Fix licence fields
* Adjust wallet in header on smaller screens
* Fix channel selector line break on small screens
* Fix border radius for some buttons
* PublishReleaseDate: fix initial value to reflect what's actually in Redux
'undefined' is a valid value that means "use publish time", but the GUI incorrectly starts off by locking to the mounted timestamp.
* Add and hide channel selector on livestream publish page
* Fix channel selector on livestream setup page
* Fix gif aspect ratio in channel selector
* Make layout more dynamic
* Fix some edit redirects
* Save
* Clean publishFile
* Fix build errors
* Fix more build errors in profile menu button
* Remove console logs
* Remove post form reducer
* Limit publish title length to 200 characters
* Remove totalRewardValue from livestreamCreate index
* Remove console log
* Add tooltip to replay refresh button
* Remove scrollToTop function from publish forms
* Adjust emty wallet value trigger and add error to livestream publish page
* Disable some tabs in edit mode in livestream form
* Fix maxLength typo
* Remove 'as' label
* Remove selectPublishFormValues
* Reenable setup tab
* Remove inactive line
* Remove another inactive line
* Remove flow fix
* Update label switch logic in confirmation modal
Adjust gif margin
Adjust gif margin
Remove navigate from edit link
Remove manual updateLabels execution on init
Remove editLabel function
Fix labels in publish modal
Adjust post livestream setup redirect
Remove setOverMaxBitrate from livestream form
Clean livestream publish
More cleanup
Update post livestream creation redirect
Bring back edit tab for livestreams
Update edit tab
Reset form on livestream edit => clear
Update label switch logic
Readjust channel selector position on mobile
* Make some space adjustments for mobile
Update livestream edit page on mobile
Update action label on publish forms in edit mode
* Hide replay options in edit mode in livestream form
* Update label switch logic in confirmation modal
Adjust gif margin
Adjust gif margin
Remove navigate from edit link
Remove manual updateLabels execution on init
Remove editLabel function
Fix labels in publish modal
Adjust post livestream setup redirect
Remove setOverMaxBitrate from livestream form
Clean livestream publish
More cleanup
Update post livestream creation redirect
Bring back edit tab for livestreams
Update edit tab
Reset form on livestream edit => clear
Update label switch logic
Readjust channel selector position on mobile
Make some space adjustments for mobile
Update livestream edit page on mobile
Update action label on publish forms in edit mode
Hide replay options in edit mode in livestream form
* Make form titles dynamic
* Remove spinner on livestream form
* Remove console log
* Fix double history push
* Fix thumbnail status on post form
* Update error message style
* Handle publish error button behavior
* Clean code
* Fix scheduling & date picker
* Fix calendar overlap
* Add replay selector to livestream claim edit form
* Clean code
* Disable autocomplete
* Show replays in edit & replay tab
* Redesign replay picker
* Fix design details
* Save dynamic replay picker
* Fix autoComplete typo
* Change label text
* Add upload to livestream replay form
* Fix scss structure
* Add comunity guideline link to publish forms
* Fix error
* Fix selectThumbnail index
* Reset form values on replay source change
* Add replay redirect to upload page
* Fix publishError state change
* Remove label effect from publish confirmation modal
* Update labels in publish confirmation modal
* Add ? to chaptersButton
* Remove doPrepareEdit({ name })
* Bring upload redirect back
* Adjust redirects
* Save
* Update edit redirects
* Revert scheduling options
* Replace checkboxes for replays with radio
* Update form on source change
* Rearrange entries in mobile navigation
* Change key position on livestream setup page
* Change label for livestream update without replay change
* Adjust margin below label
Co-authored-by: infinite-persistence <inf.persistence@gmail.com>
* DRY up membership selector
Selectors should be chained up, not copy/pasted.
* PremiumBadge: retrieve membership db internally instead of from parent
## Ticket
1753 odyseeMembershipByUri function causing unnecessary renders
## Issue
While the rendering issue in the ticket is due to the way the props are defined, it also surfaced a prop-drilling issue with PremiumBadge.
Instead of asking the parent for the membership db, it can retrieve from Redux itself. This prevents the prop from polluting 2 levels of components and causing unnecessary renders.
## Approach
- Make `PremiumBadge` accept `uri` like most other components.
- I still leave the `membership` prop as (i.e. parent can still pass it directly). In some cases (e.g. `livestreamComment`, `page/odyseeMembership`), the parent itself needs the same data, so we don't need to derive it twice.
Requires a related commit from the homepages repo.
## Changes
- Add ability to reset the sort order.
- Make 'News' and 'Wild West' a "hideByDefault" category. It can be made visible in the homepage from the customization dialog.
- Corrected flow definitions.
- Properly differentiate between "not yet fetched" and "no membership" as "undefined" and "<empty string>", respectively. There are GUI elements that need to know the unfetched case.
- Router: no need to specify the route directly anymore (will come from definition), but we still need to disable it for certain regions.
- Sidebar: no need to custom addition anymore.
## Ticket
`odysee-homepages :: 1318`
Expanded homepage pins to support 2 types of input (if both are passed in, pinnedUrls take precedence):
(1) pinnedUrls --> uses doResolveUris (resolve)
(2) pinnedClaimIds --> uses doResolveClaimIds (claim_search)
Instead of injecting the pinned URLs directly, we inject from `resolvedPinUris`, which will be blank until the uris are resolved, thus preventing it from being resolved individually from the tiles.
There's additional complexity with the `claim_search` method, as the rest of the code deals with uris instead of IDs. Fortunately, it's all contained with `useResolvePins`, so removal would be easier when the batch `resolve` issue is fixed.
I think we want to keep Premium as a product name (consistent for all languages). It was popping up in the `window.new_strings` because the current code localizes every link.
- Remove the odd resolve call that's lingering in `App`. Feels out of place, plus we don't need it now since the "active subs" claim search would contain resolved results.
- Don't search for active subs if Following count is zero.
- `filteredSubscriptions` was running the filter code whether or not it actually required filtering, because the `!subscriptionFilter` logic is placed in the predicate. While it is a clean one-liner, it is slow when the subs list is huge.
- While at it, moved the code into `getSubscriptionSection` to isolate things.
- The sidebar was resolving the entire subs list, which is super slow for a list of 500+. Since we now have a "Manage Subscriptions" page, just batch-resolve the N visible subs.
- TODO: the code should probably be moved from 'app' to 'sideNavigate'.
## Ticket
lbry-desktop 6841
## Issue
If you are already at the homepage and you click the "Home" or "Odysee" logo again, the entire page reloads, causing the whole startup sequence to re-run (lots of fetches).
This can be annoying when not intended (e.g. clicked too many times), as startup is slow for some and we also lose non-persistent Redux data (for debugging).
I believe the requirement was just to reload the homepage tiles, as they might be showing stale ones after a while. A full reload was the quick-and-easy fix.
## Approach
Best not to touch the complicated `ClaimTilesDiscover`, so just clear the search cache key in this scenario. `ClaimTilesDiscover` will then pick this up and perform a new `claim_search`.
`GetLinksData` is somewhat expensive. The value won't change until user changes the window size or selects another homepage.
As we can't call an `effect` within a `memo`, we had to extract out `isLargeScreen` as an input parameter, which is fine as it makes `GetLinksData` more functional (functional programming).
## Behavioral changes
- Moved Notifications to the top for mobile.
- Added separate lines between sections.
## Code changes
The array method is too restrictive (hard to move things with display logic around). It's also hard to read.
Instead of trying to populate an array, just directly populate the return tree. Added `getLink` to make things readable. It's now easier to see the sections in a glance.
* add gdpr support
* only run on production
* testing implementation
* just needs last touches then ready
* ready for merge
* add cookies to sidebar
* hide button when secureprivacy not available
* switch over to loading script as a react hook
* conditionally add secureprivacy script
* save gdpr status on session
* better design
* Exclude default homepage data at compile time
The youtuber IDs alone is pretty huge, and is unused in the `CUSTOM_HOMEPAGE=true` configuration.
* Remove Desktop items and other cleanup
- Moved constants out of the component.
- Remove SIMPLE_SITE check.
- Remove Desktop-only items
* Sidebar: limit subscription and tag section
## Issue
Too slow for huge lists
## Change
Limit to 10 initially, and load everything on "Show more"
* Fix makeSelectThumbnailForUri
- Fix memo
- Expose function to extract directly from claim if client already have it.