Fixes the "force repost" behavior in Category Page.
Got the logic wrong when the boolean parameter was inverted from "force" (+ve) to "hideRepostOverride" (-ve) to support the "Hide Repost" button.
hideRepostOverride:
- undefined = follow user setting
- true = always hide
- false = always show << we want this
* 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>
>= (and =) are having a filtering issue with reposts. Don't need to pass >= for all content - I think this was some old hackaround that's no longer required.
* Re-organized per 'state->var->func->effect->return' structure.
* Add "Hide Repost" button in channel page
Ticket: 1762
## Change
For the placement of the button, putting it inside the expanded settings group feels the most natural, plus we then don't need to check whether the channel has reposts or not before displaying it (the expanded area is for stuff like this).
## Notes
The tricky part was making the code maintainable w.r.t to the global "Hide Repost" setting. Changed `forceShowReposts` to `hideRepostsOverride`, hopefully makes things more obvious.
- undefined = fallback to global setting
- true/false = use override
* 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.
This reverts commit 1dccc1ac64.
Closes 1770
Re-opens "1515 uploads page cleared/reloaded on each navigation"
1515 is just a minor annoyance, while the current issue is a non-functional page, so reverting for now and revisit later.
* adding preorder button
* adding preorder modal
* frontend mostly done
* check if its already purchased
* refresh page after purchase
* smooth out purchase process
* check if user has card saved
* handle case where its the users own upload
* fix transaction listing order bug
* cleaning up code for merge
* fix lint errors
* fix flow errors
* allow eur purchases
* support eur on customer transaction page
* fix css
## Issue
1709 - If you sign in while reporting, you end up in the homepage
## Notes
The other option is to just make `<Header>` always redirect back to where it came from using the full path. But existing code elsewhere seem to always trim off any params (e.g. `location.search`, `location.hash`) when doing redirects.
So, ended up making it generic and let the caller decide where to redirect (and with what params).
## Ticket
1526: strange thumbnail size requested on mobile layout (pc only?)
## General Problem
It was trying to fetch based on the exact size of the video container, which would satisfy Core Vitals (in an overkill way), but would bring several issues:
- server-side caching would not work since everyone's window size is different in a responsive layout design.
- the additional 200ms wait for container size to settle down is not good (hardcoded wait time).
- the code did not account for device-pixel-ratio, so it's quite a futile effort.
Aside: In the past, we used to take the same image url as the tiles, so the video poster would appear immediately from due to browser cache, but the quality is bad because the tile requested a much smaller size.
The embed wrapper was not going through the CDN either as a null `containerRef` was passed in.
## Change
Removed the container-size check and just request for 1280x720. Reasons for this size:
- On average, that would be the ballpark of the final calculated value anyway for the average screen (+DPR consideration).
- That seems to be the current suggested thumbnail size in most recommendations.
- Our YT Sync is grabbing a much smaller size anyway.
* fix bug and add some documentation
* Prevent is_live fetching when playing stream and going back to livestream page
Co-authored-by: Rafael <rafael.saes@odysee.com>
This is a follow up for 2b60fe95
## Issues
- Not every page needs the Category data, so only block for Category pages.
- `categoryPages.length` was rendered as a number while blocking for the fetch.
## Change
It's a chicken-and-egg thing because we don't know what the category path is, but fortunately categories and internal pages start with `/$/`, so we can make a reliable guess. The other internal pages would have matched the defined routes and would not reach this function.
- Avoid double loop in `isFollowing` (map + includes).
- Move calculations into functions, as most of the variables are only single-purpose. This makes it easier to find things and tweak. Only shared variables need to be at the top.
- Re-org to 'vars -- funcs -- effects -- return' file structure.
It would be nice if the individual components can handle the remounting of the ad-script, but there is currently a need to synchronize the cleanup of the `window.OBR` object.
The quickest solution for now is to add a key at the parent side to synchronize the mount-unmounting. Not ideal -- revisit later.
## Behavior in homepage
- Mobile: show after every other category
- Desktop: show after first category, then every 2 categories.
## Known issue:
- "FYP" is not part of the categories array at the moment, so it does mess up the behavior.
## Notes
I think this is also called "in-content" by adnim (not 100% sure of the terminology).
... but leave Following as "no limit"
The primary reason for this case is due to News and Wild West having lots of livestreams. But instead of just applying the limit to these 2 and polluting the loop, just limit it for all Categories.
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.
* Show-page: split out some effects
Break apart the large effect for easier tweaking, abiding by the 1-action-per-effect guideline.
This also fixes the dependency list. After checking with Haffa, the exclusion of `pathname` and `hash` from the list is probably to avoid hitting `doResolveUri`. This should no longer be an issue after the split, so no suppression needed.
* Show-page: fix "no content found" flicker
## Issue
1539: "Recently been seeing a flicker of "content not found" when direct loading content or channel links on mobile"
## Cause
`doResolveUri` can only be called after the initial mount (in the effect), so at first render, `isResolvingUri` won't be set yet, so we briefly ended up in the "no content found" path.
## Change
Factor out the logic that determines if we should send `doResolveUri`. This allows us to know that the upcoming effect will be sending `doResolveUri`, so we can hold off displaying "no content found".
* Show-page: don't delay the spinner when resolving
## Reason
The delay causes a blank page + footer, which looks bad.
* Remove claim from channel page when geoblock conditions hits
Ticket: 1100
* Handle geoblocked channel page
## Ticket
1100
## Issue
"If a channel is geoblocked, the entire channel page (even showing titles, etc. would be against the law)"