mirror of
				https://github.com/Mastermindzh/tidal-hifi.git
				synced 2025-11-04 10:49:26 +01:00 
			
		
		
		
	added settings
This commit is contained in:
		@@ -3,9 +3,10 @@ const { mediaInfo } = require("./mediaInfo");
 | 
			
		||||
const { store, settings } = require("./settings");
 | 
			
		||||
const globalEvents = require("./../constants/globalEvents");
 | 
			
		||||
const statuses = require("./../constants/statuses");
 | 
			
		||||
 | 
			
		||||
const expressModule = {};
 | 
			
		||||
var fs = require("fs");
 | 
			
		||||
const fs = require("fs");
 | 
			
		||||
 | 
			
		||||
let expressInstance;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Function to enable tidal-hifi's express api
 | 
			
		||||
@@ -24,17 +25,6 @@ expressModule.run = function(mainWindow) {
 | 
			
		||||
  const expressApp = express();
 | 
			
		||||
  expressApp.get("/", (req, res) => res.send("Hello World!"));
 | 
			
		||||
  expressApp.get("/current", (req, res) => res.json(mediaInfo));
 | 
			
		||||
  expressApp.get("/play", (req, res) => handleGlobalEvent(res, globalEvents.play));
 | 
			
		||||
  expressApp.get("/pause", (req, res) => handleGlobalEvent(res, globalEvents.pause));
 | 
			
		||||
  expressApp.get("/next", (req, res) => handleGlobalEvent(res, globalEvents.next));
 | 
			
		||||
  expressApp.get("/previous", (req, res) => handleGlobalEvent(res, globalEvents.previous));
 | 
			
		||||
  expressApp.get("/playpause", (req, res) => {
 | 
			
		||||
    if (mediaInfo.status == statuses.playing) {
 | 
			
		||||
      handleGlobalEvent(res, globalEvents.pause);
 | 
			
		||||
    } else {
 | 
			
		||||
      handleGlobalEvent(res, globalEvents.play);
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
  expressApp.get("/image", (req, res) => {
 | 
			
		||||
    var stream = fs.createReadStream(mediaInfo.icon);
 | 
			
		||||
    stream.on("open", function() {
 | 
			
		||||
@@ -47,7 +37,34 @@ expressModule.run = function(mainWindow) {
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  expressApp.listen(store.get(settings.apiSettings.port), () => {});
 | 
			
		||||
  if (store.get(settings.playBackControl)) {
 | 
			
		||||
    expressApp.get("/play", (req, res) => handleGlobalEvent(res, globalEvents.play));
 | 
			
		||||
    expressApp.get("/pause", (req, res) => handleGlobalEvent(res, globalEvents.pause));
 | 
			
		||||
    expressApp.get("/next", (req, res) => handleGlobalEvent(res, globalEvents.next));
 | 
			
		||||
    expressApp.get("/previous", (req, res) => handleGlobalEvent(res, globalEvents.previous));
 | 
			
		||||
    expressApp.get("/playpause", (req, res) => {
 | 
			
		||||
      if (mediaInfo.status == statuses.playing) {
 | 
			
		||||
        handleGlobalEvent(res, globalEvents.pause);
 | 
			
		||||
      } else {
 | 
			
		||||
        handleGlobalEvent(res, globalEvents.play);
 | 
			
		||||
      }
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
  if (store.get(settings.api)) {
 | 
			
		||||
    let port = store.get(settings.apiSettings.port);
 | 
			
		||||
 | 
			
		||||
    expressInstance = expressApp.listen(port, () => {});
 | 
			
		||||
    expressInstance.on("error", function(e) {
 | 
			
		||||
      let message = e.code;
 | 
			
		||||
      if (e.code === "EADDRINUSE") {
 | 
			
		||||
        message = `Port ${port} in use.`;
 | 
			
		||||
      }
 | 
			
		||||
      const { dialog } = require("electron");
 | 
			
		||||
      dialog.showErrorBox("Api failed to start.", message);
 | 
			
		||||
    });
 | 
			
		||||
  } else {
 | 
			
		||||
    expressInstance = undefined;
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
module.exports = expressModule;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,13 +1,20 @@
 | 
			
		||||
const Store = require("electron-store");
 | 
			
		||||
const settings = require("./../constants/settings");
 | 
			
		||||
const path = require("path");
 | 
			
		||||
const { BrowserWindow } = require("electron");
 | 
			
		||||
 | 
			
		||||
let settingsWindow;
 | 
			
		||||
 | 
			
		||||
const store = new Store({
 | 
			
		||||
  defaults: {
 | 
			
		||||
    notifications: true,
 | 
			
		||||
    api: true,
 | 
			
		||||
    playBackControl: true,
 | 
			
		||||
    menuBar: false,
 | 
			
		||||
    apiSettings: {
 | 
			
		||||
      port: 47836,
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    windowBounds: { width: 800, height: 600 },
 | 
			
		||||
  },
 | 
			
		||||
});
 | 
			
		||||
@@ -15,6 +22,47 @@ const store = new Store({
 | 
			
		||||
const settingsModule = {
 | 
			
		||||
  store,
 | 
			
		||||
  settings,
 | 
			
		||||
  settingsWindow,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
settingsModule.createSettingsWindow = function() {
 | 
			
		||||
  settingsWindow = new BrowserWindow({
 | 
			
		||||
    width: 500,
 | 
			
		||||
    height: 600,
 | 
			
		||||
    show: false,
 | 
			
		||||
    frame: false,
 | 
			
		||||
    title: "Tidal-hifi - settings",
 | 
			
		||||
    webPreferences: {
 | 
			
		||||
      affinity: "window",
 | 
			
		||||
      preload: path.join(__dirname, "../pages/settings/preload.js"),
 | 
			
		||||
      plugins: true,
 | 
			
		||||
      nodeIntegration: true,
 | 
			
		||||
    },
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  settingsWindow.on("close", (event) => {
 | 
			
		||||
    if (settingsWindow != null) {
 | 
			
		||||
      event.preventDefault();
 | 
			
		||||
      settingsWindow.hide();
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  settingsWindow.loadURL(`file://${__dirname}/../pages/settings/settings.html`);
 | 
			
		||||
 | 
			
		||||
  settingsModule.settingsWindow = settingsWindow;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
settingsModule.showSettingsWindow = function() {
 | 
			
		||||
  // refresh data just before showing the window
 | 
			
		||||
  settingsWindow.webContents.send("refreshData");
 | 
			
		||||
  settingsWindow.show();
 | 
			
		||||
};
 | 
			
		||||
settingsModule.hideSettingsWindow = function() {
 | 
			
		||||
  settingsWindow.hide();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
settingsModule.closeSettingsWindow = function() {
 | 
			
		||||
  settingsWindow = null;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
module.exports = settingsModule;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user