* 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>
## Issue
https://github.com/OdyseeTeam/odysee-frontend/issues/1815#issuecomment-1178728712
When settings are changed before the first successful sync, the changes are on top of the default wallet preferences, and becomes the "latest". When sync is possible again later, the bad data is pushed to the cloud.
## Change
Continue to operate on 'local' until the first successful sync. Most of the GUI will warn (or even prevent) the user from changing settings in this scenario, so the amount of "discarded" changes in 'local' is minimal.
d16ae73c
## Issue
dev instances are also affected.
## Change
Use another env to enable the feature.
The cleaner solution that avoids the double env is to simply not make MIN_VERSION appear in the default file + define only in production instances. But putting it in the default file makes things clearer, plus easier to "bump + build" by just pushing a new commit.
* 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>
## Issue
If the reward-list fetch is slow, the selector assumes the weekly_watch hasn't been claimed yet, causing an unnecessary claim.
## Change
The selector now tells the caller if there is no data -- up to caller on what to do (in this case, don't claim the reward).
It should be harmless if the claim action was missed, since the user can still manually claim it.
## Ticket
1329
The existing nudge to refresh the webpage only happens when the app cannot find the specific javascript file in the server. As we don't purge the files on each build, the browser typically uses the cached version of the app, which could be weeks behind (based on the error logs).
## Approach
Poll the current version periodically (set to 1 hour for now) and invoke the nudge when a newer version is detected.
We typically don't need to bump `MINIMUM_VERSION` unless there is an urgent need to make users move away from older versions (e.g. API changes, mistakes, etc.)
## Trade-offs
Wanted to put the value in a separate file called `.min.version` so that the env's history won't be polluted with version bumps, but not sure how to implement with minimal code without having to read from the file. Getting from the env is the easiest to implement (per my limited knowledge).
* 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
In `doResolveUri`, if the `uri` is a collection, it will attempt to fetch all items in the collection.
Can't think of any special reason to keep the page-size small, and not seeing any notes in the commits either. It just ends up making several `claim_search` of 5's until all items are fetched.
- Split the friendly text (non-essential) to `subMessage`.
- Put a link to the wallet history for all these tipping toasts.
- Don't say "tip" for the Wallet Send action (Issue_1605)
- Make the link font-size smaller than the main text.
## Issue
The toast wasn't good enough as the user might miss it and attempt to re-send.
## Change
- Change the tip timeout from Toast to Modal.
- For the case of Comments, add additional info about being unable to re-link the txid to the comment for now. Not really useful to the user, but better than nothing.
Run the membership reducer even for incognito.
The GUI needs to differentiate between 'unfetched' (`undefined`) and 'no membership' (`''`), so we must call the action/reducer for the incognito case as well.
## Ticket
1572
Always check for availability before use.
## Changes
- Consolidated the keys into one place for easier tracking.
- It'll also be easier to code using constant autocomplete.
- Cleaned up the wrapper to be as close as the original.
- Updated existing code to use the wrapper (even if they already handled the availability) to encourage future code to just use the wrapper.
- Add ability to store `entries` into Redux.
- Sync to redux in the same interval as when playing position is saved (re-use timer).
- On startup, send any stashed entries and clear them.
- Don't want to show it in Incognito.
- Only show it in when entered from homepage, or in the Help page.
- Record the hash of the viewed announcement and update the wallet with it.
This stores the hash for the last viewed announcement.
The intention is so that the announcement won't re-appear when logging into another device.
However, this does mean that announcements would need to wait until the first sync to decide whether to appear or not, which can be quite a delay.
more analytics + refactor
- passes player with time to start (until we move this api to watchman)
- supports livestream metrics for buffering
- fixes bug with buffering over 10 second period
- less head calls by moving to videojs-events
* review fixes
- and some changes to activeLivestream redux since it would return undefined if fetching and no claim, so now it returns null when no activeLivestream is found
1446
- Requires an accompanying commit in `odysee-frontend`.
- The change assumes that the `odysee-frontend` is the only project that uses these files directly, i.e. other clients will use the API instead.
- consolidate cases that need to auto set an active channel (like edit page) into channelSelector component
- also for consistency since some components would do it with button click and others on page mount
- prevent clear function on those pages (kind of a manual process to insert each page into the router condition)
Several issues with the clamping behavior:
- Problems trying to sync with the activeChannel setting.
- Corner-cases like unable to un-react because the comment and react channel was different; global mods not be able to change channels to do certain actions.
Just let the user know what are the channel(s) that they used to comment previously in the Toast.
If we can't confirm that user has not used another channel to comment, then don't allow commenting at all. Otherwise, there's no point doing the check.
## Why
Lost in a rebase. The GUI clamping was just meant to complement this (so that user knows what's going on), but ended up being the only thing that was pushed.
## Changes
- If the fetch failed or still in progress, we ask the user to wait or simply refresh the page.
- If already commented from another channel, bail and inform via Toast.
- this way, you can choose an active channel for something like commenting but when that component is unmounted, you always go back to the default channel (like leaving page)
We were already limiting the call to once-per-5-minutes (for the succesful case), so just need to put failure cases into the mix.
Retry 3 times before stopping.
- 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.
## Issue
1075, spam prevention.
## Approach
- When making a reaction, fetch reactions for all my channels for the particular comment id, and reject the reaction is any was found.
- Report the channel name in the toast so that user can at least know which channel to select in order to undo the reaction.
Completely remove any need to update things on our side when a Category is added or changed.
Will need to inform homepage owners to directly translate the 'label' field, so we don't need to use our translation system.