From 6123f5eb36794bcb344361ca9f1a5ff26cda40b6 Mon Sep 17 00:00:00 2001 From: AlphaX-Projects <77661270+AlphaX-Projects@users.noreply.github.com> Date: Wed, 3 Jan 2024 16:47:53 +0100 Subject: [PATCH] Added start core function from nodemanagement --- core/language/us.json | 4 +- electron.js | 67 +++++++++++++++++ lib/preload.js | 1 + .../node-management/node-management.src.js | 72 ++++++++++++------- 4 files changed, 118 insertions(+), 26 deletions(-) diff --git a/core/language/us.json b/core/language/us.json index 015033e9..e68d19c9 100644 --- a/core/language/us.json +++ b/core/language/us.json @@ -999,7 +999,9 @@ "nchange31": "Stop Node", "nchange32": "Successfully Sent Stop Request!", "nchange33": "Restart Node", - "nchange34": "Successfully Sent Restart Request!" + "nchange34": "Successfully Sent Restart Request!", + "nchange35": "Start Node", + "nchange36": "Successfully Started Node!" }, "transpage": { "tchange1": "Transaction request", diff --git a/electron.js b/electron.js index 0fdc9a84..ca336183 100644 --- a/electron.js +++ b/electron.js @@ -207,6 +207,70 @@ async function checkWin() { } } +async function checkOsPlatform() { + if (process.platform === 'win32') { + startElectronWin() + } else if (process.platform === 'linux' || process.platform === 'darwin') { + startElectronUnix() + } else { + return + } +} + +async function startElectronWin() { + if (fs.existsSync(winjar)) { + isRunning('qortal.exe', (status) => { + if (status == true) { + log.info("Core is running, perfect !") + } else { + spawn(startWinCore, { detached: true }) + } + }) + } else { + const dialogOpts = { + type: 'info', + buttons: [i18n.__("electron_translate_18"), i18n.__("electron_translate_19")], + title: i18n.__("electron_translate_20"), + message: i18n.__("electron_translate_21"), + detail: i18n.__("electron_translate_22") + } + dialog.showMessageBox(dialogOpts).then((returnValue) => { + if (returnValue.response === 0) { + downloadWindows() + } else { + return + } + }) + } +} + +function startElectronUnix() { + if (fs.existsSync(qortaljar)) { + isRunning('qortal.jar', (status) => { + if (status == true) { + log.info("Core is running, perfect !") + } else { + startQortal() + } + }) + } else { + const dialogOpts = { + type: 'info', + buttons: [i18n.__("electron_translate_18"), i18n.__("electron_translate_19")], + title: i18n.__("electron_translate_20"), + message: i18n.__("electron_translate_21"), + detail: i18n.__("electron_translate_22") + } + dialog.showMessageBox(dialogOpts).then((returnValue) => { + if (returnValue.response === 0) { + downloadQortal() + } else { + return + } + }) + } +} + async function downloadWindows() { let winLoader = new BrowserWindow({ width: 500, @@ -1085,6 +1149,9 @@ if (!isLock) { check.show() autoUpdater.checkForUpdatesAndNotify() }) + ipcMain.on('start-core-electron', (event) => { + checkOsPlatform() + }) ipcMain.on('show-my-menu', (event) => { let homePageOptions = Menu.buildFromTemplate([ { diff --git a/lib/preload.js b/lib/preload.js index c700fa69..04d6bb7c 100644 --- a/lib/preload.js +++ b/lib/preload.js @@ -2,6 +2,7 @@ const { contextBridge, ipcRenderer, webFrame } = require('electron') contextBridge.exposeInMainWorld('electronAPI', { setStartCore: () => ipcRenderer.send('set-start-core'), + startCore: () => ipcRenderer.send('start-core-electron'), checkForUpdate: () => ipcRenderer.send('check-for-update'), showMyMenu: () => ipcRenderer.send('show-my-menu'), focusApp: () => ipcRenderer.send('focus-app'), diff --git a/plugins/plugins/core/node-management/node-management.src.js b/plugins/plugins/core/node-management/node-management.src.js index 1fe10fc0..c45514b0 100644 --- a/plugins/plugins/core/node-management/node-management.src.js +++ b/plugins/plugins/core/node-management/node-management.src.js @@ -1,8 +1,8 @@ -import { css, html, LitElement } from 'lit' -import { render } from 'lit/html.js' -import { Epml } from '../../../epml.js' +import {css, html, LitElement} from 'lit' +import {render} from 'lit/html.js' +import {Epml} from '../../../epml.js' import isElectron from 'is-electron' -import { get, registerTranslateConfig, translate, use } from '../../../../core/translate/index.js' +import {get, registerTranslateConfig, translate, use} from '../../../../core/translate/index.js' import '@polymer/paper-spinner/paper-spinner-lite.js' import '@material/mwc-icon' import '@material/mwc-textfield' @@ -11,7 +11,7 @@ import '@material/mwc-dialog' import '@vaadin/grid' registerTranslateConfig({ - loader: lang => fetch(`/language/${lang}.json`).then(res => res.json()) + loader: lang => fetch(`/language/${lang}.json`).then(res => res.json()) }) const parentEpml = new Epml({ type: "WINDOW", source: window.parent }) @@ -77,6 +77,10 @@ class NodeManagement extends LitElement { --mdc-theme-primary: #F44336; } + .green { + --mdc-theme-primary: #198754; + } + .red-button { --mdc-theme-primary: red; --mdc-theme-on-primary: white; @@ -146,13 +150,13 @@ class NodeManagement extends LitElement { } render() { - return html` + return html`

${translate("nodepage.nchange1")} ${this.nodeDomain}

this.bootstrap()}>restart_alt ${translate("tour.tour18")} - this.stopNode()}>dangerous ${translate("nodepage.nchange31")} this.restartNode()}>360 ${translate("nodepage.nchange33")} + ${this.renderStartStopButton()}
${translate("nodepage.nchange2")} ${this.upTime}


@@ -167,12 +171,12 @@ class NodeManagement extends LitElement { { - render(html` + render(html` this.removeMintingAccount(data.item.publicKey)}> create ${translate("nodepage.nchange12")} `, root) - }}> + }}> ${this.isEmptyArray(this.mintingAccounts) ? html`${translate("nodepage.nchange13")}` : ""}

@@ -190,7 +194,7 @@ class NodeManagement extends LitElement { { - render(html` + render(html` this.removePeer(data.item.address, data.index)}> delete ${translate("nodepage.nchange12")} @@ -198,7 +202,7 @@ class NodeManagement extends LitElement {  ${translate("nodepage.nchange23")} `, root) - }}> + }}> ${this.isEmptyArray(this.peers) ? html`${translate("nodepage.nchange24")}` : ""}

@@ -402,6 +406,27 @@ class NodeManagement extends LitElement { }) } + renderStartStopButton() { + if (!isElectron()) { + return html` this.stopNode()}>dangerous ${translate("nodepage.nchange31")}` + } else { + if (this.upTime === "offline") { + return html` this.startNode()}>play_circle ${translate("nodepage.nchange35")}` + } else { + return html` this.stopNode()}>stop_circle ${translate("nodepage.nchange31")}` + } + } + } + + startNode() { + if (!isElectron()) { + } else { + window.parent.electronAPI.startCore() + let startString = get("nodepage.nchange36") + parentEpml.request('showSnackBar', `${startString}`) + } + } + stopNode() { parentEpml .request("apiCall", { @@ -409,7 +434,7 @@ class NodeManagement extends LitElement { method: "GET" }) .then((res) => { - let snackString = get("nodepage.nchange32") + let snackString = get("nodepage.nchange32") parentEpml.request('showSnackBar', `${snackString}`) }) } @@ -421,24 +446,21 @@ class NodeManagement extends LitElement { method: "GET" }) .then((res) => { - let snackString = get("nodepage.nchange34") + let snackString = get("nodepage.nchange34") parentEpml.request('showSnackBar', `${snackString}`) }) } bootstrap() { - parentEpml - .request("apiCall", { - url: `/admin/bootstrap/?apiKey=${this.getApiKey()}`, - method: "GET" - }) - .then((res) => { - if (res === true) { - let snackString = get("tour.tour22") - parentEpml.request('showSnackBar', `${snackString}`) - } - - }) + parentEpml.request("apiCall", { + url: `/admin/bootstrap/?apiKey=${this.getApiKey()}`, + method: "GET" + }).then((res) => { + if (res === true) { + let snackString = get("tour.tour22") + parentEpml.request('showSnackBar', `${snackString}`) + } + }) } async addPeer() {