Commit Graph

915 Commits

Author SHA1 Message Date
Emma 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
absidue 5677c3182d
Remove jquery from the ft-player component (#2647) 2022-10-05 08:25:50 +00:00
absidue 5cd2e5a7d0
Replace jquery on the trending page (#2663) 2022-10-04 17:56:10 +00:00
absidue 28e07ec0aa
Replace jquery in the profile selector (#2664) 2022-10-04 17:55:55 +00:00
absidue f87014aedc
Replace jquery in live chat and improve the message styling (#2666)
* Replace jquery in live chat and improve the message styling

* Fix the automatic scrolling
2022-10-04 17:55:13 +00:00
Emma 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
Emma 4a70726216
Adding logic to prevent virtual keyboards (#2667)
from closing the search bar
2022-10-04 10:54:31 +08:00
Emma 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
Aiz 6ddbce2e02
Add setting to disable automatic fetching of subscription feed (#2632)
* 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
2022-09-29 22:29:47 -04:00
PikachuEXE 21371eec1a
* Update search in new window function to also copy original query text to new window search input (#2637) 2022-09-29 21:22:28 +00:00
absidue bc886af726
Implement chapters (#2224)
* 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
2022-09-29 20:01:54 +00:00
absidue 206094aecd
Create video player buttons without jquery (#2636) 2022-09-29 13:15:30 +00:00
Emma 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
absidue 850ed6502c
Fix package.json getting embedded in the release builds (#2635) 2022-09-28 20:55:33 -04:00
Emma 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
absidue c3f8a3561b
Replace jquery in ft-icon-button with vue functionality (#2617)
* 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>
2022-09-27 08:16:56 -04:00
Aiz 498ae77ade
Improve styling of premiere date box (#2611)
* 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>
2022-09-27 07:19:35 +08:00
absidue 6d1b0a63b6
Fix empty description box showing for the Invidious API (#2614)
* Fix empty description box showing for the Invidious API

* Add comment about HTML parsing
2022-09-26 20:36:41 +00:00
Aiz 148db553f5
Remove disable CORS Line. issue is fixed upstream (#2623)
issue was fixed in https://github.com/electron/electron/pull/25463

it will now be disabled when with webSecurity: false
2022-09-26 16:16:38 -04:00
absidue fa8d423bc6
Fix some development code not getting optimised out (#2605) 2022-09-26 16:15:13 -04:00
absidue 8e72e7fe5f
Replace jquery in top-nav component (#2620) 2022-09-26 16:14:21 -04:00
absidue c1a78d878e
Use native addEventListener instead of jquery's .on (#2612) 2022-09-25 08:44:16 +08:00
absidue facbbf6acf
Replace jquery $.param with native URLSearchParams (#2613) 2022-09-24 19:39:27 -04:00
Aiz c9c522a2b1
Use Intl.RelativeTimeFormat() for premiere upcoming time left (#2610)
* 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
2022-09-24 23:23:45 +00:00
absidue ac4cc4a611
Compress and lazy load locales (#2603)
* Compress and lazy load locales

* Remove index.html when loading the locales on the web

* Fix locale output path for web build
2022-09-24 11:06:50 -04:00
absidue 63946f7561
Add a settings section component to reduce duplicate code (#2609) 2022-09-24 09:12:11 +00:00
Emma 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
ChunkyProgrammer 7822f7423e
Remove console.logs (#2606)
* remove console.logs

* use 'off' instead of 0
2022-09-23 09:04:10 +08:00
Bryan-Elliott Tam 420a91a072
Feature/new window right click (#2027)
* 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>
2022-09-22 13:03:18 +00:00
Aiz e90b9f4706
Improve premiere timestamp to be easier to read (#2559)
* 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
2022-09-22 08:49:59 +08:00
absidue 061a7c8db1
Replace jquery getJSON and get with native fetch (#2591)
* Replace jquery getJSON and get with native fetch

* Remove unnecessary console.log
2022-09-21 07:05:03 +00:00
Emma 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
Emma b722435a88
Calling updateVisibleDataList on inputData update (#2601) 2022-09-21 08:01:00 +02:00
Emma c4722c9533
Implementing downloadMedia in web environments (#2602) 2022-09-21 08:00:34 +02:00
Aiz 7f6834d8f6
set height of watch page grid with auto in dual-column-template (#2588)
this ensures the page doesn't keep scrolling forever if live chat is enabled and recommended videos is disabled
2022-09-20 14:31:25 +00:00
PikachuEXE d8de7fe06f
* Implement last window's fullscreen state (#2495) 2022-09-20 08:49:45 -04:00
absidue 77c26638e1
Fully replace electron-debug with our own implementation (#2585) 2022-09-19 09:36:40 -04:00
absidue 76a9e5c3c4
Fix the localised description containing broken URLs (#2572)
* Fix the localised description containing broken URLs

* Fix hashtag handling in title and description
2022-09-19 08:49:30 -04:00
ChunkyProgrammer 8fa182e246
Properly localize numbers (#2557)
* localize numbers properly

* Remove tostring

Co-authored-by: Aiz <66974576+Aiz0@users.noreply.github.com>

Co-authored-by: Aiz <66974576+Aiz0@users.noreply.github.com>
2022-09-19 20:14:53 +08:00
Emma 386b9c586b
Fixing an undefined function reference (#2586) 2022-09-17 14:43:11 +00:00
absidue f2d2827e0f
Fix some web issues and cleanup (#2582) 2022-09-17 08:19:31 +00:00
ChunkyProgrammer d1a50a4e52
update vue2 to latest (#2554)
* update vue2 to latest

* remove vue-template-compiler, update loader & router

* use :deep instead of v-deep

* fix yarn.lock
2022-09-16 14:49:27 +00:00
absidue 62829b736a
Electron variable at build time instead of at runtime (#2574) 2022-09-15 08:59:09 +00:00
Malik c1ff6587ad
#2512: Update search suggestions on input (#2567)
* #2512: Update visible data list on input

* #2512: Remove excessive visible data list update on input
2022-09-13 04:18:05 +00:00
absidue 97e3813182
Update css-loader and switch to webpack 5's asset modules (#2566) 2022-09-11 20:34:58 -04:00
absidue 036abdc96b
Remove unused ft-intersection-observer component (#2563) 2022-09-11 14:29:27 -04:00
absidue c5bef13ee6
Don't log any errors if there are no SponsorBlock segments (#2555) 2022-09-10 16:08:11 +00:00
absidue 644df97acc
Increase width of quality selector so that 1080p60 doesn't overflow into the full screen button (#2556) 2022-09-10 14:14:18 +00:00
Emma 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
absidue eaa15ea833
Webpack bundle dependencies (#2511)
* 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
2022-09-06 02:29:10 +00:00