Compare commits

...

59 Commits

Author SHA1 Message Date
TC
4299ba7865 Update version to 1.5.0 2020-10-04 18:27:07 +02:00
TC
855d8007a7 Add plugin to hide video player 2020-10-04 18:23:30 +02:00
TC
f239ec3232 Force yargs-parser version to fix vulnerability 2020-10-04 18:08:15 +02:00
TC
5f0dcbb3fc Bump electron to v10 (+ remove devtron, bump spectron) 2020-10-04 17:39:18 +02:00
TC
97dce5ad41 Bump dependencies 2020-10-04 17:20:43 +02:00
TC
1b3e4df1b2 Tests: get electron path using require 2020-10-04 17:18:33 +02:00
TC
8d74a0a9b5 Navigation plugin: fix arrow style 2020-10-04 15:06:52 +02:00
fbce109554 Merge pull request #45 from th-ch/dependabot/npm_and_yarn/node-fetch-2.6.1
Bump node-fetch from 2.6.0 to 2.6.1
2020-10-04 14:18:24 +02:00
f4641acdbb Merge pull request #47 from th-ch/snyk-upgrade-468d0cfdab69d8231f03ed7e76703d57
[Snyk] Upgrade @cliqz/adblocker-electron from 1.17.0 to 1.18.0
2020-10-04 14:16:16 +02:00
02ae9f8187 Bump node-fetch from 2.6.0 to 2.6.1
Bumps [node-fetch](https://github.com/bitinn/node-fetch) from 2.6.0 to 2.6.1.
- [Release notes](https://github.com/bitinn/node-fetch/releases)
- [Changelog](https://github.com/node-fetch/node-fetch/blob/master/docs/CHANGELOG.md)
- [Commits](https://github.com/bitinn/node-fetch/compare/v2.6.0...v2.6.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-04 12:15:45 +00:00
9f428415bb Merge pull request #40 from th-ch/snyk-upgrade-2d5f77a2ca49e9d611dfcac4a5d0c7e1
[Snyk] Upgrade electron-updater from 4.3.3 to 4.3.4
2020-10-04 14:14:57 +02:00
c7d3741b97 fix: upgrade @cliqz/adblocker-electron from 1.17.0 to 1.18.0
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.17.0 to 1.18.0.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-09-15 02:19:07 +00:00
6404ec0919 fix: upgrade electron-updater from 4.3.3 to 4.3.4
Snyk has created this PR to upgrade electron-updater from 4.3.3 to 4.3.4.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-08-07 02:19:20 +00:00
4cd2d10cad Merge pull request #38 from th-ch/dependabot/npm_and_yarn/elliptic-6.5.3
Bump elliptic from 6.5.2 to 6.5.3
2020-08-03 10:44:10 +02:00
57f5d302d5 Merge pull request #37 from th-ch/snyk-upgrade-414f996ee5dc52155ccdd3d4b64505ac
[Snyk] Upgrade @cliqz/adblocker-electron from 1.16.0 to 1.16.1
2020-08-03 10:42:30 +02:00
168524ba50 Merge pull request #34 from th-ch/dependabot/npm_and_yarn/lodash-4.17.19
Bump lodash from 4.17.15 to 4.17.19
2020-08-03 10:39:29 +02:00
149362f2a7 Bump elliptic from 6.5.2 to 6.5.3
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.2 to 6.5.3.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.2...v6.5.3)

Signed-off-by: dependabot[bot] <support@github.com>
2020-08-01 20:48:22 +00:00
6c330046b7 fix: upgrade @cliqz/adblocker-electron from 1.16.0 to 1.16.1
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.16.0 to 1.16.1.

See this package in npm:


See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-07-30 02:19:12 +00:00
884a2cc226 Bump lodash from 4.17.15 to 4.17.19
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-19 21:35:20 +00:00
3882118121 Merge pull request #32 from th-ch/start-at-login
Option to start at login
2020-07-13 11:25:32 +02:00
TC
0fd2e7f51c Bump version to 1.4.0 2020-07-12 21:14:41 +02:00
TC
408aa9bb59 Option to start at login 2020-07-12 21:14:41 +02:00
eec6993b95 Merge pull request #31 from th-ch/dependabot/npm_and_yarn/electron-8.2.4
Bump electron from 8.2.1 to 8.2.4
2020-07-12 21:13:56 +02:00
eb8e0a37d6 Bump electron from 8.2.1 to 8.2.4
Bumps [electron](https://github.com/electron/electron) from 8.2.1 to 8.2.4.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/master/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v8.2.1...v8.2.4)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-07 02:01:10 +00:00
TC
2a915f4fae Fix electron deprecation warnings 2020-07-05 15:57:25 +02:00
TC
26994000d7 readme: yarn run build -> `yarn build 2020-07-05 15:44:26 +02:00
78f143ea10 Merge pull request #30 from th-ch/snyk-upgrade-3427638aafd84464f9f38998c7e3bc6f
[Snyk] Upgrade electron-store from 5.1.1 to 5.2.0
2020-07-05 15:43:02 +02:00
684a369fed fix: upgrade electron-store from 5.1.1 to 5.2.0
Snyk has created this PR to upgrade electron-store from 5.1.1 to 5.2.0.

See this package in NPM:
https://www.npmjs.com/package/electron-store

See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-06-28 02:19:06 +00:00
b19470ad0b Merge pull request #29 from th-ch/snyk-upgrade-a4c19e5e6b1b92c533cd6d3ed8538fa2
[Snyk] Upgrade @cliqz/adblocker-electron from 1.14.4 to 1.15.0
2020-06-14 22:40:24 +02:00
6691cbf8c0 Merge pull request #28 from th-ch/snyk-upgrade-54c1400dcbff5fcbde1071153f1be456
[Snyk] Upgrade electron-debug from 3.0.1 to 3.1.0
2020-06-14 22:39:18 +02:00
7ac98cf024 fix: upgrade @cliqz/adblocker-electron from 1.14.4 to 1.15.0
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.14.4 to 1.15.0.

See this package in NPM:
https://www.npmjs.com/package/@cliqz/adblocker-electron

See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-06-14 02:19:04 +00:00
3d835fbeaa fix: upgrade electron-debug from 3.0.1 to 3.1.0
Snyk has created this PR to upgrade electron-debug from 3.0.1 to 3.1.0.

See this package in NPM:
https://www.npmjs.com/package/electron-debug

See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-06-13 02:19:27 +00:00
d0824f52ea Merge pull request #27 from th-ch/snyk-upgrade-9a04364d99d1aed92239f3dd981f3d67
[Snyk] Upgrade electron-updater from 4.3.1 to 4.3.2
2020-06-05 22:48:14 +02:00
8c945100e2 fix: upgrade electron-updater from 4.3.1 to 4.3.2
Snyk has created this PR to upgrade electron-updater from 4.3.1 to 4.3.2.

See this package in NPM:
https://www.npmjs.com/package/electron-updater

See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-06-05 02:19:01 +00:00
68801c8e2b Merge pull request #26 from th-ch/snyk-upgrade-107ef53d6b16bb061dc783179b8991a7
[Snyk] Upgrade electron-updater from 4.3.0 to 4.3.1
2020-05-29 21:32:29 +02:00
a06eece4a0 fix: upgrade electron-updater from 4.3.0 to 4.3.1
Snyk has created this PR to upgrade electron-updater from 4.3.0 to 4.3.1.

See this package in NPM:
https://www.npmjs.com/package/electron-updater

See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-05-19 04:19:35 +02:00
873e093ff0 fix: upgrade electron-updater from 4.3.0 to 4.3.1
Snyk has created this PR to upgrade electron-updater from 4.3.0 to 4.3.1.

See this package in NPM:
https://www.npmjs.com/package/electron-updater

See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-05-19 04:19:34 +02:00
9c343d58ef Merge pull request #25 from th-ch/snyk-upgrade-86a869f28fc1113ae78c2dcd1eea4b90
[Snyk] Upgrade @cliqz/adblocker-electron from 1.14.1 to 1.14.2
2020-05-14 22:14:50 +02:00
fed7a1df17 fix: upgrade @cliqz/adblocker-electron from 1.14.1 to 1.14.2
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.14.1 to 1.14.2.

See this package in NPM:
https://www.npmjs.com/package/@cliqz/adblocker-electron

See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-05-14 04:19:22 +02:00
89d8907bc6 fix: upgrade @cliqz/adblocker-electron from 1.14.1 to 1.14.2
Snyk has created this PR to upgrade @cliqz/adblocker-electron from 1.14.1 to 1.14.2.

See this package in NPM:
https://www.npmjs.com/package/@cliqz/adblocker-electron

See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-05-14 04:19:21 +02:00
08d145b6fc Merge pull request #24 from th-ch/tests
[Tests] Add integration tests
2020-05-03 13:35:41 +02:00
TC
57d3545701 Launch tests in CI 2020-05-03 12:58:28 +02:00
TC
08710558f5 Add tests section to readme 2020-05-03 11:44:23 +02:00
TC
b80007bbd5 Tests: only stop if running (in case of error when launching app) 2020-05-03 11:44:00 +02:00
TC
ab0c93d443 Test script in package.json 2020-05-01 18:59:00 +02:00
TC
e84f045201 Add simple test to ensure app launches properly 2020-05-01 18:58:08 +02:00
TC
692b6b22aa Enable nodeIntegration in test env (required by Spectron) 2020-05-01 18:34:23 +02:00
TC
954a58bcf5 Add util to detect test env 2020-05-01 18:34:01 +02:00
TC
bce5b7d8eb Add jest config and test environment to launch app 2020-05-01 18:33:43 +02:00
TC
736a706801 Add jest, spectron and getPort util for tests 2020-05-01 18:33:02 +02:00
TC
37cac19d9c Bump version to 1.3.3 2020-04-29 22:08:22 +02:00
TC
4824dda5d5 Move tray click callback in setUpTray 2020-04-27 12:25:24 +02:00
TC
3fa3c3ab9e Bump version to 1.3.2 2020-04-26 16:25:56 +02:00
TC
058371ace8 Show/hide window when clicking on tray 2020-04-26 16:25:37 +02:00
TC
430687f4d6 Hide the app (no quit) on close if tray enabled 2020-04-26 16:10:13 +02:00
TC
45f4b3bc28 Use is.macOS shortcut 2020-04-26 15:47:55 +02:00
7c12344d05 Merge pull request #22 from th-ch/snyk-upgrade-2844f3669e30ddb5a4f23b0caf25ece1
[Snyk] Upgrade electron-updater from 4.2.5 to 4.3.0
2020-04-26 14:51:47 +02:00
98213005d0 fix: upgrade electron-updater from 4.2.5 to 4.3.0
Snyk has created this PR to upgrade electron-updater from 4.2.5 to 4.3.0.

See this package in NPM:
https://www.npmjs.com/package/electron-updater

See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-04-24 04:19:57 +02:00
db61589735 fix: upgrade electron-updater from 4.2.5 to 4.3.0
Snyk has created this PR to upgrade electron-updater from 4.2.5 to 4.3.0.

See this package in NPM:
https://www.npmjs.com/package/electron-updater

See this project in Snyk:
https://app.snyk.io/org/th-ch/project/81809c53-bb7b-46b9-a0d7-806d45d74ac6?utm_source=github&utm_medium=upgrade-pr
2020-04-24 04:19:56 +02:00
19 changed files with 3920 additions and 1054 deletions

View File

@ -9,6 +9,8 @@ jobs:
osx_image: xcode11.3
- os: linux
dist: xenial
services:
- xvfb
cache:
yarn: false
@ -18,6 +20,7 @@ cache:
script:
- |
yarn test
if [ "$TRAVIS_OS_NAME" == "linux" ]; then
yarn run release:linux
else

View File

@ -21,6 +21,11 @@ install:
# # https://www.appveyor.com/docs/how-to/rdp-to-build-worker/
# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
# @FIXME: tests disabled because app fails to launch on AppVeyor/Windows
# os: unstable # https://github.com/electron-userland/spectron#on-appveyor
# test_script:
# - yarn test
build_script:
- yarn run release:win

View File

@ -10,12 +10,16 @@ const {
autoUpdate,
getEnabledPlugins,
isAppVisible,
isTrayEnabled,
store,
startAtLogin,
} = require("./store");
const { fileExists, injectCSS } = require("./plugins/utils");
const { isTesting } = require("./utils/testing");
const { setUpTray } = require("./tray");
const app = electron.app;
app.allowRendererProcessReuse = true; // https://github.com/electron/electron/issues/18397
// Adds debug features like hotkeys for triggering dev tools and reload
require("electron-debug")();
@ -48,9 +52,10 @@ function createMainWindow() {
backgroundColor: "#000",
show: false,
webPreferences: {
nodeIntegration: false,
nodeIntegration: isTesting(), // Only necessary when testing with Spectron
preload: path.join(__dirname, "preload.js"),
nativeWindowOpen: true, // window.open return Window object(like in regular browsers), not BrowserWindowProxy
enableRemoteModule: true,
affinity: "main-window", // main window, and addition windows should work in one process
},
frame: !is.macOS(),
@ -167,6 +172,11 @@ app.on("ready", () => {
mainWindow = createMainWindow();
setUpTray(app, mainWindow);
// Autostart at login
app.setLoginItemSettings({
openAtLogin: startAtLogin(),
});
if (!is.dev() && autoUpdate()) {
autoUpdater.checkForUpdatesAndNotify();
autoUpdater.on("update-available", () => {
@ -183,16 +193,20 @@ app.on("ready", () => {
}
// Optimized for Mac OS X
if (process.platform === "darwin") {
if (is.macOS()) {
if (!isAppVisible()) {
app.dock.hide();
}
}
var forceQuit = false;
app.on("before-quit", () => {
forceQuit = true;
});
var forceQuit = false;
app.on("before-quit", () => {
forceQuit = true;
});
if (is.macOS() || isTrayEnabled()) {
mainWindow.on("close", (event) => {
// Hide the window instead of quitting (quit is available in tray options)
if (!forceQuit) {
event.preventDefault();
mainWindow.hide();

7
jest.config.js Normal file
View File

@ -0,0 +1,7 @@
module.exports = {
globals: {
__APP__: undefined, // A different app will be launched in each test environment
},
testEnvironment: "./tests/environment",
testTimeout: 30000, // 30s
};

18
menu.js
View File

@ -1,4 +1,5 @@
const { app, Menu } = require("electron");
const is = require("electron-is");
const { getAllPlugins } = require("./plugins/utils");
const {
@ -9,6 +10,7 @@ const {
isAppVisible,
isTrayEnabled,
setOptions,
startAtLogin,
} = require("./store");
const mainMenuTemplate = [
@ -40,6 +42,20 @@ const mainMenuTemplate = [
setOptions({ autoUpdates: item.checked });
},
},
...(is.windows() || is.macOS()
? // Only works on Win/Mac
// https://www.electronjs.org/docs/api/app#appsetloginitemsettingssettings-macos-windows
[
{
label: "Start at login",
type: "checkbox",
checked: startAtLogin(),
click: (item) => {
setOptions({ startAtLogin: item.checked });
},
},
]
: []),
{
label: "Tray",
submenu: [
@ -71,7 +87,7 @@ module.exports.mainMenuTemplate = mainMenuTemplate;
module.exports.setApplicationMenu = () => {
const menuTemplate = [...mainMenuTemplate];
if (process.platform === "darwin") {
const name = app.getName();
const name = app.name;
menuTemplate.unshift({
label: name,
submenu: [

View File

@ -1,7 +1,7 @@
{
"name": "youtube-music",
"productName": "YouTube Music",
"version": "1.3.1",
"version": "1.5.0",
"description": "YouTube Music Desktop App - including custom plugins",
"license": "MIT",
"repository": "th-ch/youtube-music",
@ -26,7 +26,7 @@
}
},
"scripts": {
"test": "xo",
"test": "jest",
"start": "electron .",
"icon": "rimraf assets/generated && electron-icon-maker --input=assets/youtube-music.png --output=assets/generated",
"generate:package": "node utils/generate-package-json.js",
@ -46,23 +46,28 @@
"npm": "Please use yarn and not npm"
},
"dependencies": {
"@cliqz/adblocker-electron": "^1.14.1",
"@cliqz/adblocker-electron": "^1.18.3",
"YoutubeNonStop": "git://github.com/lawfx/YoutubeNonStop.git#v0.7.1",
"electron-debug": "^3.0.1",
"electron-debug": "^3.1.0",
"electron-is": "^3.0.0",
"electron-localshortcut": "^3.2.1",
"electron-store": "^5.1.1",
"electron-updater": "^4.2.2",
"node-fetch": "^2.6.0"
"electron-store": "^6.0.0",
"electron-updater": "^4.3.5",
"node-fetch": "^2.6.1"
},
"devDependencies": {
"devtron": "^1.4.0",
"electron": "^8.2.1",
"electron-builder": "^22.4.1",
"electron-devtools-installer": "^3.0.0",
"electron-icon-maker": "0.0.4",
"electron": "^10.1.3",
"electron-builder": "^22.8.1",
"electron-devtools-installer": "^3.1.1",
"electron-icon-maker": "0.0.5",
"get-port": "^5.1.1",
"jest": "^26.4.2",
"rimraf": "^3.0.2",
"xo": "^0.29.0"
"spectron": "^12.0.0",
"xo": "^0.33.1"
},
"resolutions": {
"yargs-parser": "18.1.3"
},
"xo": {
"envs": [

View File

@ -0,0 +1,6 @@
const { injectCSS } = require("../utils");
const path = require("path");
module.exports = win => {
injectCSS(win.webContents, path.join(__dirname, "style.css"));
};

View File

@ -0,0 +1,11 @@
/* Hide the video player */
#main-panel {
display: none !important;
}
/* Make the side-panel full width */
.side-panel.ytmusic-player-page {
max-width: 100% !important;
width: 100% !important;
margin: 0 !important;
}

View File

@ -1,17 +1,17 @@
.navigation-item {
font-family : Roboto, Noto Naskh Arabic UI, Arial, sans-serif;
font-size : 20px;
line-height : var(--ytmusic-title-1_-_line-height);
font-weight : 500;
color : #fff;
--yt-endpoint-color : #fff;
--yt-endpoint-hover-color : #fff;
font-family: Roboto, Noto Naskh Arabic UI, Arial, sans-serif;
font-size: 20px;
line-height: var(--ytmusic-title-1_-_line-height);
font-weight: 500;
color: #fff;
--yt-endpoint-color: #fff;
--yt-endpoint-hover-color: #fff;
--yt-endpoint-visited-color: #fff;
display : inline-flex;
align-items : center;
color : rgba(255, 255, 255, 0.5);
cursor : pointer;
margin : 0 var(--ytmusic-pivot-bar-tab-margin);
display: inline-flex;
align-items: center;
color: rgba(255, 255, 255, 0.5);
cursor: pointer;
margin: 0 var(--ytmusic-pivot-bar-tab-margin);
}
.navigation-item:hover {
@ -19,18 +19,18 @@
}
.navigation-icon {
display : inline-flex;
-ms-flex-align : center;
-webkit-align-items : center;
align-items : center;
-ms-flex-pack : center;
display: inline-flex;
-ms-flex-align: center;
-webkit-align-items: center;
align-items: center;
-ms-flex-pack: center;
-webkit-justify-content: center;
justify-content : center;
position : relative;
vertical-align : middle;
fill : var(--iron-icon-fill-color, currentcolor);
stroke : none;
width : var(--iron-icon-width, 24px);
height : var(--iron-icon-height, 24px);
animation : var(--iron-icon_-_animation);
justify-content: center;
position: relative;
vertical-align: middle;
fill: var(--iron-icon-fill-color, currentcolor);
stroke: none;
width: var(--iron-icon-width, 24px);
height: var(--iron-icon-height, 24px);
animation: var(--iron-icon_-_animation);
}

View File

@ -4,26 +4,6 @@
role="tab"
onclick="goToPreviousPage()"
>
<div
class="tab-icon style-scope ytmusic-pivot-bar-item-renderer yt-icon-container"
>
<svg
viewBox="0 0 24 24"
preserveAspectRatio="xMidYMid meet"
focusable="false"
class="style-scope yt-icon"
style="pointer-events: none; display: block; width: 100%; height: 100%;"
>
<g class="style-scope yt-icon">
<path
class="st0"
d="M109.3 265.2l218.9 218.9c5.1 5.1 11.8 7.9 19 7.9s14-2.8 19-7.9l16.1-16.1c10.5-10.5 10.5-27.6 0-38.1L198.6 246.1 382.7 62c5.1-5.1 7.9-11.8 7.9-19 0-7.2-2.8-14-7.9-19L366.5 7.9c-5.1-5.1-11.8-7.9-19-7.9-7.2 0-14 2.8-19 7.9L109.3 227c-5.1 5.1-7.9 11.9-7.8 19.1 0 7.2 2.8 14 7.8 19.1z"
class="style-scope yt-icon"
></path>
</g>
</svg>
</div>
<div
class="search-icon style-scope ytmusic-search-box"
role="button"
@ -31,7 +11,10 @@
aria-disabled="false"
title="Go to previous page"
>
<div id="icon" class="style-scope paper-icon-button navigation-icon">
<div
id="icon"
class="tab-icon style-scope paper-icon-button navigation-icon"
>
<svg
viewBox="0 0 492 492"
preserveAspectRatio="xMidYMid meet"
@ -41,7 +24,6 @@
>
<g class="style-scope iron-icon">
<path
class="st0"
d="M109.3 265.2l218.9 218.9c5.1 5.1 11.8 7.9 19 7.9s14-2.8 19-7.9l16.1-16.1c10.5-10.5 10.5-27.6 0-38.1L198.6 246.1 382.7 62c5.1-5.1 7.9-11.8 7.9-19 0-7.2-2.8-14-7.9-19L366.5 7.9c-5.1-5.1-11.8-7.9-19-7.9-7.2 0-14 2.8-19 7.9L109.3 227c-5.1 5.1-7.9 11.9-7.8 19.1 0 7.2 2.8 14 7.8 19.1z"
></path>
</g>

View File

@ -4,26 +4,6 @@
role="tab"
onclick="goToNextPage()"
>
<div class="tab-icon style-scope ytmusic-pivot-bar-item-renderer">
<svg
viewBox="0 0 24 24"
preserveAspectRatio="xMidYMid meet"
focusable="false"
class="style-scope yt-icon"
style="pointer-events: none; display: block; width: 100%; height: 100%;"
>
<g class="style-scope yt-icon">
<path
d="M382.678,226.804L163.73,7.86C158.666,2.792,151.906,0,144.698,0s-13.968,2.792-19.032,7.86l-16.124,16.12
c-10.492,10.504-10.492,27.576,0,38.064L293.398,245.9l-184.06,184.06c-5.064,5.068-7.86,11.824-7.86,19.028
c0,7.212,2.796,13.968,7.86,19.04l16.124,16.116c5.068,5.068,11.824,7.86,19.032,7.86s13.968-2.792,19.032-7.86L382.678,265
c5.076-5.084,7.864-11.872,7.848-19.088C390.542,238.668,387.754,231.884,382.678,226.804z"
class="style-scope yt-icon"
></path>
</g>
</svg>
</div>
<div
class="search-icon style-scope ytmusic-search-box"
role="button"
@ -31,7 +11,10 @@
aria-disabled="false"
title="Go to next page"
>
<div id="icon" class="style-scope paper-icon-button navigation-icon">
<div
id="icon"
class="tab-icon style-scope paper-icon-button navigation-icon"
>
<svg
viewBox="0 0 492 492"
preserveAspectRatio="xMidYMid meet"
@ -41,7 +24,6 @@
>
<g class="style-scope iron-icon">
<path
class="st0"
d="M382.7,226.8L163.7,7.9c-5.1-5.1-11.8-7.9-19-7.9s-14,2.8-19,7.9L109.5,24c-10.5,10.5-10.5,27.6,0,38.1
l183.9,183.9L109.3,430c-5.1,5.1-7.9,11.8-7.9,19c0,7.2,2.8,14,7.9,19l16.1,16.1c5.1,5.1,11.8,7.9,19,7.9s14-2.8,19-7.9L382.7,265
c5.1-5.1,7.9-11.9,7.8-19.1C390.5,238.7,387.8,231.9,382.7,226.8z"

View File

@ -1,6 +1,6 @@
const path = require("path");
const { getCurrentWindow } = require("electron").remote;
const { remote } = require("electron");
const { getEnabledPlugins, store } = require("./store");
const { fileExists } = require("./plugins/utils");
@ -28,5 +28,5 @@ document.addEventListener("DOMContentLoaded", () => {
// Add action for reloading
global.reload = () =>
getCurrentWindow().webContents.loadURL(store.get("url"));
remote.getCurrentWindow().webContents.loadURL(store.get("url"));
});

View File

@ -93,11 +93,19 @@ module.exports = () => {
## Build
```sh
yarn run build
yarn build
```
Builds the app for macOS, Linux, and Windows, using [electron-builder](https://github.com/electron-userland/electron-builder).
## Tests
```sh
yarn test
```
Uses [Spectron](https://www.electronjs.org/spectron) to test the app.
## License
MIT © [th-ch](https://github.com/th-ch/youtube-music)

View File

@ -5,16 +5,17 @@ const store = new Store({
defaults: {
"window-size": {
width: 1100,
height: 550
height: 550,
},
url: "https://music.youtube.com",
plugins: ["navigation", "shortcuts", "adblocker"],
options: {
tray: false,
appVisible: true,
autoUpdates: true
}
}
autoUpdates: true,
startAtLogin: false,
},
},
});
module.exports = {
@ -29,5 +30,6 @@ module.exports = {
store.set("options", { ...store.get("options"), ...options }),
isTrayEnabled: () => store.get("options.tray"),
isAppVisible: () => store.get("options.appVisible"),
autoUpdate: () => store.get("options.autoUpdates")
autoUpdate: () => store.get("options.autoUpdates"),
startAtLogin: () => store.get("options.startAtLogin"),
};

41
tests/environment.js Normal file
View File

@ -0,0 +1,41 @@
const path = require("path");
const getPort = require("get-port");
const NodeEnvironment = require("jest-environment-node");
const electronPath = require("electron");
const { Application } = require("spectron");
class TestEnvironment extends NodeEnvironment {
constructor(config) {
super(config);
}
async setup() {
await super.setup();
const appPath = path.resolve(__dirname, "..");
const port = await getPort();
this.global.__APP__ = new Application({
path: electronPath,
args: [appPath],
port,
});
await this.global.__APP__.start();
const { client } = this.global.__APP__;
await client.waitUntilWindowLoaded();
}
async teardown() {
if (this.global.__APP__.isRunning()) {
await this.global.__APP__.stop();
}
await super.teardown();
}
runScript(script) {
return super.runScript(script);
}
}
module.exports = TestEnvironment;

20
tests/index.test.js Normal file
View File

@ -0,0 +1,20 @@
describe("YouTube Music App", () => {
const app = global.__APP__;
test("With default settings, app is launched and visible", async () => {
expect(app.isRunning()).toBe(true);
const win = app.browserWindow;
const isVisible = await win.isVisible();
expect(isVisible).toBe(true);
const { width, height } = await win.getBounds();
expect(width).toBeGreaterThan(0);
expect(height).toBeGreaterThan(0);
const { client } = app;
const title = await client.getTitle();
expect(title).toEqual("YouTube Music");
});
});

View File

@ -22,6 +22,10 @@ module.exports.setUpTray = (app, win) => {
});
tray = new Tray(trayIcon);
tray.setToolTip("Youtube Music");
tray.setIgnoreDoubleClickEvents(true);
tray.on("click", () => {
win.isVisible() ? win.hide() : win.show();
});
const trayMenu = Menu.buildFromTemplate([
{

3
utils/testing.js Normal file
View File

@ -0,0 +1,3 @@
const isTesting = () => process.env.NODE_ENV === "test";
module.exports = { isTesting };

4671
yarn.lock

File diff suppressed because it is too large Load Diff