Commit Graph
60 Commits
Author SHA1 Message Date
Emma ea97e7df89 Revert $thumbnail-overlay-opacity and change icon opacity directly
Conflicts / main (push) Canceled after 0s
2024-04-10 22:52:25 -04:00
Emma ca897f8a80 Revert size change of bookmark icon and playlist add icon 2024-04-10 22:47:57 -04:00
Emma 5633ad9037 Make thumbnail icons very slightly larger 2024-04-10 22:18:51 -04:00
Emma c9db2afcf4 Make thumbnail icons fully visible instead of only 85% visible 2024-04-10 22:11:03 -04:00
Emma 9cb0a9fa0c Remove colour from fa-bookmark 2024-04-10 22:10:15 -04:00
Emma ce7a97aafb Make bookmark icon primary colour 2024-04-07 16:57:42 -04:00
Emma 0fae5dbcbb Use bookmark icon for Quick bookmark feature 2024-04-05 22:51:14 -04:00
EmmaandGitHub 551b51341c Improve touch controls for dash quality selector (#4750)
* Improve touch input on dash quality selector

- Add `touchstart` event to quality button which toggles the `vjs-lock-showing` class used on other quality selectors
- Call `this.handleClick` from touchstart (fixes issue with `e.target` not being correct)

MarmadileManteater/FreeTubeCordova#239

* Hide the dash quality selector on `focusout`

* Use `classList.*` methods over manually editing the attributes

* De-duplicate code

* Add back line break

* Allow scroll on dash quality selector when screen is narrow

* Use flag to determine if user is scrolling or tapping

* hide the quality selector on select

(just like the other quality selectors do on mobile)
2024-03-10 18:00:42 -04:00
4a5e479bdf Split view count and published date into two lines on small displays (#4736)
* Split view count and published date into two lines on small displays

* Add blank line

Co-authored-by: PikachuEXE <git@pikachuexe.net>

* Add blank line back

---------

Co-authored-by: PikachuEXE <git@pikachuexe.net>
2024-03-04 08:11:04 +00:00
EmmaandGitHub 9c2c4a9316 Wrap ft-icon buttons below before they go fully vertical (#4735) 2024-03-03 09:16:28 +08:00
EmmaandGitHub 821d5ca73e Fix overflow issue with share playlist icon drop-down (#4677)
* Set share playlist dropdown position to `center` w/ media query

* Remove overflow-y as it causes the overflow issue

Originally, when this overflow-y was added, the share playlist dropdown went straight down, so there would no need for the content to be able to overflow in the y direction. (FreeTubeApp/FreeTube#2281)

Now, the dropdown swings out to the left by default, and even when it is centered, it still overflows the width of the container as an intentional part of the design.

* Remove unnecessary whitespace
2024-02-15 09:02:21 +01:00
EmmaandGitHub d335151d04 Hide channel sidebar label under more when setting is enabled (#4678) 2024-02-14 19:26:21 -05:00
EmmaandGitHub 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
EmmaandGitHub deb2f99125 Hang icon dropdowns to left on watch-video-info on mobile (#4660) 2024-02-09 16:50:16 +01:00
EmmaandGitHub 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
EmmaandGitHub 13e18a8aa7 Improve responsiveness in playlist sidebar when one word channel names are long (#3772)
* Wrap long one word channel names in `infoLine`

* Set height of playlist section to auto on small devices to prevent overflow

* Center videoThumbnail in playlist sidebar to visually be the same as playlist view

* Move CSS changes closer together
2023-07-14 07:23:00 -04:00
EmmaandGitHub bb4b0a890a Fix proxyVideos setting for legacy formats & hls urls (#3639)
* Fix `proxyVideos` setting for legacy formats & hls urls

- Replace the hostname of stream urls with the current invidious instance when `proxyVideos` is true
- Add `local` flag to iv hls URLs when proxy videos is true

* Add missing `proxyVideos` getter in `ft-video-player`

* Move change of URI to before `getProxyVideos`
2023-06-12 17:06:08 +02:00
EmmaandGitHub 042626349a Fix history imports (#3595) 2023-05-28 21:57:31 -04:00
EmmaandGitHub 791a289e68 Prevent loading for ever in web builds in live chat (#3449) 2023-04-19 07:37:42 +02:00
EmmaandGitHub 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
EmmaandGitHub 6513b5d517 Prevent throwing when poll choices do no have images (#3345) 2023-03-22 19:03:37 +00:00
EmmaandGitHub 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
EmmaandGitHub 7640a93ec9 Reduce overflow in playlist view (#3123)
* Prevent overflow on playlist view on small 📱displays

* Prevent transition of width on `.thumbnailImage`

* Expand styles to be responsive at more widths
2023-01-30 10:02:08 +08:00
EmmaandGitHub 7ccb5dd05e Adjust side-nav-more-options to account for anchor style (#3097)
* 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
2023-01-21 10:25:01 +01:00
EmmaandGitHub 12e9565dbe Bind directive to function instead of function call (#3091)
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`.
2023-01-19 16:58:12 +01:00
EmmaandGitHub 0f4bf0e87e Map videos property on Invidious API response (#3090)
`invidiousAPICall` is returning an object with a `videos` property here
instead of a list.
2023-01-19 16:58:04 +01:00
EmmaandGitHub 64d6d9b7ff Correct argument on invidiousGetPlaylistInfo (#3089)
`invidiousGetPlaylistInfo` expects a `string`.
2023-01-19 08:49:56 +08:00
EmmaandGitHub 17ad3da18f Update mastodon link to @FreeTube@fosstodon.org (#3038)
AFAIK mastodon.technology is shut down
2023-01-08 12:33:29 +01:00
EmmaandGitHub 7e7571065d Improve responsiveness of Hide Videos From Channels (#2994)
* 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`
2022-12-30 09:13:45 +01:00
EmmaandGitHub f8ff0e1249 Add setting to toggle Enter fullscreen on rotate (#2808)
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.
2022-11-04 09:11:22 +08:00
EmmaandGitHub b1d6aa5d42 Centralize the code used for parsing invidious comments (#2780) 2022-10-29 11:12:01 -04:00
70baa873fb Move Dialog functions to utils/helpers (#2752)
* Moving `FileFromDialog` helpers into helpers/utils

* Moving `showDialog` functions to `utils/helpers`

* Linting

* Update src/renderer/helpers/utils.js

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

* Update refs  `showSaveDialog` in `ft-video-player`

* Formatting long import to be multiline

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

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
Co-authored-by: PikachuEXE <pikachuexe@gmail.com>
2022-10-25 16:44:18 +02:00
e43fb94a35 Improving touch input by bringing in videojs-mobile-ui (#2719)
* 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>
2022-10-24 13:49:52 -04:00
EmmaandGitHub 12cfe6a3fb Convert Invidious comment publishText to locale (#2758) 2022-10-24 17:10:06 +02:00
6e693c6c37 Implement getRegionData in web (#2743)
* 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>
2022-10-22 10:31:34 +02:00
EmmaandGitHub 41b3af033b Implenting showSaveDialog in web (#2741)
* 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
2022-10-19 07:50:21 +02:00
EmmaandGitHub a6b86fac9c Adding filePaths to the web file picker response (#2739)
`filePaths` is now used to decide which `subscription.db`
type to parse, so this is needed here
2022-10-18 17:50:59 +02:00
EmmaandGitHub c26445a09d Expanding the settings which are iterated in grabUserSettings (#2737)
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.
2022-10-18 17:50:40 +02:00
EmmaandGitHub b453b01b81 Adding web support to dev-runner (#2729)
* 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
2022-10-18 08:50:32 -04:00
EmmaandGitHub b5c486bf1f Fixing some leftover showToast(obj) (#2735) 2022-10-17 12:33:20 +00:00
EmmaandGitHub f94d8a9df2 Filtering out invidious instances that don't support the API (#2714)
* 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
2022-10-13 22:09:15 +00:00
EmmaandGitHub 3c7b143fce Improving responsiveness in Settings (#2694)
* 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
2022-10-11 09:38:31 +02:00
EmmaandGitHub 15d2cbbc8c Fixing the logic for isExternalLink (#2687)
`.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.
2022-10-08 22:36:29 +02:00
EmmaandGitHub ec00ee3c04 Hiding two vjs controls when the screen is narrow (#2688)
- 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.
2022-10-08 22:35:28 +02:00
EmmaandGitHub ac5341b309 Replacing setImmediate with setTimeout (#2683)
* 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
2022-10-07 14:42:13 +00:00
EmmaandGitHub 2e84b442bc Making pack:web work by adding polyfill (#2678)
* Making `pack:web` work

* Removing unnecessary extra line

* Ran `yarn install` to update the lock file

* I'm pretty sure that my lockfile was dirty

* Fixing an incorrect dependency resolution

`buffer` doesn't have to be included through browserify
2022-10-06 14:47:47 +00:00
EmmaandGitHub 38134bffa0 Centering update prompt card (#2668)
* Making the update prompt card fit inside the window

* Centering the update promptCard using flex
2022-10-04 05:08:26 +00:00
EmmaandGitHub 4a70726216 Adding logic to prevent virtual keyboards (#2667)
from closing the search bar
2022-10-04 10:54:31 +08:00
EmmaandGitHub f722340962 Prevent adding extra / when concatenating locale paths (#2665)
* 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
2022-10-02 23:38:01 +00:00
EmmaandGitHub f0deb78e6f Hiding "Disable smooth scroll" option in web (#2638)
* 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
2022-09-29 12:24:10 +00:00
EmmaandGitHub e2686dfe24 Fixing issue instance list not falling back (#2626)
- 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).
2022-09-27 22:05:12 +02:00
EmmaandGitHub 1512178489 Implementing showOpenDialog's web callback (#2608)
* 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
2022-09-23 12:15:49 -04:00
25d954f990 Cleaning up calls to the Clipboard API (#2597)
* 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>
2022-09-21 15:00:21 +08:00
EmmaandGitHub b722435a88 Calling updateVisibleDataList on inputData update (#2601) 2022-09-21 08:01:00 +02:00
EmmaandGitHub c4722c9533 Implementing downloadMedia in web environments (#2602) 2022-09-21 08:00:34 +02:00
EmmaandGitHub 386b9c586b Fixing an undefined function reference (#2586) 2022-09-17 14:43:11 +00:00
77470751c3 Localization inconsistency fix for Local API (#2535)
* 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>
2022-09-09 13:39:56 -04:00
MarmadileManteaterandGitHub 02db9483a3 Removing an an empty toast (#2504)
which was unintentionally introduced by my
last pull request.
2022-08-21 20:19:36 +08:00
MarmadileManteaterandGitHub 166fe004b2 This should eliminate this race condition by using (#2493)
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.
2022-08-20 14:49:41 +02:00
MarmadileManteaterandGitHub 33cf88ce31 Mapping the invidious API field to the view (#2483)
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.
2022-08-15 23:14:59 +00:00