* ! Fix YT comment loading for video with comment disabled
* * Update video view w/ Local API to render video comment disabled as no comment
* ! Fix style with less side effects
* * Update watch view playlist component to auto scroll to current video
* ! Fix window being scrolled when playlist is out of initial view
* * Use `nextTick` instead of `setTimeout`
* Revert "* Use `nextTick` instead of `setTimeout`"
This reverts commit 9215b0fe54.
* * Remove setTimeout, fix issue when Invidious API used
* Allow fetching more community posts with IV
* Update src/renderer/views/Channel/Channel.js
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
---------
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
* * Update History & UserPlaylists view to filter with delay
* * Use lodash.debounce to implement
* * Update delay to 500ms
* * Update to have delay with empty query string
* + Add setting to auto load comment section
* * Cleanup hooks when possible
* * Update new setting to be a toggle
Possible values reduced to disabled & 0%
* * Use vue-observe-visibility to implement comment autoload
* - Remove unused translation entries
* - Remove no longer valid code comment
* * Rename & retype new setting
* * Implement auto more comment loading
* - Remove outdated comment
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* * Disable new setting switch when hide comments enabled
* * Remove the unnecessary delay on video comment loading
* * Update according to review
* * Disable autoload when hide comment enabled
---------
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* Small community post fixes
* fix#3387
* Check if post is empty
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
---------
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* ! Fix trending video list not updated without a workaround
* ~ Remove outdated comment
* ! Fix search result list rendered items not updated without workaround
* ! Fix invidious API search result incorrect appending
* ! Fix typo & key
* Remove not longer needed timeout
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
---------
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* ! Fix adaptive format picked by video JS sometimes not showing up in quality selector
* Apply suggestions from code review
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* ! Workaround invidious issue on AV1 formats
* Update src/renderer/views/Watch/Watch.js
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
---------
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* Create `getChannelInstanceLocal` function
which allows channel instances for the local API
to be set within the community posts fallback
* Remove channel variable in `getChanneLocal`
* Switch playlist fallback to calling `getChannelPlaylistsLocal`
* Prevent accidentally refetching channel instance from Local API
* Add fallback for fetching more channel videos through invidious
similar to the fallback for playlists
* Use existing `getLocalChannel` instead of creating a new function
* Initial implementation of import from YouTube history
(Using JSON export)
* Properly escaping hostnames in regular expressions
* support other locales
* Apply suggestions from code review
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* support json import through sane button, bug fix
* remove `import youtube history` translations
* dont save length or view count for imported youtube history
---------
Co-authored-by: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* Add Live tab to channel pages
* Handle invidious streams tab URL
* Clear live videos when navigating between channels
* Reset sort by when changing channels
* Made changes as suggested.
* Made player set volume to user default if it was muted by dragging volume slider to zero. Volume and muted are kept track of seperately and both are set on player with respect to how it was set for previous video
* added comments
* fixed
* fixed
* Changed comments to be more accurate.
* Comunity page strings, Communtiy tab, Community initial API call
Added:
1) Community page strings - the first few strings are now available
2) Community tab - A clickable tab is now displayed on channel pages
3) Community initial API call - on loading the page, the initial access
* Comunity page strings, Communtiy tab, Community initial API call
Added:
1) Community page strings - the first few strings are now available
2) Community tab - A clickable tab is now displayed on channel pages
3) Community initial API call - on loading the page, the initial access
* Data returning added
* Comunity page strings, Communtiy tab, Community initial API call
Added:
1) Community page strings - the first few strings are now available
2) Community tab - A clickable tab is now displayed on channel pages
3) Community initial API call - on loading the page, the initial access
* Data returning added
* Images are now displayed in the community tab
* Comunity page strings, Communtiy tab, Community initial API call
Added:
1) Community page strings - the first few strings are now available
2) Community tab - A clickable tab is now displayed on channel pages
3) Community initial API call - on loading the page, the initial access
* Data returning added
* Images are now displayed in the community tab
* Added primitive video display
* Current changes
* Added preston's change with the ftcard and started on some layout basics
* Created Community Post Component and added fetch more button + functionality
* Fixed problem with videothumbnails not loading and adjusted their height to 100% in the ft-list sass file
* Added poll and ft-list-video to the community page
* Added author name placeholder (missing in module), the published date, the likes and dislikes as well as comment counts to posts. Additionally scaling of images was added
* Added basis for community page playlists
* Finalized a setup for playlists when wide enough
* Fix for missing key in custom list
* Added publish date translation
* Add empty alt tags
Co-authored-by: Jason <84899178+jasonhenriquez@users.noreply.github.com>
* fix accessibility issue
Co-authored-by: Jason <84899178+jasonhenriquez@users.noreply.github.com>
* change: ununique ids to classes
* add missing alt tag
* Redirect channel/id/community to the channel's community tab
* update yt-channel-info
* update to 3.0.1
* Update yarn.lock
* add basic multiImage support
* use tiny-slider for multiImage community posts
* update getChannelCommunityPostsMore
* Update yarn.lock
* fix yarn lock
* swap community and about tab
* Update yarn.lock
* Fix missing comma
* Removed trailing spaces
* Clearing all community post data when changing to another channel
* Restructuring of how the post cards are added, Empty page text,
ft-element-list props customization
1) Now the community page uses the same setup of ft-element-list as the
other pages on the channel.
2) If no posts are available, now it displays a message saying so
3) The ft-element-list component's display style can now be forced into
a certain display mode (list/grid) with the new prop. It will overwrite
the corresponding default value for list display
* Fixed display text path
* Fix lint"
* Adjusted css to fit to new layout
* Final touches community page to tidy up the console
* fix icons, fix linter
* fix hiding showmore button for community page
* fix showToast calls
* change all this.showToast to showToaast
* reinstall tinyslider
* use helpers
* small fixes
* fix: getting continuation of community posts
* remove unused code
* improve slider style import
* fix hiding 'ShowMore' button
* fix weird typo in css
* add invidous community tab support
* remove console testing code
* Apply suggestions from code review
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* implement suggestions, improve thumbnail replacement
* use flip horizontal
* readd invidious fallback code, remove author name workaround
* replace another google domain when using invidious
* suppport invidious multiImage posts
* Use youtube.js for community posts
* add invidious polls, remove support for fetching more
* reorder icons alpabetically
* re-allow loading more when using localapi
* fix styling of multiImage, hide NA text
* fix loading playlist
* fix spacing of items
* fix issue with direct url to community tab
* make review recommendations
Co-Authored-By: absidue <48293849+absidue@users.noreply.github.com>
* fix displaying selected tab, get best quality image
---------
Co-authored-by: Preston <freetubeapp@protonmail.com>
Co-authored-by: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>
Co-authored-by: Jason <84899178+jasonhenriquez@users.noreply.github.com>
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* Migrate channel related functionality to YouTube.js
* Better alert handling
* Add support for special autogenerated channels
* Add support for latest YouTube.js changes
* Add support for age restricted channels
* Update YouTube.js to 3.0.0
* Obey hide search bar setting for the tag searching
* Choose a better parameter name
* Allow sharing terminated and age restricted channels
* Add handle support for handles on Invidious
* Fix the backend fallback
* Use a positive parameter name
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
* Fix duplicate tags causing errors
* Fix sorting for the Invidious API
* Move URL resolving to the channel page
* Update YouTube.js to 3.1.0
---------
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
* * Update subscriptions view to display video publish time in relative form even fetched via RSS
* * Update to support seconds, months, years
Also add more code comments
Also fix issue of display after switching back from another view
* Changed undefined to null
If playlistId is set to undefined it will break /src/renderer/store/modules/utils.js:openInExternalPlayer() as it expects null or string. Undefined makes it believe it is a playlist and ignores the videoId
* revert last commit
* Added tests for undefined in openInExternalPlayer()
* Reduce duplicate code in the data export settings
* Use a more descriptive parameter name
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
---------
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
* Allows sponsor segments to be watched in Auto Skip mode
* 'b': only jump back to segments configured to be auto-skipped
* Remove 'b' keyboard shortcut
* Prevent overflow on playlist view on small 📱displays
* Prevent transition of width on `.thumbnailImage`
* Expand styles to be responsive at more widths
* + Add "infra" code for new feature
* * Update view/component to implement remembering last playlistID in history
* * Implement option to disable new feature
* ! Fix implementation for use case "Find a video (with playlist PL-A) to view, go to channel, view that same video, no playlist restored"
* Adjust side-nav-more-options to account for `a` styles
- These nav-options were changed from `div`s to anchors, and so,
they need to be styled like the `div`s that used to be there.
* Use `inherit` instead of white
v-if="showResult(data)" evaluates once
v-if="showResult" is reactive;
`data` also doesn't need to be passed here
because it is already accessible from `this`.
* move invidious out of stores
* fix getting more replies & local api fallback for comments
* throw error if error message found in invidious response
* fix issue with data setting
* fix issue with replacing thumbnails
* add bank line, remove slash
* Apply suggestions from code review
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* update linters, add stylelint, switch from sass to scss
* remove unused babel-eslint module
* fix spacing in scss files
* dont use npm in script calls
* dont error for `:deep` selector in css
* 2953 Added boilerplate to manage setting.
* Hooked in distraction free title to video list view.
* Tweaked the regexp to include apostrophe when looking for runs.
Also only change case for runs of 3 or more, to avoid messing with
common abbreviations.
* Addressed review feedback.
Co-authored-by: Simon Epstein <simon.epstein@67bricks.com>
* Add wrapper in `ft-input` to correct absolute pos
Previously, the action icon was absolutely positioned
to the relative `ft-input-component`; however,
when the label wrapped (on small displays), the height of the
ft-input-component changed, and the icon would overflow
the bottom of the component. Now, it should be absolutely
positioned to the relative `inputWrapper` which
begins with the top of the input element, and thus, it should
not change position based on the height of the label making it
easier to ensure it is in the right position.
* Modify wrapper to not interfere with existing components
* Make ft-input-tags `width: 100%` on small displays
There isn't a lot of screen real estate on small displays, so
this component should just expand to fill it instead of crunching
in on itself.
* Modify media queries to use more standard breakpoint
# Conflicts:
# src/renderer/components/ft-input/ft-input.css
* Hide line-break in distraction-settings on small displays
* Fix lint issue by removing self-close from `br`
* Improve Watch page accessibility
Co-Authored-By: Jason <84899178+jasonhenriquez@users.noreply.github.com>
* fix title issue, remove unused gotochannel function
Co-authored-by: Jason <84899178+jasonhenriquez@users.noreply.github.com>
* 2622 Remove select-on-focus behaviour from ft-input.
Replace this with show-clear-text-button.
* 2622 Make channel search a little wider so placeholder not truncated.
Co-authored-by: Simon Epstein <simon.epstein@67bricks.com>
* add logic to hide channels
* Add new ft-input-tags ui element and use this for channel hiding
* remove unused tooltip code
* Add tooltip to the ft-input-tags and the new setting
* Add spacer between toggle options and ft-flex-box
* Swap to stringify from semicolon + add focus to label
* Simplify the input_tags code + rename setting to channelsHidden
* Fix issue shown by linter
* Recentralize input button + fix tooltip for small windows
* Improve accessiblity
* fix hiding playlist when channel ID entered
* pass tag directly to removeTag function
Co-authored-by: petaded <code@zikl.co.uk>
Co-authored-by: petaded <petaded@zikl.co.uk>
* Hide unsubscribe button on channel list if this is set in parental
controls.
* Fix github linting errors
* Removed trailing whitespace.
* Reverted yarn.lock change
* Remove package-lock.json
* Added support for password protecting settings.
* Push password handling code inside password-settings component.
* Added incorrect password message
* Replace update method with watch.
* Use updateSettingsPassword to commit value to database.
* Move password settings to the bottom (review comment)
* Moved unlock into separate component (review feedback)
* Styling password dialog
* Removed incorrect (and unused) prop value - review comment.
* Removed unused component imports
Co-authored-by: Simon Epstein <simon.epstein@67bricks.com>
* improve accessibility of FreeTube input elements
Co-Authored-By: Jason <84899178+jasonhenriquez@users.noreply.github.com>
* make focus visible for prompt
* add close button to ft-prompt
* Update src/renderer/components/ft-icon-button/ft-icon-button.vue
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* make suggested changes
* move eslint plugin to devdepedencies
Co-Authored-By: absidue <48293849+absidue@users.noreply.github.com>
* dont hide ft-prompt on focus out
* add aria-describeby
* update eslint-plugin-vuejs-accessibility
* Update yarn.lock
* Update yarn.lock
* Fix lint issues
* only escape whitespace in ids
* use computed properties
Co-authored-by: Jason <84899178+jasonhenriquez@users.noreply.github.com>
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* Hide unsubscribe button on channel list if this is set in parental
controls.
* Fix github linting errors
* Removed trailing whitespace.
* Reverted yarn.lock change
* Remove package-lock.json
Co-authored-by: Simon Epstein <simon.epstein@67bricks.com>
* Migrate search suggestions to youtubei.js
* Rename functions to indicate that they are for the local API
* Implement and use a lightweight Innertube session
* Fix typo in comment
Co-authored-by: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>
* Fix another typo in a comment
Co-authored-by: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>
* Deduplicate CSS rules for the Catppuccin Mocha colours
* Deduplicate CSS rules for the Dracula colours
* Deduplicate CSS rules for the themes
* Deduplicate CSS rules for the main and secondary colours
* Use native DomParser instead of opml-to-json dependency
* Add support for Invidious feed URLs
* Fallback to HTML parser, as HTML is much less strict than XML
* Log error before falling back to the HTML parser
* #1414: Add share button ton Channel view
- Update src/renderer/components/ft-share-button to handle Channels
- Update english locale entries for 'Share channel'
* #1414: Add share button ton Channel view
- update youtubeShareURL() in src/renderer/components/ft-share-button
* #1414: Add share button ton Channel view
- implemented the new button in src/renderer/views/Channel
* #1414: Add share button ton Channel view
- renamed mediaType to shareTargetType in ft-share-button.js
- switched logic from !isChannel to isVideo in ft-share-button.vue
* #1414: Add share button ton Channel view
- renamed target type in ft-share-button.vue
- updated implementation in Channel.vue
It defaults to `false`. This should prevent users with
multiple displays from running into issues when they
drag the window from a portrait display to a landscape
display too quickly.
* Disable http disk cache and implempent in-memory image cache
* Add comment about removing URL scheme prefix
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
* Add early return to clean up the code
* Rewrite cache expiry logic with fallbacks
* Move this change behind a CLI argument --experiments-disable-disk-cache
* Replace CLI flag with a GUI setting
* Improve warning message styling
* ! Fix incompatibility with latest settings code
* Use CSS instead of sass for the experimental settings
* Return the error as JSON instead of throwing it
* Inline restart prompt label and option names and values
* Mention crash risk and recommend backups in the warning
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
* Adding videojs-mobile-ui as a dependency
- Using the beta because it fixes an issue
with multiple version of videojs loading
at once.
This is related to MarmadileManteater#56.
* Mapping defaultSkipInterval to seekSeconds
* Adding CSS to prevent showing duplicate buttons
- Added a new variable `usingTouch` to selectively hide
the existing `vjs-big-play-button` when the `touch-overlay`
is visible.
* Renaming CSS class to something more specific
* Adding text-shadow behind play / pause button
This should make it more visually distinct against a
light or colorful background.
* Enabling touch-overlay anytime a touch is detected
Disabling it whenever mouse input is detected
The default behavior of `videojs-mobile-ui` is to
only work in Android and iOS, but by
forcing the touch behavior to be enabled and selectively
showing it only when touch input is detected, it should work
on any device with touch input even if the browser doesn't
detect that it is running in Android or iOS.
* Removing unnecessary code
* Removing unintentionally leftover variable
* Removing an unnecessary assignment
Adding comments to explain why a flag called
`forceForTesting` is set to true
Disabling the `lockOnRotate` flag.
* Moving this flag and wrapper class
* Adding whitespace
* Making my comment a little more consistent
* Changing the punctuation of a comment
* Adjusting the CSS to fix a firefox discrepancy
* Adding a check for mobile firefox
For whatever reason, mobile firefox sometimes
triggers onmouseover when a touch occurs, and this
is unwanted behavior.
* Adding a drop-shadow to the ff and rw icons
This should make them easier to see on top of light
videos
* Hiding the mobile play button according to setting
- Added CSS to hide the videojs-mobile-ui play button
when the `Display Play Button In Video Player` setting is disabled.
* Replacing long computed string with class binding
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* Adding newline at the end of videoJS.css
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* Implement `getRegionData` in web
- Adjust __dirname to be a more sensible value
- Add `process.env.GEOLOCATION_NAMES` for web builds to avoid having
to blindly try and fetch
* Reverting webpack changes
* Change `indexOf` to `includes`
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* Adding a new helper `createWebURL`
It takes a given path to a resource, and it returns an
easily fetch-able absolute path
* Using `createWebUrl` inside of the locale fetch
* Using `createWebURL` inside of `getRegionData`
* Removing an unnecessary leftover import
* Wait, no I was mistaken
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* Implementing the web callback for `showSaveDialog`
Using the native filesystem API when it is available
* Adding the `writeFileFromDialog` function
It normalizes the behavior of writing to a file handle
given by a file picker between web and electron
* Refactoring `exportFreeTubeSubscriptions`
Now, it should use the profile data stored in memory
rather than reading it from the file system (which may not
be present in web browsers), and it should also work in web
builds
* Refactoring exportYouTubeSubscriptions
Using the `writeFileFromDialog` function instead of `fs`
* Refactoring the rest of the subscription exports
Using the `writeFileFromDialog` function instead of `fs`
* Refactoring exportHistory
- Using the historyCache stored in memory instead of
reading from `fs` to get the history data
- Using `writeFileFromDialog` instead of `fs.writeFile`
* Refactoring exportPlaylists
Using `writeFileFromDialog` instead of `fs`
* Removing no longer needed `fs` import
* Removing something I was using to debug
* Fixing issue with mime types non populating in save picker
* Adding back an unintentionally removed line
Previously, only settings which have a user defined value would
be iterated on in this loop. Now, all settings that have a user defined
value or that have side effects will be iterated. This is important because
`currentLocale`'s side effect handler contains a call to `getRegionData`,
and if this side effect handler is never called, the `Region for Trending`
option in settings will never populate.
* Adding ytpl and ytsr as externals in web.config
This should get rid of those two warnings that were
showing up on web builds
* Reducing discrepancies between dev and prod in web builds
* Removing a line which would prevent hot reloading
`this.locales` is retained between hot reloads, so it shouldn't
be set to `null`.
* Adding a new flag to the dev runner
Adding a new command: `run dev:web`
* Running `loadLocale` in development web builds
* Adding a line back which was removed
* Removing a line which was added
* Adding two additional checks to the instance filter
- Checking if the instance supports the api at all
- Checking if the instance supports cors in web environments
* Removing instances without API from instances json
* Modifying the hardcoded fallbacks
* Use named parameters instead of $ and % in localised strings
* Fix URL warning again
* Update placeholders in most locales
* Let the translators fix the problematic RTL strings
* Fix the missing quotes in some of the YAML files
* remove deprecated @keypress from top-nav
* remove deprecated @keypress from side-nav
* add role and tabindex to new window button
it could previously not be selected by tabbing over the buttons
* Removing a `width:auto` which was overriding
the width for a lot of .select-text
* Making the general-settings component not overflow
* Reducing margin in settings when window is narrow
* Moving invidious instance tooltip to reduce overflow
* Reducing the width of sliders to be 100% at maximum
Before this change, the preset width `380px` could easily
be wider than the window.
* Reducing overflow in Theme Settings
- Added breakpoint for theme `select`s
- Added breakpoint for the UI scale slider
* Reducing the remaining overflow in settings
This moves all of the tooltips slightly to the left
when the window is narrow to reduce overflow.
* Expanding the sponsorblock settings to full width
* Moving remaining tooltips into a fixed zone
* Floating the tooltip icon to the right
When the display is narrow, the tooltip
can sometimes overflow, and it is very
difficult to predict how it will overflow
if the tool tip icon comes directly after
a locale string.
This change floats those icons into a
centralized location where the tooltip
can be guaranteed to not overflow.
* Removing some irrelevant changes
* Reducing margin on switches
* Removing bottom margin on the last section
* Making room for overflow ellipsis
* Adding class `.containsTooltip` to `ft-toggle`
This should make is easier to style the toggles
which contain tooltips specficially.
* Modifying the media query for tooltips
* Adding a media query to reduce data settings margin
* add shortcut to subscription refresh button
* add shortcut to most popular refresh button
* add shortcut to trending refresh button
* prevent refresh if currently loading
`.href` is computed from the real value of the attribute,
and this was causing an issue where isExternalLink would
classify links that should not be external links as external links.
- If picture and picture is disabled, the control can be hidden
when the available screen real estate is small.
- If the width is under 680, the video is already
almost the width of the entire window, so it makes sense
to hide it.
* Adding an import for setImmediate
`setImmediate` is a global in node, but
it is technically from the `timers` module,
and it is not global in web.
* Replacing node specific call to `setImmediate`
`setTimeout` is available globally in both node and web
* Formatting the locales pathname to be more accurate
Before this change, the URL would refer
`https://localhost//static/locales/${locale}.json`
which technically works in most web browsers,
but it does not work in Cordova at all, so this
changes the links to be more accurately:
`https://localhost/static/locales/${locale}.json`
* Removing usage of `path` because it requires a polyfill/shim
* Linting the code
* Add setting to disable automatic fetching of subscriptions
* rename from load to fetch. fix profile switch auto fetching
* add message for when auto fetch is disabled
* add strings to locale file
* Use a switch column grid for the subscription settings
This matches the layout other settings components
* remove import of now unused ft-flex-box component
* add variable to track if an attempt to fetch has been made.
used so the disable automatic fetch message doesn't block the
empty channels message.
* reduce distance between switches by adding compact=true
* edit tooltip wording
* Implement chapters
* Generate chapters locally for the Invidious API backend
* Performance improvements
* More performance improvements
* Improve chapters appearance and add compact mode for Invidious
* Update UI while seeking instead of afterwards
* Invidious extract chapters with range timestamps properly and duplicate chapters
* Minor code improvement
* Add accessibility labels and keyboard navigation
* Add chapter markers
* Fix missing newline at the bottom of ft-video-player.css
* Fix marker placement
* Hiding "smooth-scroll" setting when not electron
- This feature requires the restart of electron and
doesn't work in web builds.
* Removing this comment
- A safeguard was added
- This function won't be called unless IS_ELECTRON is true
- Expanded the fall-back to catch edge
cases where the instance list returns a
completely valid response of [] (an other-
wise useless response which doesn't throw
an error).
* Replace jquery in ft-icon-button with vue functionality
* Rename hide method to hideDropdown
* Fix typo in comment
Co-authored-by: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>
* Fix menu reappearing too soon
* Fix share menu buttons not triggering
Co-authored-by: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>
* use 5px border radius instead of 5%
a 5% border radius will create an oval shape when height and width differ.
this doesn't look good.
5px radius looks better and is used in other places
* offset premiereDate by 12px from bottom left
Increases the offset a tiny amount and adds a left offset aswell.
This looks better than when it was previously only offset from the bottom.
I used 12px because it's what youtube uses.
* use flexbox to align items additional positioning with margins
vertically centes premiere icon and text with by making their parent a flexbox
sets a min width for the text instead of using a set width for the premiereDate
* change font size and weight of timestamp text
* remove uneeded line height styling
line height 1.2 did not affect anything
* fix indentation
* Update src/renderer/views/Watch/Watch.sass
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* Improve premiere timestamp
Removes the unesseccary parts of the timestamp, year and seconds.
displays month as long name (eg., March)
* fix linting... forgot to add the file again before commit.
* get and use current locale set in freetube
this fixes issues where os locale and freetube locale don't match
* use 'default' when no locale is set in freetube.
this defaults to system locale
* use i18n to get locale and format date with intl
* format date with intl.datetimeformat
forgot to add file again after changes...
* use intl relative time format to format upcomingTimeLeft
* rename timeUnitI18nKey to just timeUnit
It's no longer used as a key and is no longer partial
* Implementing the open file dialog in web
- Adding a new function to make loading files
from a dialog box easier in both web and electron
* Canceled should always be false
onchange is only triggered when the file picker
has a file path. If the user cancels, this function
is never called.
* Changing from `function ()` to `() => {`
* Adding a try around processing the history import
* Moving the try-catch to a smaller section
* Adding a listener to when the file picker is closed
* Fixing the grammar on my comment
* Refactoring playlist imports to use readFileFromDialog
* Refactoring handleFreetubeImportFile to use readFileFromDialog
* Refactoring handleYoutubeCsvImportFile to use readFileFromDialog
* Refactoring handleYoutubeImportFile to use readFileFromDialog
* Refactoring importOpmlYoutubeSubscriptions to use readFileFromDialog
* Refactoring importNewPipeSubscriptions to use readFileFromDialog
* Added a check
to prevent resolve from being called multiple times
* Moving the call to removeEventListener
to prevent this event from being triggered twice
* Adding extensions to the web file picker
* Hiding `Check for legacy subscriptions` in web
* Adding comments for better readability
* Correcting my vue syntax
* right click menu for open in a new window
* open video in new window when right click
* router link added to channel images for easier selection in the context of a context menu
* fix security bug user can visit other website via freetube
* simplify context menu entry condition
* createWindow in open new window adapted with the merged function
* Change the open new window selector for the origin of the page no matter the name of the website
* Keypress reintegrate into the code for accesibility
* Keypress reintegrate into the code for accesibility
* Fix style for sidenav subscription links
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
* Improve premiere timestamp
Removes the unesseccary parts of the timestamp, year and seconds.
displays month as long name (eg., March)
* fix linting... forgot to add the file again before commit.
* get and use current locale set in freetube
this fixes issues where os locale and freetube locale don't match
* use 'default' when no locale is set in freetube.
this defaults to system locale
* use i18n to get locale and format date with intl
* format date with intl.datetimeformat
forgot to add file again after changes...
* display year if current year is less than year of premiere date
* Added a copyToClipboard function to utils
This should make it easier to handle errors which
result from the clipboard API (which are more likely
in web builds). This should also make it easier to handle
copying to clipboard in cordova builds by abstracting the
platform specific code out of the views and moving it
all into one function.
* Moved the $t function out of utils
* Removing locale snippets I was using and am not now
* Added function comment to copyToClipboard
* Adding some missing references
* Adding an additional check
* Re-reviewing my changes, I found a mistake
* Update src/renderer/store/modules/utils.js
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* Update static/locales/en-US.yaml
Co-authored-by: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>
* Reverting the language back to what it was previously
* Switching to using i18n.t()
instead of handling the translations myself.
Also, it looks like eslint removed a tab.
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
Co-authored-by: ChunkyProgrammer <78101139+ChunkyProgrammer@users.noreply.github.com>
* Applying a workaround for localization issue
This changes where the title comes from on the response object from ytdl.
This is related to FreeTubeApp#2530.
* Applying the same workaround on the description
* Added a fallback to videoDetails
* Adding a console error to the title try block
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* Simplifying a loop to Array.join
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* Adding a console error to the description try block
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* Add a map for the description lines
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* Added a question mark operator for descriptions
This should prevent errors from erroneously being thrown on videos
which have a blank description. If the description is undefined or does
not contain a 'runs' field, the resulting descriptionLines should be
and empty array. Then, videoDescription will be an empty string.
* Each line already contains a `\n`
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* Allow webpack to bundle *most* dependencies
* Exclude *most* node_modules from getting packaged by electron-builder
* Import only the required icons instead of bundling the whole icon pack
* Reduce packaging blacklist to only include the few things that still need blacklisting
* display time left until video premiers:
* video premiere display time left with time units
Displays time left in seconds, minutes, hours, and days.
This depends on how much time is left.
* premiere time left, display time in singular if needed
also simplified the big if block
* premiere time left, display time unit in lowercase
* Add Starting Soon string to locale file
* apply fixes reported by linter
* premiere time left, add suggested changes
Better temp variable scoping, flatten nested code, rename temp variables, use string intepolation
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
* replace tabs with spaces
tabs where used in some places in the suggested code
* display time left, remove "starting soon" string
Since upcomingTimeStamp will be null when the time has passed the scheduled timestamp
it doesn't make sense to use something that will rarely be displayed.
e.g. a user has to click on the video with less than a second remaing until it goes live for it to be displayed
it would also be displayed as "Premieres in Starting soon" which doesn't make sense
* display 'less than a minute' instead of exactly how many seconds remain
Looks better and works for values less than 0
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
the seconds length value provided by the API
rather than trying to pull the time from the video
element. This is related to FreeTubeApp#2492 and
MarmadileManteater#9.
* add playlist progress bar
could use some css
* theme and lint
idk if those changes to the package.json or yarn.lock are ok but
it wouldent lint without them :/
* hopfuly fix errors
* why is this not working
* this is anoying.
* fix some other issues
thx @PikachuEXE
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
* spelling mistake
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
* will not display if playlist is shuffled or
reversed
Co-authored-by: makerio90 <makerio1@pm.me>
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
Added a line to map the field "authorId" to "channelId"
on the featured channels that come from the Invidious API
because the Channel view expects related channels to have
the property "channelId". This is related to FreeTubeApp#2481.
* External player choice 'None' translated in Settings
* requested fix related to Vue i18n import
* suggested changes using translation key and fallback to player name
* Fix cursor moving while cycling through search suggestions
* Fix the search suggestions changing for all keyboard events
* Remove use of deprecated event.keyCode
* start to implement some parental controls
* Hide share + Hide Unsubscribe
* Hide live streams
* fix hide live streams
* Add "parental-control-settings"
* Implement Hide Live Streams & Hide "Age Restricted"
* Hide live streams from Subscriptions + fix hide live streams from search
* enable safe search on showFamilyFriendlyOnly
* Move some settings from parental control to distraction free
* fix channel loading
* make parental control settings collapsible
* fix lint
* dont show age restricted on videos that are loading
* improve hide live videos
* code refactor
* grammar
* nvm im dumb
* use named placeholder for age restricted message
* improve readability
* change Hide Description to Hide Video Description
* update translated strings
* fix age restricted component
Co-authored-by: Preston <freetubeapp@protonmail.com>
Co-authored-by: peepopoggers <72892531+peepopoggers@users.noreply.github.com>
If a current video is practically over or the value in
the history's watch progress is almost the same as the length
of the video, it's safe to deduce that if the external player
button is clicked, the user is most likely just rewatching
the video, making no sense to pass a start offset to it
* Add hover visual on thumbnails
* Fix white-space issues on playlist description
* Fix playlist issues with scrolling
* Fix end of file new lines
* Fix dropdown not visible issue
* Fix mobile styling
* Clean up using flex
* Fix lint issue
* Clean up ft-input for top-nav
* Even out padding on ft-input
* Remove difference in in/out transitions for input
* Alternative solution to showing clear text button
* Keep clear text button visible if applicable
* Fix typo
* Format Invidious playlist dates with the selected locale
* Fix language for locale API as well
* Add special handling for Norsk nynorsk
* Workaround system locale issue
* * Implement divider for video "more dropdown menu"
* * Update API for ft-icon-button
* * Update existing ft-icon-button user to use new API for dropdown options
* * Update ft-icon-button to remove unused old API
* * Update divider to be less visible
* * Update padding of list item
* * Update WebpackDevServer option to avoid app reloading on MacOS .DS_Store file change
* Add setting for each SB category
* Update SB Settings Component
* Show other SB categories in seek bar
* Use camelCase for SponsorBlock values
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
* change "Don't Skip" to "Do Nothing" in locale
* improve styling of sponsorblock settings
* add filler category, don't repeat colors
* Fix JS format issue caused during code conflict resolving
* make sponsor block markers transparent
* change opacity to 0.6
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
* channel member + custom channel emojis
* accessibility improvements
* show member icon for comment replies
* update yt-comment-scraper. make member icon more accessible.
* Add system preference to theme-settings
* Add watching logic to check for dark theme settings
* Add en system theme translation
* Add explicit darkTheme option to browserWindow
* Remove unnecessary themeSource line
* Fix lint errors
* Move to using main process messaging for theme change
* Add system dataset selectors for themes
* Fix lint errors
* Change system theme to system default
* Use system default for deciding background color of newWindow
* Add baseTheme to state persistance
* Use baseTheme on browserWindow creation
* Fix lint errors
* Improve window background logic
* Catch settingsDb errors
* Remove dark flash on light themes
* Fix lint issues
* Fix system default sync on multiple windows
* Load database on each new window
* Fix lint errors
* Update compatibility for shared electron storage
* Remove unused console log
* Revert unnecessary changes
* Fix window maximize white flash
* Fix handleBaseTheme usage
* Use data-system-theme instead of data-theme
* Revert window maximize changes
* Fix theme flash on new window open