Commit Graph

63 Commits

Author SHA1 Message Date
peepopoggers b5ba27b0a0
theme loading (#1747)
* Don't blind dark theme users

It is better to start the temporary background dark so it doesnt flashbang dark theme users late at night.
Just happened to me 😢 
This makes the loading background color the normal dark theme background color.

* Grab theme before await

Co-authored-by: Preston <freetubeapp@protonmail.com>
2021-09-23 18:08:50 -04:00
Svallinn d8d601cc08
Main: Minor changes 2021-07-03 03:44:23 +01:00
Svallinn 2ce3110041
Main: Move window bounds persistence logic over to the main process 2021-07-03 03:43:49 +01:00
Svallinn 718f9450d6
Main: Remove 'openedWindows' variable
Electron already has a built-in tracker for all opened windows,
so it makes no sense to have custom code to handle it.
One should always use what is given to you :^)
2021-07-03 03:38:41 +01:00
Svallinn b68e1700c0
Main+Renderer: Make IRC window syncing channels more generic
This commit renames the 'syncSettings' IRC channels to 'syncWindows' and
changes the renderer's listener setup for this channel more generic
so that it can cover other store modules besides the settings' module.
2021-06-26 05:06:18 +01:00
Svallinn d3e6d57f20
Main+Utils: Rename `getLocale` function to `getSystemLocale` 2021-06-20 02:47:33 +01:00
Svallinn be11e3d8cb
Chore+Refactor: Replace `nedb` package with `nedb-promises`
The 'nedb' package is unmaintained (last update was 5 years ago) and
has a couple of high severity vulnerabilities.

In addition, the use of callbacks is somewhat cumbersome for
the project's current workflow.

Therefore, I've decided to replace it with the 'nedb-promises' package,
which, internally, makes use of a maintained fork of 'nedb' and
wraps its API with Promises.
2021-06-17 04:21:58 +01:00
Svallinn 77e743060f
Main+Renderer+Dev-Runner: Refactor smooth scrolling toggling
Smooth scrolling toggling is currently wonky on runtime, since,
most of the time, it doesn't toggle on and off properly.
In addition, now that we have multi-window support,
the current implementation was somewhat lacking.

This commit solves those issues by replacing
the existing smooth scrolling related channels with a
new generic `relaunchRequest` channel.
2021-06-16 05:43:26 +01:00
Svallinn bceab435b7
Main: Move session data cleanup to `window-all-closed` event
Since the session is shared by all 'BrowserWindow's and
it can be accessed without a window reference,
it's best to clear data when the 'window-all-closed' event is emitted.
2021-06-16 05:43:25 +01:00
Svallinn bbc9b63357
Main: Simplify `createWindow` function
With the knowledge that the session is shared by all 'BrowserWindow's,
proxy and cookie related logic can now be set once on startup and
it's not necessary to set them again for every window created.
2021-06-16 05:43:09 +01:00
Svallinn bd4e867db1
Main: Change `window.webContents.session` to `session.defaultSession`
Previously, the code misleadingly lead developers to believe that
each 'BrowserWindow' had its own isolated session.
This commit clarifies the fact that a global session is shared
by all 'BrowserWindow's by default.
2021-06-16 05:34:38 +01:00
Svallinn 0551ce44f2
Main+Renderer: Enforce synchronous messages on `setBounds` channel
This should fix an issue where, when closing the app, an error window
would very occasionally pop up declaring that 'getNormalBounds'
was called on an undefined variable.
2021-06-16 05:34:37 +01:00
kuhaku 52fa523df1
Add support for External Players (closes #418) (#1271)
* feat: add support for opening videos/playlists in external players (like mpv) #418

Signed-off-by: Randshot <randshot@norealm.xyz>

* feat: move external player settings into own section
feat: add warnings for when the external player doesn't support the current action (e.g. reversing playlists)
feat: add toggle in settings for ignoring unsupported action warnings

Signed-off-by: Randshot <randshot@norealm.xyz>

* improvement: do not append start offset argument when the watch progress is 0

Signed-off-by: Randshot <randshot@norealm.xyz>

* fix: fix undefined showToast error when clicking on the external player playlist button

Signed-off-by: Randshot <randshot@norealm.xyz>

* feat: add icon button for external player to watch-video-info (below video player) component
improvement: refactor the code for opening the external player into a separate function in utils.js

Signed-off-by: Randshot <randshot@norealm.xyz>

* feat: add support for ytdl protocol urls (supportsYtdlProtocol)
chore: fix lint error

Signed-off-by: Randshot <randshot@norealm.xyz>

* feat: add support for passing default playback rate to external player
improvement: add warning message for when the external player does not support starting playback at
             a given offset
chore: rename reverse, shuffle, and loopPlaylist fields for consistency

Signed-off-by: Randshot <randshot@norealm.xyz>

* feat: add setting for custom external player command line arguments

Signed-off-by: Randshot <randshot@norealm.xyz>

* chore: fix lint error

Signed-off-by: Randshot <randshot@norealm.xyz>

* improvement(watch-video-info.js): change the default for playlistId back to null (consistent with other occurrences)
improvement(utils.js/openInExternalPlayer): also check for empty playlistId string
fix(watch-video-info.js): fix merge error

Signed-off-by: Randshot <randshot@norealm.xyz>

* improvement(components/ft-list-video): check whether watch history is turned on, before adding a video to it
fix(store/utils): fix playlistReverse typo, causing `undefined` being set as a command line argument
fix(store/utils): check for 'string' type, instead of `null` and `undefined`
fix(views/Watch): fix getPlaylistIndex returning an incorrect index, when reverse was turned on
chore(locales/en-US): fix thumbnail and suppress typo
chore(locales/en_GB): fix thumbnail and suppress typo

Signed-off-by: Randshot <randshot@norealm.xyz>

* feat: pause player when opening video in external player

Signed-off-by: Randshot <randshot@norealm.xyz>

* feat(externalPlayer): refactor externalPlayerCmdArguments into a separate static file `static/external-player-map.json`
chore(components/ft-list-video): fix lint error

Signed-off-by: Randshot <randshot@norealm.xyz>

* Revert "feat: pause player when opening video in external player"

This reverts commit 28b4713334.

* feat: pause the app's player when opening video in external player

* This commit addresses above requested changes.

improvement(components/external-player-settings): move `externalPlayer` check to `ft-flex-box`
improvement(components/external-player-settings): use `update*` methods, instead of `handle*`

improvement(store/utils): move child_process invocation to `main/index.js` via IPC call to renderer
improvement(store/utils): use `dispatch` for calling actions
improvement(store/utils): get external player related settings directly in the action

improvement(renderer/App): move `checkExternalPlayer` call down into `usingElectron` if statement
fix(renderer/App): fix lint error

improvement(components/ft-list-playlist): remove unnecessary payload fields
fix(components/ft-list-playlist): fix typo in component name

improvement(components/ft-list-video): remove unnecessary payload fields

improvement(components/watch-video-info): remove unnecessary payload fields
improvement(views/Settings): add `usingElectron` condition

Signed-off-by: Randshot <randshot@norealm.xyz>

* fix(store/utils): fix toast message error

Signed-off-by: Randshot <randshot@norealm.xyz>

* fix(store/utils): fix a few code mess-ups

Co-authored-by: Svallinn <41585298+Svallinn@users.noreply.github.com>
2021-06-13 17:31:43 +02:00
Svallinn 7e94abb3b4
Main+App+Store: Implement basic setting sync between Electron windows
The app utilizes the Electron IPC to communicate settings' updates
to the other existing windows.

This is still at a fairly rudimentary stage, since some settings are
not syncing at all, while other settings have related side effects that
are not currently being propagated to the remaining windows.

An example of this would be the 'uiScale' setting, in which
the value is properly synced, but the app's actual scaling isn't.
2021-06-11 02:56:39 +01:00
Svallinn 94fcacc308
Main: Rearrange/refactor the main process' logic
This commit removes duplicated handler logic related to the app's
'ready' event. In addition, it rearranges the template used to build the
app's menu in order to make it a bit easier to understand.
2021-06-07 19:10:35 +01:00
Svallinn 1c57c2b0d7
Refactor/Main: Remove `enableRemoteModule` option from `webPreferences` 2021-05-23 04:39:48 +01:00
Svallinn af0353ea32
Refactor: Erase `@electron/remote` references and other dangerous calls
The `remote` module is deprecated and `@electron/remote` is unnecessary,
since the `ipcMain` and `ipcRenderer` can replace their functionality,
providing better performance and better security.

All other dangerous calls (mainly pulling main process constructs into
the renderer process) have also been removed.
2021-05-22 00:49:48 +01:00
Svallinn 1279944c9d
Chore: Remove devtron from dev dependencies
Devtron is currently broken and entirely unmaintained.
The latest release was on Oct 7, 2016.
2021-05-10 06:17:00 +01:00
Svallinn 640ed6818a
Main: Clear cache and storage data only when the last window is closed
This prevents the CONSENT cookie from being deleted after a window
is closed by the user, making it so that the user can no
longer load the comment section.
2021-05-10 06:01:35 +01:00
Svallinn b37c46f12d
Revert unintended merged code from "Update package-lock.json"
This was caused by an unexpected Weblate interaction with a force push.
2021-05-10 05:59:48 +01:00
Svallinn 36d94c812d
Update package-lock.json 2021-05-09 05:48:03 +01:00
Svallinn 91776441f1
chore: bump electron version to 12.0.6
* Bump electron version to 12.0.6
* Move web content clean up logic to window close event

Reference from electron release notes:
> Fixed the window-all-closed event being emitted while the last
BrowserWindow was still in the process of being closed.
2021-05-01 03:50:52 +01:00
PikachuEXE 4101a4a167
! Fix new window not created when all windows closed and app activated (#1203)
Since the app is coded to quit for non MacOS when all windows are closed
This issue happens only on MacOS
2021-04-29 20:51:23 +00:00
PikachuEXE ebc829cef0
Add "open new window" button (#1153) 2021-04-15 20:28:35 +02:00
Svallinn 9031acc260
Merge branch 'development' into 946-version-flag 2021-04-08 19:05:01 +00:00
Preston ae76aebc97 Remove unneeded session import 2021-04-08 09:42:24 -04:00
Svallinn 9b92db3522
Remove stray spaces 2021-04-08 03:13:40 +00:00
Svallinn 9ff0994cee
Merge branch 'development' into 946-version-flag 2021-04-08 03:07:15 +00:00
Preston 01da5277ee Add more URLs for consent cookie 2021-04-07 22:40:35 -04:00
Preston 3048e39106
Add 'enable-file-cookies' flag 2021-04-07 17:54:44 -04:00
Preston 8f64b083aa
Remove trailing spaces 2021-04-07 17:38:09 -04:00
Preston e155426700
Add second consent cookie for compatibility 2021-04-07 17:33:56 -04:00
Preston 7b3f67073b Add consent cookie to fix comments and various problems 2021-04-07 16:39:14 -04:00
Svallinn 998c5c767c
Merge branch 'development' into 946-version-flag 2021-03-14 18:58:15 +00:00
Preston dfc45ee9a6
Fix: Store proper windows bounds when maximized 2021-03-10 21:01:21 -05:00
Svallinn cb29074a08
Remove unnecessary call to app.setName 2021-03-07 16:08:03 +00:00
Svallinn 3734bad6ef
Support for version flag 2021-03-07 16:07:09 +00:00
Preston 5c9bb5e9fd Update index.js 2021-03-03 11:42:49 -05:00
Preston 1e45ef2b92 Add ignore-gpu-blacklist flag 2021-03-03 08:40:21 -05:00
Preston a3fe91bef5 Update to Webpack 5 and Electron 12 2021-03-02 22:51:01 -05:00
Preston 6d7d874bc0 Add Proxy configuration to settings. Fix ft-video-list height when using list display 2021-01-14 13:51:33 -05:00
Preston 176d88bb0c Fix CLI argument logic again 2020-12-20 21:28:24 -05:00
Preston 52c5dc5322 Fix CLI logic for Linux / Windows 2020-12-18 17:24:15 -05:00
Preston 46c271aa22 Fix linter issues 2020-10-27 13:47:40 -04:00
Colin Fleming 6466860eb8
Fix freetube:// protocol handling on macOS. (#669)
1. Handle open-url events.
2. Make protocol handling more robust on Win/Linux based on SO post.
3. Change 'ping' message to more descriptive 'openUrl' message.
4. Remove freetube:// protocol in main, and unify URL handling logic.
2020-10-15 09:33:25 -04:00
Preston 66e96adacf Explicitly enable smooth scrolling is setting is disabled 2020-10-09 09:35:04 -04:00
Preston d6e4a1e9cc Add Setting to disable smooth scrolling 2020-10-07 09:57:22 -04:00
Preston 54a3810a53 Add protocol to enable extension support 2020-10-04 16:31:07 -04:00
Preston b7013be907 Remember where app was located on close 2020-09-20 14:54:23 -04:00
Preston feea541fdb Update Dependencies, Fix linter, Hide Refresh Button for Trending / Popular 2020-08-24 17:52:39 -04:00