setup SongInfo **once**

This commit is contained in:
Araxeus
2021-05-10 04:15:56 +03:00
parent 7942efa202
commit 7cf78c6635
8 changed files with 20 additions and 26 deletions

View File

@ -11,6 +11,7 @@ const { setApplicationMenu } = require("./menu");
const { fileExists, injectCSS } = require("./plugins/utils"); const { fileExists, injectCSS } = require("./plugins/utils");
const { isTesting } = require("./utils/testing"); const { isTesting } = require("./utils/testing");
const { setUpTray } = require("./tray"); const { setUpTray } = require("./tray");
const { setupSongInfo } = require("./providers/song-info");
// Catch errors and log them // Catch errors and log them
unhandled({ unhandled({
@ -157,6 +158,7 @@ function createMainWindow() {
} }
app.once("browser-window-created", (event, win) => { app.once("browser-window-created", (event, win) => {
setupSongInfo(win);
loadPlugins(win); loadPlugins(win);
win.webContents.on("did-fail-load", ( win.webContents.on("did-fail-load", (

View File

@ -1,6 +1,6 @@
const Discord = require("discord-rpc"); const Discord = require("discord-rpc");
const getSongInfo = require("../../providers/song-info"); const registerCallback = require("../../providers/song-info");
const rpc = new Discord.Client({ const rpc = new Discord.Client({
transport: "ipc", transport: "ipc",
@ -12,8 +12,6 @@ const clientId = "790655993809338398";
let clearActivity; let clearActivity;
module.exports = (win, {activityTimoutEnabled, activityTimoutTime}) => { module.exports = (win, {activityTimoutEnabled, activityTimoutTime}) => {
const registerCallback = getSongInfo(win);
// If the page is ready, register the callback // If the page is ready, register the callback
win.once("ready-to-show", () => { win.once("ready-to-show", () => {
rpc.once("ready", () => { rpc.once("ready", () => {

View File

@ -4,7 +4,7 @@ const { join } = require("path");
const ID3Writer = require("browser-id3-writer"); const ID3Writer = require("browser-id3-writer");
const { dialog, ipcMain } = require("electron"); const { dialog, ipcMain } = require("electron");
const getSongInfo = require("../../providers/song-info"); const registerCallback = require("../../providers/song-info");
const { injectCSS, listenAction } = require("../utils"); const { injectCSS, listenAction } = require("../utils");
const { cropMaxWidth } = require("./utils"); const { cropMaxWidth } = require("./utils");
const { ACTIONS, CHANNEL } = require("./actions.js"); const { ACTIONS, CHANNEL } = require("./actions.js");
@ -25,7 +25,6 @@ let nowPlayingMetadata = {};
function handle(win) { function handle(win) {
injectCSS(win.webContents, join(__dirname, "style.css")); injectCSS(win.webContents, join(__dirname, "style.css"));
const registerCallback = getSongInfo(win);
registerCallback((info) => { registerCallback((info) => {
nowPlayingMetadata = info; nowPlayingMetadata = info;
}); });

View File

@ -2,7 +2,7 @@ const fetch = require('node-fetch');
const md5 = require('md5'); const md5 = require('md5');
const { shell } = require('electron'); const { shell } = require('electron');
const { setOptions } = require('../../config/plugins'); const { setOptions } = require('../../config/plugins');
const getSongInfo = require('../../providers/song-info'); const registerCallback = require('../../providers/song-info');
const defaultConfig = require('../../config/defaults'); const defaultConfig = require('../../config/defaults');
const createFormData = params => { const createFormData = params => {
@ -128,9 +128,7 @@ const setNowPlaying = (songInfo, config) => {
// this will store the timeout that will trigger addScrobble // this will store the timeout that will trigger addScrobble
let scrobbleTimer = undefined; let scrobbleTimer = undefined;
const lastfm = async (win, config) => { const lastfm = async (_win, config) => {
const registerCallback = getSongInfo(win);
if (!config.api_root) { if (!config.api_root) {
// settings are not present, creating them with the default values // settings are not present, creating them with the default values
config = defaultConfig.plugins['last-fm']; config = defaultConfig.plugins['last-fm'];

View File

@ -1,6 +1,6 @@
const { Notification } = require("electron"); const { Notification } = require("electron");
const is = require("electron-is"); const is = require("electron-is");
const getSongInfo = require("../../providers/song-info"); const registerCallback = require("../../providers/song-info");
const { notificationImage } = require("./utils"); const { notificationImage } = require("./utils");
const { setupInteractive, notifyInteractive } = require("./interactive") const { setupInteractive, notifyInteractive } = require("./interactive")
@ -29,7 +29,6 @@ module.exports = (win, options) => {
if (isInteractive) { if (isInteractive) {
setupInteractive(win, options.unpauseNotification); setupInteractive(win, options.unpauseNotification);
} }
const registerCallback = getSongInfo(win);
let oldNotification; let oldNotification;
let oldURL = ""; let oldURL = "";
win.once("ready-to-show", () => { win.once("ready-to-show", () => {

View File

@ -1,12 +1,11 @@
const getSongControls = require('../../providers/song-controls'); const getSongControls = require('../../providers/song-controls');
const getSongInfo = require('../../providers/song-info'); const registerCallback = require('../../providers/song-info');
const path = require('path'); const path = require('path');
let controls; let controls;
let currentSongInfo; let currentSongInfo;
module.exports = win => { module.exports = win => {
const registerCallback = getSongInfo(win);
const { playPause, next, previous } = getSongControls(win); const { playPause, next, previous } = getSongControls(win);
controls = { playPause, next, previous }; controls = { playPause, next, previous };

View File

@ -7,7 +7,7 @@ const {
TouchBarScrubber, TouchBarScrubber,
} = TouchBar; } = TouchBar;
const getSongInfo = require("../../providers/song-info"); const registerCallback = require("../../providers/song-info");
const getSongControls = require("../../providers/song-controls"); const getSongControls = require("../../providers/song-controls");
// Songtitle label // Songtitle label
@ -59,7 +59,6 @@ const touchBar = new TouchBar({
}); });
module.exports = (win) => { module.exports = (win) => {
const registerCallback = getSongInfo(win);
const { playPause, next, previous, like, dislike } = getSongControls(win); const { playPause, next, previous, like, dislike } = getSongControls(win);
// If the page is ready, register the callback // If the page is ready, register the callback

View File

@ -51,6 +51,7 @@ const songInfo = {
}; };
const handleData = async (responseText, win) => { const handleData = async (responseText, win) => {
console.log("handling song-info")
let data = JSON.parse(responseText); let data = JSON.parse(responseText);
songInfo.title = data?.videoDetails?.title; songInfo.title = data?.videoDetails?.title;
songInfo.artist = await getArtist(win) || cleanupArtistName(data?.videoDetails?.author); songInfo.artist = await getArtist(win) || cleanupArtistName(data?.videoDetails?.author);
@ -64,15 +65,15 @@ const handleData = async (responseText, win) => {
win.webContents.send("update-song-info", JSON.stringify(songInfo)); win.webContents.send("update-song-info", JSON.stringify(songInfo));
}; };
const registerProvider = (win) => { // This variable will be filled with the callbacks once they register
// This variable will be filled with the callbacks once they register const callbacks = [];
const callbacks = [];
// This function will allow plugins to register callback that will be triggered when data changes // This function will allow plugins to register callback that will be triggered when data changes
const registerCallback = (callback) => { const registerCallback = (callback) => {
callbacks.push(callback); callbacks.push(callback);
}; };
const registerProvider = (win) => {
win.on("page-title-updated", async () => { win.on("page-title-updated", async () => {
// Get and set the new data // Get and set the new data
songInfo.isPaused = await getPausedStatus(win); songInfo.isPaused = await getPausedStatus(win);
@ -93,8 +94,6 @@ const registerProvider = (win) => {
c(songInfo); c(songInfo);
}); });
}); });
return registerCallback;
}; };
const suffixesToRemove = [' - Topic', 'VEVO']; const suffixesToRemove = [' - Topic', 'VEVO'];
@ -110,7 +109,8 @@ function cleanupArtistName(artist) {
return artist; return artist;
} }
module.exports = registerProvider; module.exports = registerCallback;
module.exports.setupSongInfo = registerProvider;
module.exports.getImage = getImage; module.exports.getImage = getImage;
module.exports.cleanupArtistName = cleanupArtistName; module.exports.cleanupArtistName = cleanupArtistName;