From a3ea37d41277d0cc9b3fdea62979ff93fae6bfcc Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Wed, 15 Mar 2023 23:06:34 +0200 Subject: [PATCH 1/3] add starting page option fix #1071 --- menu.js | 12 ++++++++++++ preload.js | 20 +++++++++++++++----- providers/extracted-data.js | 22 ++++++++++++++++++++++ 3 files changed, 49 insertions(+), 5 deletions(-) create mode 100644 providers/extracted-data.js diff --git a/menu.js b/menu.js index a741cd5d1..4c96828bd 100644 --- a/menu.js +++ b/menu.js @@ -7,6 +7,7 @@ const { restart } = require("./providers/app-controls"); const { getAllPlugins } = require("./plugins/utils"); const config = require("./config"); +const { startingPages } = require("./providers/extracted-data"); const prompt = require("custom-electron-prompt"); const promptOptions = require("./providers/prompt-options"); @@ -81,6 +82,17 @@ const mainMenuTemplate = (win) => { config.setMenuOption("options.resumeOnStart", item.checked); }, }, + { + label: 'Starting page', + submenu: Object.keys(startingPages).map((name) => ({ + label: name, + type: 'radio', + checked: config.get('options.startingPage') === name, + click: () => { + config.set('options.startingPage', name); + }, + })) + }, { label: "Visual Tweaks", submenu: [ diff --git a/preload.js b/preload.js index 492f31922..a4be23901 100644 --- a/preload.js +++ b/preload.js @@ -5,8 +5,12 @@ const { setupSongControls } = require("./providers/song-controls-front"); const { ipcRenderer } = require("electron"); const is = require("electron-is"); +const { startingPages } = require("./providers/extracted-data"); + const plugins = config.plugins.getEnabled(); +const $ = document.querySelector.bind(document); + let api; plugins.forEach(async ([plugin, options]) => { @@ -79,14 +83,14 @@ document.addEventListener("DOMContentLoaded", () => { }); function listenForApiLoad() { - api = document.querySelector('#movie_player'); + api = $('#movie_player'); if (api) { onApiLoaded(); return; } const observer = new MutationObserver(() => { - api = document.querySelector('#movie_player'); + api = $('#movie_player'); if (api) { observer.disconnect(); onApiLoaded(); @@ -97,7 +101,7 @@ function listenForApiLoad() { } function onApiLoaded() { - const video = document.querySelector("video"); + const video = $("video"); const audioContext = new AudioContext(); const audioSource = audioContext.createMediaElementSource(video); audioSource.connect(audioContext.destination); @@ -127,9 +131,15 @@ function onApiLoaded() { document.dispatchEvent(new CustomEvent('apiLoaded', { detail: api })); ipcRenderer.send('apiLoaded'); + // Navigate to "Starting page" + const startingPage = config.get("options.startingPage"); + if (startingPage !== "home" && startingPages[startingPage]) { + $('ytmusic-app')?.navigate_(startingPages[startingPage]); + } + // Remove upgrade button if (config.get("options.removeUpgradeButton")) { - const upgradeButton = document.querySelector('ytmusic-pivot-bar-item-renderer[tab-id="SPunlimited"]') + const upgradeButton = $('ytmusic-pivot-bar-item-renderer[tab-id="SPunlimited"]') if (upgradeButton) { upgradeButton.style.display = "none"; } @@ -137,7 +147,7 @@ function onApiLoaded() { // Force show like buttons if (config.get("options.ForceShowLikeButtons")) { - const likeButtons = document.querySelector('ytmusic-like-button-renderer') + const likeButtons = $('ytmusic-like-button-renderer') if (likeButtons) { likeButtons.style.display = 'inherit'; } diff --git a/providers/extracted-data.js b/providers/extracted-data.js new file mode 100644 index 000000000..31df149fa --- /dev/null +++ b/providers/extracted-data.js @@ -0,0 +1,22 @@ +const startingPages = { + Home: 'FEmusic_home', + Explore: 'FEmusic_explore', + 'New Releases': 'FEmusic_new_releases', + Charts: 'FEmusic_charts', + 'Moods & Genres': 'FEmusic_moods_and_genres', + Library: 'FEmusic_library_landing', + Playlists: 'FEmusic_liked_playlists', + Songs: 'FEmusic_liked_videos', + Albums: 'FEmusic_liked_albums', + Artists: 'FEmusic_library_corpus_track_artists', + 'Subscribed Artists': 'FEmusic_library_corpus_artists', + Uploads: 'FEmusic_library_privately_owned_landing', + 'Uploaded Playlists': 'FEmusic_liked_playlists', + 'Uploaded Songs': 'FEmusic_library_privately_owned_tracks', + 'Uploaded Albums': 'FEmusic_library_privately_owned_releases', + 'Uploaded Artists': 'FEmusic_library_privately_owned_artists', +}; + +module.exports = { + startingPages, +}; From f5758bfe939d60f7d9d562af17279a245e87a977 Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Wed, 15 Mar 2023 23:27:36 +0200 Subject: [PATCH 2/3] add defaults and migrations --- config/defaults.js | 1 + config/store.js | 3 +++ 2 files changed, 4 insertions(+) diff --git a/config/defaults.js b/config/defaults.js index d01d059a6..fbefb7e17 100644 --- a/config/defaults.js +++ b/config/defaults.js @@ -16,6 +16,7 @@ const defaultConfig = { autoResetAppCache: false, resumeOnStart: true, proxy: "", + startingPage: "Home", }, plugins: { // Enabled plugins diff --git a/config/store.js b/config/store.js index 07984820f..43f85bbc0 100644 --- a/config/store.js +++ b/config/store.js @@ -10,6 +10,9 @@ const setDefaultPluginOptions = (store, plugin) => { const migrations = { ">=1.20.0": (store) => { + // used only to make the radio button checked in the menu + store.set('options.startingPage', "Home"); + setDefaultPluginOptions(store, "visualizer"); if (store.get("plugins.notifications.toastStyle") === undefined) { From 45fa963818f9209450d078b4ff75b7dfd9624210 Mon Sep 17 00:00:00 2001 From: Araxeus <78568641+Araxeus@users.noreply.github.com> Date: Tue, 21 Mar 2023 17:46:52 +0200 Subject: [PATCH 3/3] allow default startingPage --- config/defaults.js | 2 +- config/store.js | 3 --- preload.js | 2 +- providers/extracted-data.js | 1 + 4 files changed, 3 insertions(+), 5 deletions(-) diff --git a/config/defaults.js b/config/defaults.js index fbefb7e17..97c88c0d2 100644 --- a/config/defaults.js +++ b/config/defaults.js @@ -16,7 +16,7 @@ const defaultConfig = { autoResetAppCache: false, resumeOnStart: true, proxy: "", - startingPage: "Home", + startingPage: "", }, plugins: { // Enabled plugins diff --git a/config/store.js b/config/store.js index 43f85bbc0..07984820f 100644 --- a/config/store.js +++ b/config/store.js @@ -10,9 +10,6 @@ const setDefaultPluginOptions = (store, plugin) => { const migrations = { ">=1.20.0": (store) => { - // used only to make the radio button checked in the menu - store.set('options.startingPage', "Home"); - setDefaultPluginOptions(store, "visualizer"); if (store.get("plugins.notifications.toastStyle") === undefined) { diff --git a/preload.js b/preload.js index a4be23901..aad964000 100644 --- a/preload.js +++ b/preload.js @@ -133,7 +133,7 @@ function onApiLoaded() { // Navigate to "Starting page" const startingPage = config.get("options.startingPage"); - if (startingPage !== "home" && startingPages[startingPage]) { + if (startingPage && startingPages[startingPage]) { $('ytmusic-app')?.navigate_(startingPages[startingPage]); } diff --git a/providers/extracted-data.js b/providers/extracted-data.js index 31df149fa..a7020a0d7 100644 --- a/providers/extracted-data.js +++ b/providers/extracted-data.js @@ -1,4 +1,5 @@ const startingPages = { + Default: '', Home: 'FEmusic_home', Explore: 'FEmusic_explore', 'New Releases': 'FEmusic_new_releases',