diff --git a/menu.js b/menu.js index 3754d14c..c0495d68 100644 --- a/menu.js +++ b/menu.js @@ -321,13 +321,13 @@ function setProxy(item, win) { }, type: 'input', icon: iconPath, - customStylesheet: path.join(__dirname, "providers", "prompt", "darkPrompt.css"), + customStylesheet: path.join(__dirname, "providers", "prompt", "dark-prompt.css"), }; //TODO: custom bar on prompt need testing on macOS if(!is.macOS()) { Object.assign(options, { frame: false, - customScript: path.join(__dirname, "providers", "prompt", "customTitlebar.js"), + customScript: path.join(__dirname, "providers", "prompt", "custom-titlebar.js"), enableRemoteModule: true, height: 200, width: 450, diff --git a/package.json b/package.json index 36591897..144ac53f 100644 --- a/package.json +++ b/package.json @@ -101,6 +101,16 @@ "envs": [ "node", "browser" - ] + ], + "rules": { + "quotes": [ + "error", + "double", + { + "avoidEscape": true, + "allowTemplateLiterals": true + } + ] + } } } diff --git a/plugins/in-app-menu/back.js b/plugins/in-app-menu/back.js index b17ee032..938c5475 100644 --- a/plugins/in-app-menu/back.js +++ b/plugins/in-app-menu/back.js @@ -9,8 +9,6 @@ const { injectCSS } = require("../utils"); //check that menu doesn't get created twice let calledReadyToShow = false; -//check menu state isn't changed twice -let calledFinishedLoad = false //tracks menu visibility let visible = true; // win hook for fixing menu @@ -37,6 +35,7 @@ module.exports = (winImport) => { if (calledReadyToShow) { return; } + calledReadyToShow = true; setApplicationMenu(win); @@ -53,7 +52,7 @@ module.exports = (winImport) => { win.webContents.on("did-finish-load", () => { // fix bug with menu not applying on start when no internet connection available setMenuVisibility(!config.get("options.hideMenu")); - }) + }); }; function switchMenuVisibility() { @@ -81,10 +80,10 @@ function updateTemplate(template) { for (let item of template) { // Change onClick of checkbox+radio if ((item.type === "checkbox" || item.type === "radio") && !item.fixed) { - let originalOnclick = item.click; + const originalOnclick = item.click; item.click = (itemClicked) => { originalOnclick(itemClicked); - updateCheckboxesAndRadioButtons(itemClicked, item.type === 'radio', item.hasSubmenu); + updateCheckboxesAndRadioButtons(itemClicked, item.type === "radio", item.hasSubmenu); }; item.fixed = true; } diff --git a/providers/prompt/custom-titlebar.js b/providers/prompt/custom-titlebar.js new file mode 100644 index 00000000..c36ce5f5 --- /dev/null +++ b/providers/prompt/custom-titlebar.js @@ -0,0 +1,14 @@ +const customTitlebar = require("custom-electron-titlebar"); + +module.exports = () => { + const bar = new customTitlebar.Titlebar({ + backgroundColor: customTitlebar.Color.fromHex("#050505"), + minimizable: false, + maximizable: false, + menu: null + }); + const mainStyle = document.querySelector("#container").style; + mainStyle.width = "100%"; + mainStyle.position = "fixed"; + mainStyle.border = "unset"; +}; diff --git a/providers/prompt/customTitlebar.js b/providers/prompt/customTitlebar.js deleted file mode 100644 index 6c508210..00000000 --- a/providers/prompt/customTitlebar.js +++ /dev/null @@ -1,14 +0,0 @@ -const customTitlebar = require("custom-electron-titlebar"); - -module.exports = () => { - const bar = new customTitlebar.Titlebar({ - backgroundColor: customTitlebar.Color.fromHex("#050505"), - minimizable: false, - maximizable: false, - menu: null - }); - let mainStyle = document.querySelector('#container').style; - mainStyle.width = '100%'; - mainStyle.position = 'fixed'; - mainStyle.border = 'unset'; -} \ No newline at end of file diff --git a/providers/prompt/darkPrompt.css b/providers/prompt/dark-prompt.css similarity index 100% rename from providers/prompt/darkPrompt.css rename to providers/prompt/dark-prompt.css diff --git a/providers/prompt/index.js b/providers/prompt/index.js index 0d89ebe9..302eeea0 100644 --- a/providers/prompt/index.js +++ b/providers/prompt/index.js @@ -1,9 +1,9 @@ -const electron = require('electron'); +const electron = require("electron"); const BrowserWindow = electron.BrowserWindow || electron.remote.BrowserWindow; const ipcMain = electron.ipcMain || electron.remote.ipcMain; -const url = require('url'); -const path = require('path'); +const url = require("url"); +const path = require("path"); const DEFAULT_WIDTH = 370; const DEFAULT_HEIGHT = 160; @@ -38,7 +38,7 @@ function electronPrompt(options, parentWindow) { options || {} ); - if (options_.type === 'select' && (options_.selectOptions === null || typeof options_.selectOptions !== 'object')) { + if (options_.type === "select" && (options_.selectOptions === null || typeof options_.selectOptions !== "object")) { reject(new Error('"selectOptions" must be an object')); return; } @@ -75,9 +75,9 @@ function electronPrompt(options, parentWindow) { }; const cleanup = () => { - ipcMain.removeListener('prompt-get-options:' + id, getOptionsListener); - ipcMain.removeListener('prompt-post-data:' + id, postDataListener); - ipcMain.removeListener('prompt-error:' + id, errorListener); + ipcMain.removeListener("prompt-get-options:" + id, getOptionsListener); + ipcMain.removeListener("prompt-post-data:" + id, postDataListener); + ipcMain.removeListener("prompt-error:" + id, errorListener); if (promptWindow) { promptWindow.close(); @@ -92,7 +92,7 @@ function electronPrompt(options, parentWindow) { }; const unresponsiveListener = () => { - reject(new Error('Window was unresponsive')); + reject(new Error("Window was unresponsive")); cleanup(); }; @@ -102,21 +102,21 @@ function electronPrompt(options, parentWindow) { cleanup(); }; - ipcMain.on('prompt-get-options:' + id, getOptionsListener); - ipcMain.on('prompt-post-data:' + id, postDataListener); - ipcMain.on('prompt-error:' + id, errorListener); - promptWindow.on('unresponsive', unresponsiveListener); + ipcMain.on("prompt-get-options:" + id, getOptionsListener); + ipcMain.on("prompt-post-data:" + id, postDataListener); + ipcMain.on("prompt-error:" + id, errorListener); + promptWindow.on("unresponsive", unresponsiveListener); - promptWindow.on('closed', () => { + promptWindow.on("closed", () => { promptWindow = null; cleanup(); resolve(null); }); const promptUrl = url.format({ - protocol: 'file', + protocol: "file", slashes: true, - pathname: path.join(__dirname, 'page', 'prompt.html'), + pathname: path.join(__dirname, "page", "prompt.html"), hash: id }); diff --git a/providers/prompt/page/prompt.js b/providers/prompt/page/prompt.js index 754d0e74..67acd31d 100644 --- a/providers/prompt/page/prompt.js +++ b/providers/prompt/page/prompt.js @@ -1,6 +1,6 @@ -const fs = require('fs'); -const {ipcRenderer} = require('electron'); -const docReady = require('doc-ready'); +const fs = require("fs"); +const {ipcRenderer} = require("electron"); +const docReady = require("doc-ready"); let promptId = null; let promptOptions = null; @@ -10,41 +10,39 @@ function promptError(error) { error = error.message; } - ipcRenderer.sendSync('prompt-error:' + promptId, error); + ipcRenderer.sendSync("prompt-error:" + promptId, error); } function promptCancel() { - ipcRenderer.sendSync('prompt-post-data:' + promptId, null); + ipcRenderer.sendSync("prompt-post-data:" + promptId, null); } function promptSubmit() { - const dataElement = document.querySelector('#data'); + const dataElement = document.querySelector("#data"); let data = null; - if (promptOptions.type === 'input') { + if (promptOptions.type === "input") { data = dataElement.value; - } else if (promptOptions.type === 'select') { - if (promptOptions.selectMultiple) { - data = dataElement.querySelectorAll('option[selected]').map(o => o.getAttribute('value')); - } else { - data = dataElement.value; - } + } else if (promptOptions.type === "select") { + data = promptOptions.selectMultiple ? + dataElement.querySelectorAll("option[selected]").map(o => o.getAttribute("value")) : + dataElement.value; } - ipcRenderer.sendSync('prompt-post-data:' + promptId, data); + ipcRenderer.sendSync("prompt-post-data:" + promptId, data); } function promptCreateInput() { - const dataElement = document.createElement('input'); - dataElement.setAttribute('type', 'text'); + const dataElement = document.createElement("input"); + dataElement.setAttribute("type", "text"); if (promptOptions.value) { dataElement.value = promptOptions.value; } else { - dataElement.value = ''; + dataElement.value = ""; } - if (promptOptions.inputAttrs && typeof (promptOptions.inputAttrs) === 'object') { + if (promptOptions.inputAttrs && typeof (promptOptions.inputAttrs) === "object") { for (const k in promptOptions.inputAttrs) { if (!Object.prototype.hasOwnProperty.call(promptOptions.inputAttrs, k)) { continue; @@ -54,16 +52,16 @@ function promptCreateInput() { } } - dataElement.addEventListener('keyup', event => { - if (event.key === 'Escape') { + dataElement.addEventListener("keyup", event => { + if (event.key === "Escape") { promptCancel(); } }); - dataElement.addEventListener('keypress', event => { - if (event.key === 'Enter') { + dataElement.addEventListener("keypress", event => { + if (event.key === "Enter") { event.preventDefault(); - document.querySelector('#ok').click(); + document.querySelector("#ok").click(); } }); @@ -71,7 +69,7 @@ function promptCreateInput() { } function promptCreateSelect() { - const dataElement = document.createElement('select'); + const dataElement = document.createElement("select"); let optionElement; for (const k in promptOptions.selectOptions) { @@ -79,11 +77,11 @@ function promptCreateSelect() { continue; } - optionElement = document.createElement('option'); - optionElement.setAttribute('value', k); + optionElement = document.createElement("option"); + optionElement.setAttribute("value", k); optionElement.textContent = promptOptions.selectOptions[k]; if (k === promptOptions.value) { - optionElement.setAttribute('selected', 'selected'); + optionElement.setAttribute("selected", "selected"); } dataElement.append(optionElement); @@ -93,34 +91,34 @@ function promptCreateSelect() { } function promptRegister() { - promptId = document.location.hash.replace('#', ''); + promptId = document.location.hash.replace("#", ""); try { - promptOptions = JSON.parse(ipcRenderer.sendSync('prompt-get-options:' + promptId)); + promptOptions = JSON.parse(ipcRenderer.sendSync("prompt-get-options:" + promptId)); } catch (error) { return promptError(error); } if (promptOptions.useHtmlLabel) { - document.querySelector('#label').innerHTML = promptOptions.label; + document.querySelector("#label").innerHTML = promptOptions.label; } else { - document.querySelector('#label').textContent = promptOptions.label; + document.querySelector("#label").textContent = promptOptions.label; } if (promptOptions.buttonLabels && promptOptions.buttonLabels.ok) { - document.querySelector('#ok').textContent = promptOptions.buttonLabels.ok; + document.querySelector("#ok").textContent = promptOptions.buttonLabels.ok; } if (promptOptions.buttonLabels && promptOptions.buttonLabels.cancel) { - document.querySelector('#cancel').textContent = promptOptions.buttonLabels.cancel; + document.querySelector("#cancel").textContent = promptOptions.buttonLabels.cancel; } if (promptOptions.customStylesheet) { try { const customStyleContent = fs.readFileSync(promptOptions.customStylesheet); if (customStyleContent) { - const customStyle = document.createElement('style'); - customStyle.setAttribute('rel', 'stylesheet'); + const customStyle = document.createElement("style"); + customStyle.setAttribute("rel", "stylesheet"); customStyle.append(document.createTextNode(customStyleContent)); document.head.append(customStyle); } @@ -129,25 +127,25 @@ function promptRegister() { } } - document.querySelector('#form').addEventListener('submit', promptSubmit); - document.querySelector('#cancel').addEventListener('click', promptCancel); + document.querySelector("#form").addEventListener("submit", promptSubmit); + document.querySelector("#cancel").addEventListener("click", promptCancel); - const dataContainerElement = document.querySelector('#data-container'); + const dataContainerElement = document.querySelector("#data-container"); let dataElement; - if (promptOptions.type === 'input') { + if (promptOptions.type === "input") { dataElement = promptCreateInput(); - } else if (promptOptions.type === 'select') { + } else if (promptOptions.type === "select") { dataElement = promptCreateSelect(); } else { return promptError(`Unhandled input type '${promptOptions.type}'`); } dataContainerElement.append(dataElement); - dataElement.setAttribute('id', 'data'); + dataElement.setAttribute("id", "data"); dataElement.focus(); - if (promptOptions.type === 'input') { + if (promptOptions.type === "input") { dataElement.select(); } @@ -161,10 +159,10 @@ function promptRegister() { } } -window.addEventListener('error', error => { +window.addEventListener("error", error => { if (promptId) { - promptError('An error has occured on the prompt window: \n' + error); + promptError("An error has occured on the prompt window: \n" + error); } }); -docReady(promptRegister); \ No newline at end of file +docReady(promptRegister);