Commit Graph

127 Commits

Author SHA1 Message Date
absidue 98aded9701
Fix handling of video published date in video lists (#4752)
* Fix handling of video published date in video lists

* Use same date format on the history page as before

* Switch to months at 30 days instead of 32 and correct thresholds

* Add support for formatting as weeks

* According to Invidious everything on the popular tab is a short???
2024-03-13 02:26:12 -04:00
absidue 4020139840
Update subscription cache when visiting a channel (#4667) 2024-03-01 13:27:28 +00:00
absidue 1bdeb5f67a
Fix fallback to Invidious for the podcasts channel tab (#4731) 2024-03-01 12:38:49 +00:00
ChunkyProgrammer 6cbe6b5e9d
Fix some translation issues (#4674)
* fix some locale issues

* change local API to Local API

* update translation keys to `Falling back to Local API`

* fix translation key for local api in js files
2024-02-16 22:20:22 +01:00
Emma 1a9a6b9d5e
Adjust margins and flow on Channel view (on narrow displays) (#4662)
* Adjust margins and media queries on Channel view

* Remove redundant CSS
2024-02-11 14:23:57 +00:00
absidue 30248d6bbc
Support YouTube using PageHeader on user channels not just auto-generated ones (#4543)
* Support YouTube using PageHeader on user channels not just auto-generated ones

* Bump YouTube.js to 9.0.2 as requested
2024-02-09 11:39:01 -05:00
absidue d0e33fbc7b
Local API: List related games in featured channels section (#4562) 2024-01-30 00:37:29 +00:00
pkrasicki ead8fc23a9
Fix style for the Select component (#4405)
* Fix style for the Select component

Fixes #1804

Fixes the width of dropdowns and changes their style a little bit

* Fix lint

* Fix comments partially obscuring the sort dropdown

* Move select tooltip
2024-01-03 09:11:10 +08:00
absidue bb83a9dea5
Fix the local API about tab for channels without a joined date (#4508) 2024-01-02 16:54:51 +00:00
absidue 6541695c41
Local API: Support extracting about information from YouTube's new about popup (#4370)
* Support extracting about information from YouTube's new about popup

* Update YouTube.js from 7.0.0 to 8.0.0
2023-12-20 22:27:49 -05:00
Simon Epstein ca94bcef87
Hide playlists in channel search results if "hide channel playlist" preference selected. (#4454)
* Hide playlists in channel search results if "hide channel playlist"
preference selected.

* Apply filtering to invidious api response.

* Correct playlist filtering predicate for invidious API.

---------

Co-authored-by: Simon Epstein <simon.epstein@67bricks.com>
2023-12-16 00:35:17 +00:00
Jason e68c534e6c
A new way to subscribe (#4238)
* Implement styling for new subscribe button

* Implement dropdown element and styling

* Implements remaining styling and logic

* Correct use of aria-selected in FT

Note: was able to add aria-controls to ft-profile-selector because it keeps the hidden dropdown in the DOM. The same is not true of the ft-icon-button or ft-subscribe-button. Main point: aria-expanded should go on the button opening the dropdown, not the dropdown itself.

* Resolve subscribe button staying upon bug

* Remove unneeded vendor-specific transition prefixes

See discussion here: https://www.web-plus-plus.com/Articles/css-transition-moz-and-webkit-vs-css3
2023-11-22 17:19:11 +00:00
absidue 582df9543e
Move hideOutlines to the utils store instead of using provide/inject (#4246) 2023-11-17 02:08:10 +00:00
absidue 05499ce113
Fix playlists not showing up on artist topic channels with the local API (#4129) 2023-10-16 16:17:02 -04:00
Emma 1a92d4b1b7
Wrap channel tabs as soon as there isn't enough screen space (#4139)
* Wrap channel tabs as soon as there isn't enough screen space

* Remove redundant `flex-wrap`
2023-10-14 11:20:19 +00:00
Jason 8a456834ad
Fix styling for Channel page on desktop view (#4112) 2023-10-08 18:29:07 +02:00
Jason bff3a2f824
Mobile/tablet channel page & share button visual improvements (#4061)
* Implement fix to elements escaping container on Channel page at small widths

* Show all Channel tabs on smaller viewport widths & reduce bulky gap

* Update Channel page to not break at even lower sizes

* Re-introduce channel button clipping fix

* Implement updated share button styling

* Fix issue with prompt box shrinking on small enough viewport sizes / overflow

* Update share button to work at all sizes'

* Fix pre-existing issue of Channel tabs overflowing on desktop view in some locales
2023-09-25 14:56:30 +00:00
ChunkyProgrammer 47ef3e5746
Subscriptions: Add community tab (#3973)
* Add subscription community tab

* fix up community tab

* simplify if statement

* use global.community for all references to community

* dont show community when useRss is set

* check visibleTabs for showing the community tab

* fix caching, decrease datalimit for community, add missing translations

* L: Hide shared posts, IV: Don't show errors for empty community tab

* add links to related issues
2023-09-23 00:19:50 +00:00
Jason 3db6f437c9
Implement Stylelint linting of CSS logical properties (#4023)
* Add Stylelint plugin and rule for evaluating use of logical properties

* Implement stylelint-advised use of logical properties in SCSS files

* Implement stylelint-advised use of logical properties in CSS files

* Implement stylelint linting before each commit to any branch of the repo

* Remove other Stylelint plugins so that we can add them in later one-by-one

After discussing this with the FreeTube team, it seems that we are still undecided on which rules we want to be active, including ones currently enabled. As a stopgap fix, we disabled Stylelint checking in our pre-commit Git hook and our recommended
> freetube@0.19.0 lint-fix
> run-p eslint-fix lint-style-fix command. With this change, we will be using Stylelint in our
> freetube@0.19.0 lint-fix
> run-p eslint-fix lint-style-fix command, while giving us the flexibility to add in additional desired plugins and rules as separate efforts.

* Add video player to .stylelintignore

* Replace non-logical property usage in templates

This is not enforced by the plugin at this time.

* Remove use of logical properties from ft-video-player, & allow empty input when .stylelintignore files are changed

* Update ft-video-player.css to disable use of logical property linter

We want to avoid introducing directionality-specific properties that could muck up the video player.

* Remove redundant/unnecessary scripts in package.json
2023-09-14 08:22:33 +08:00
ChunkyProgrammer 67bdf718c0
Fix localization of counts (#4011)
* Fix localization of counts

* Apply suggestions from code review

Co-authored-by: PikachuEXE <pikachuexe@gmail.com>

* Remove unused locale resources

---------

Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
2023-09-12 19:38:36 +02:00
Jason 6f2a535212
Implement right-to-left interface (#3970)
* Replace margin-left with margin-inline-start

* Replace margin-right with margin-inline-end

* Replace padding-left with padding-inline-start

* Replace padding-right with padding-inline-end

* Replace padding-top & padding-bottom with padding-block; continue replacing  padding-left and padding-right with padding-inline-start and padding-inline-end

* Add updated rtl-compatible margins to ft-slider and fix indentation

* Replace margin-top & margin-bottom with margin-block; continue replacing margin-left and margin-right with margin-inline-start and margin-inline-end

* Continue replacing with margin-block and margin-inline

* Replace left and right with inset-inline-start and inset-inline-end

This commit also changes border-left to border-inline-start, and border-right to border-inline-end.

* Replace margin-bottom, top, and bottom with margin-block-end, inset-block-start, and inset-block-end

This commit also replaces border-top and border-bottom with border-block-start and border-block-end.

* Replace text-align left and right with text-align start and end

* Fix syntax error with inset-block-end

* Implement dynamic float: left/right based on direction ltr/rtl

* Implement dynamic navigation arrow placement based on direction ltr/rtl

To the fullest of my understanding, it is expected for the left navigation in rtl-supporting browsers to be for forward navigation, and the right one to be for backward navigation.

* Add direction to body based on preferred language

* Implement horizontal directionality coefficient to fix translate working in wrong x-direction for rtl languages

* Add explicit text-align: start in places to ensure rtl version is correctly aligned

* Add text-align: start to places where it is not inferred to enable proper rtl text orientation

* Fix search bar magnifying glass being too far right issue

* Move body.dir-setting logic to setLocale to fix dir not setting correctly on page reload

* Change .switchColumn to have align-items: start instead of justify-items: start

I have validated this for all settings tabs; the justify-content: start did nothing in any language, left-to-right or right-to-left. Replacing it with align-items: start aligned all menu switch items by their switches, not by their labels. This makes for a much more uniform settings section for trl languages.

* Fix emergent bug in which history icons are temporarily disabled on changing language to one with different directionality

Given that which icon is displayed for which history arrow is now dynamic based on the user's directionality, changing of the icon resets the font-awesome-icon state and thus re-adds the base disabled class to both arrows. This means that changing your language to one that has a different directionality was falsely setting the arrows to their disabled state (until the route is changed, after which the history icons will be fully back to normal). This commmit refactors the history icon setting logic to use class binding to two booleans in the top-nav component's data rather than adding and removing the disabled classes directly to the arrow elements' classLists, thus cleaning up the implementation and fixing the bug.

* Add Kurdish to rtl languages list & add li items to be right-aligned on rtl languages

* Force FreeTube logo to be ordered left-to-right for 'brand consistency'

* Add styling flipping font-awesome icons for rtl languages except for exclusion list

* Update isRightAligned with additional languages, and use it instead of locale value from store

Kudos to absidue for pointing out this existing function for representing this, and that it grabs directly from the i18n object. This means that FreeTube will display the proper rtl interface if one is the user's system language, where it did not before.

* Update isRightAligned property name to more clearly reflect rtl purpose

* Simplify left/right arrow display logic

Leverage the icons being flipped rather than manually setting the classes to their opposites when the directionality is RTL.

* Replace justify-self: left & justify-self: right with justify-self; start and justify-self: end

* Remove misguided attempt to emulate directionality-agnosticism with rightAligned class

* Explicitly center FreeTube version on About page

* Replace pre-existing identation issue

* Replace margin-left with margin-inline-start

* Replace margin-right with margin-inline-end

* Replace padding-left with padding-inline-start

* Replace padding-right with padding-inline-end

* Replace padding-top & padding-bottom with padding-block; continue replacing  padding-left and padding-right with padding-inline-start and padding-inline-end

* Add updated rtl-compatible margins to ft-slider and fix indentation

* Replace margin-top & margin-bottom with margin-block; continue replacing margin-left and margin-right with margin-inline-start and margin-inline-end

* Continue replacing with margin-block and margin-inline

* Replace left and right with inset-inline-start and inset-inline-end

This commit also changes border-left to border-inline-start, and border-right to border-inline-end.

* Replace margin-bottom, top, and bottom with margin-block-end, inset-block-start, and inset-block-end

This commit also replaces border-top and border-bottom with border-block-start and border-block-end.

* Replace text-align left and right with text-align start and end

* Fix syntax error with inset-block-end

* Implement dynamic float: left/right based on direction ltr/rtl

* Implement dynamic navigation arrow placement based on direction ltr/rtl

To the fullest of my understanding, it is expected for the left navigation in rtl-supporting browsers to be for forward navigation, and the right one to be for backward navigation.

* Add direction to body based on preferred language

* Implement horizontal directionality coefficient to fix translate working in wrong x-direction for rtl languages

* Add explicit text-align: start in places to ensure rtl version is correctly aligned

* Add text-align: start to places where it is not inferred to enable proper rtl text orientation

* Fix search bar magnifying glass being too far right issue

* Move body.dir-setting logic to setLocale to fix dir not setting correctly on page reload

* Change .switchColumn to have align-items: start instead of justify-items: start

I have validated this for all settings tabs; the justify-content: start did nothing in any language, left-to-right or right-to-left. Replacing it with align-items: start aligned all menu switch items by their switches, not by their labels. This makes for a much more uniform settings section for trl languages.

* Fix emergent bug in which history icons are temporarily disabled on changing language to one with different directionality

Given that which icon is displayed for which history arrow is now dynamic based on the user's directionality, changing of the icon resets the font-awesome-icon state and thus re-adds the base disabled class to both arrows. This means that changing your language to one that has a different directionality was falsely setting the arrows to their disabled state (until the route is changed, after which the history icons will be fully back to normal). This commmit refactors the history icon setting logic to use class binding to two booleans in the top-nav component's data rather than adding and removing the disabled classes directly to the arrow elements' classLists, thus cleaning up the implementation and fixing the bug.

* Add Kurdish to rtl languages list & add li items to be right-aligned on rtl languages

* Force FreeTube logo to be ordered left-to-right for 'brand consistency'

* Add styling flipping font-awesome icons for rtl languages except for exclusion list

* Update isRightAligned with additional languages, and use it instead of locale value from store

Kudos to absidue for pointing out this existing function for representing this, and that it grabs directly from the i18n object. This means that FreeTube will display the proper rtl interface if one is the user's system language, where it did not before.

* Update isRightAligned property name to more clearly reflect rtl purpose

* Simplify left/right arrow display logic

Leverage the icons being flipped rather than manually setting the classes to their opposites when the directionality is RTL.

* Replace justify-self: left & justify-self: right with justify-self; start and justify-self: end

* Remove misguided attempt to emulate directionality-agnosticism with rightAligned class

* Explicitly center FreeTube version on About page

* Fix question mark reversing logic for Arabic, Hebrew, Persian, and Urdu

* Fix minor indentation issue

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>

* Remove unused function

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>

* Update src/renderer/components/ft-slider/ft-slider.css

Co-authored-by: PikachuEXE <pikachuexe@gmail.com>

---------

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
2023-09-09 18:29:26 +02:00
absidue 96230c9d1b
local API: Add support for PageHeader channel header (#3871) 2023-08-15 05:37:32 +00:00
ChunkyProgrammer 2d934eabea
Make profiles keyboard accessible (#3863)
Co-authored-by: Jason <84899178+jasonhenriquez@users.noreply.github.com>
2023-08-14 17:07:57 +02:00
absidue 4e4fe69384
Fix focus not showing on channel page tabs and in prompts (#3850) 2023-08-06 13:26:22 -04:00
absidue 072066fbe1
Miscellaneous CSS cleanup (#3847) 2023-08-04 21:02:46 -04:00
PikachuEXE d8ed6b9f3e
Update ft-input for top navbar search input to behave more like Youtube one (#3793)
* * Update ft-input for top navbar search input to behave more like Youtube one

* * Implement mouseleave = deselect

* ! Fix clicking option/enter causes incorrect displayed input

* * Update search input to update input data based on KB selected suggesion value on keydown

* * Allow suggesion deselection via arrow up/down

* $ Fix naming, import code style

* - Remove unused import
2023-08-02 07:20:03 -04:00
Preston b9eb2a76fb
Add Tabs to subscriptions page for live streams and shorts (#3725)
* Add Tabs to subscriptions page for live streams and shorts

* Fix naming issue with fetching live streams via Invidious RSS

* Remove console log

* Better error handling and better live stream sorting

* Fix linter issues

* Change videos RSS feed. Make live stream call more efficient.

* Store last used tab in memory. Return to last used tab on mount

* Fix live sorting. Reorganize tabs and check for currentTab via created instead of mounted

* Fix linting issue

* Start Global locales object, add distraction free checks for subscriptions tab

* Start Global locales object for all locales

* Cleanup and reduce duplicate code

* Undo original distraction free settings change

* Fix missing change in previous commit

* Add distraction free settings to hide tabs

* Improve accessibility

* Make app-wide hide live streams setting override hide subscriptions live

* Fix incorrect all tabs disabled message

* Fix arrow key navigation

* Create shared UI component for the subscription tabs

---------

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
2023-07-21 07:33:34 -04:00
ChunkyProgrammer 095568e1b1
Channels: Add support for release and podcast tab (#3778)
* Channels: Add support for release and podcast tab (local)

* Add support for releases and podcasts tab (Invidious API)

* add urls with has_url

* Fix copy paste error

Co-Authored-By: absidue <48293849+absidue@users.noreply.github.com>

---------

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
2023-07-20 00:16:45 +02:00
PikachuEXE 35868b408f
Update some views to opt out of "Hide Videos From Channels" (#3748)
* * Update channel view to opt out of "Hide Videos From Channels"

* * Update history, local playlist & subscription view to opt out of "Hide Videos From Channels"
2023-07-12 20:09:48 -04:00
PikachuEXE 930184d29d
Fix duplicate content updates run on channel switch (#3764)
* Revert "Bump prettier from 2.8.8 to 3.0.0 (#3758)"

This reverts commit f77ae6da16.

* ! Fix duplicate content updates run on channel switch
2023-07-12 20:08:11 -04:00
absidue beaa9cc477
Cleanup some duplicate channel tab URL handling code (#3697)
* Cleanup some duplicate channel tab URL handling code

* Move to method
2023-07-02 22:51:39 -04:00
absidue 7c7e0e5d7d
Add back sort by oldest (#3698) 2023-06-27 13:30:36 -04:00
absidue 0a471f8a17
Fix channel tabs accessibility (#3689) 2023-06-26 18:58:31 +00:00
RikThePixel 96835dd703
Fix Hide Channel Subscribers setting still displaying subscribers if changed from a secondary window (#3504) (#3692)
* Fix Hide Channel Subscribers setting still displaying subscribers if changed from a secondary window (#3504)

* Revert naming change subscriptionCountText to channelSubCountText

* Use `!=` instead of `!==` for `subscriberCount` in ft-list-channel

* Set subscriberCount to null if `data.subscribers` is null in ft-list-channel.js

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>

---------

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
2023-06-25 10:40:03 -04:00
absidue c53f5b6dac
Add distraction free setting to hide channel shorts (#3569)
* Add distraction free setting to hide channel shorts

* Add support for channel shorts URLs
2023-05-23 08:59:24 +08:00
absidue 9019be2419
Implement the shorts tab on channel pages (#3533)
* Implement the shorts tab on channel pages

* Remove testing code

* Upgrade YouTube.js
2023-05-15 10:01:18 +08:00
absidue 2ef96c7179
Move the channel about tab into it's own component (#3493) 2023-05-08 09:42:06 +08:00
ChunkyProgrammer a9fa327c9b
Create Subscribe Button reusable component (#3468)
* Create Subscribe Button component

Co-Authored-By: Minh Hang Nguyen (Jenny) <55411709+minhhang107@users.noreply.github.com>

* use defineComponent, remove unused prop

Co-Authored-By: absidue <48293849+absidue@users.noreply.github.com>

* readd unsubscribe method

* add comment

* Fix typo

Co-authored-by: PikachuEXE <pikachuexe@gmail.com>

* remove unused code

* move json serialization

---------

Co-authored-by: Minh Hang Nguyen (Jenny) <55411709+minhhang107@users.noreply.github.com>
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
2023-05-07 14:06:23 +02:00
ChunkyProgrammer 1b45f25985
Add hide community, playlist and featured channels settings (#3484)
* Add hide community, playlist and featured channels setting

* fix lint issues
2023-05-06 14:14:51 +00:00
ChunkyProgrammer c197b5ac93
IV: Allow fetching more community posts (#3466)
* 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>
2023-05-06 12:22:29 +00:00
absidue 170df2a054
Upgrade YouTube.js from 4.3 to 5.0.2 (fixes throttling) (#3474)
* Upgrade YouTube.js from 4.3 to 5.0.1 (fixes throttling)

* Fix typo

* Upgrade YouTube.js from 5.0.1 to 5.0.2 (fixes watch page views)
2023-05-01 09:12:23 -04:00
absidue 45d679b84b
Clean up unused component properties (#3458) 2023-04-25 20:03:36 -04:00
Yaron Shahrabani c4f6033dee
Update Channel age restricted key (#3237)
* Update Channel.js

Typo fixed

* Fix channel age-restricted key in all files

---------

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
2023-04-10 08:08:55 -04:00
Emma 2a9ec5ee10
Prevent `channelInstance` from being `null` in community tab fallback (#3346)
* 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
2023-04-01 10:43:37 -04:00
Emma 86962f2802
Improve community tab responsiveness (#3344)
* Make channel page 📱responsive again

* Even out padding on the inside of `ft-community-post`
2023-03-22 13:44:19 +01:00
absidue fe44a75275
Fix alt + arrow keyboard shortcut when a channel tab is focused (#3317) 2023-03-22 08:41:34 -04:00
absidue 5dd8fb0b59
Hide the channel sort by dropdown when the tab isn't sortable (#3323)
* Hide the channel sort by dropdown when the tab isn't sortable

* Hide playlists sort by if there is only one playlist
2023-03-22 08:12:42 -04:00
absidue 4433a183c9
Fix joined date erroring on channels without a joined date (#3314) 2023-03-22 08:09:41 -04:00
absidue 304152fe41
Workaround YouTube bug causing the community tab to be empty (#3318) 2023-03-18 20:25:52 +00:00
absidue f525b0e2d4
Clear community posts array when switching channels (#3316) 2023-03-18 20:09:06 +00:00