1 // Load settings before everything
3 const fs = require("fs-extra");
4 const path = require('path');
5 const {app, BrowserWindow, ipcMain} = require('electron');
6 const os = require('os');
7 const {Menu, Tray} = require('electron')
10 const theApp = require('./app');
11 const WindowStateManager = require('electron-window-state-manager');
12 const url = require('url');
16 let trayIcon = __dirname + "/icon.png";
18 // Create a new instance of the WindowStateManager
19 const mainWindowState = new WindowStateManager('mainWindow', {
24 require('electron-context-menu')({
25 showInspectElement: false
28 function loadSettings(){
30 if(process.platform == "android"){
31 userdata = os.homedir() + "/storage/shared/Deezloader Remix/";
33 userdata = app.getPath("appData")+path.sep+"Deezloader Remix"+path.sep;
36 if(!fs.existsSync(userdata+"config.json")){
37 fs.outputFileSync(userdata+"config.json",fs.readFileSync(__dirname+path.sep+"default.json",'utf8'));
40 appConfig = require(userdata+path.sep+"config.json");
42 if( typeof appConfig.userDefined.numplaylistbyalbum != "boolean" ||
43 typeof appConfig.userDefined.syncedlyrics != "boolean" ||
44 typeof appConfig.userDefined.padtrck != "boolean" ||
45 typeof appConfig.userDefined.albumNameTemplate != "string"
47 fs.outputFileSync(userdata+"config.json",fs.readFileSync(__dirname+path.sep+"default.json",'utf8'));
48 appConfig = require(userdata+path.sep+"config.json");
52 function createWindow () {
54 if (!(process.argv.indexOf("-s")>-1 || process.argv.indexOf("--server")>-1)){
55 // Create the browser window.
56 mainWindow = new BrowserWindow({
57 width: mainWindowState.width,
58 height: mainWindowState.height,
63 icon: __dirname + "/icon.png",
66 backgroundColor: "#23232c"
69 mainWindow.setMenu(null);
71 // and load the index.html of the app.
72 mainWindow.loadURL('http://localhost:' + appConfig.serverPort);
74 mainWindow.on('closed', function () {
78 // Check if window was closed maximized and restore it
79 if (mainWindowState.maximized) {
80 mainWindow.maximize();
82 mainWindow.on('minimize',function(event){
83 if(appConfig.userDefined.minimizeToTray){
84 event.preventDefault();
88 tray.on('click', function(e){
89 if (mainWindow.isVisible()) {
95 // Save current window state
96 mainWindow.on('close', () => {
97 if(appConfig.userDefined.minimizeToTray){
99 event.preventDefault();
102 mainWindowState.saveState(mainWindow);
105 mainWindowState.saveState(mainWindow);
111 app.on('ready', function(){
112 if(appConfig.userDefined.minimizeToTray){
113 tray = new Tray(trayIcon);
114 const contextMenu = Menu.buildFromTemplate([]);
115 tray.setToolTip('Deezloader Remix');
116 tray.setContextMenu(contextMenu);
121 // Quit when all windows are closed.
122 app.on('window-all-closed', function () {
126 app.on('activate', function () {
127 if (mainWindow === null) {