From 6410c4680dc6b49305cf2131e9218fb814bb87ea Mon Sep 17 00:00:00 2001 From: Marcelo Lv Cabral Date: Sat, 1 Feb 2025 01:02:56 -0700 Subject: [PATCH] Added Peer Roku device menu options (#172) --- src/helpers/settings.js | 17 +++++++++++++++++ src/main.js | 5 +++++ src/menu/deviceMenuTemplate.js | 24 +++++++++++++++++++++++- src/menu/menuService.js | 4 +++- 4 files changed, 48 insertions(+), 2 deletions(-) diff --git a/src/helpers/settings.js b/src/helpers/settings.js index 8c5d330..a680dcf 100644 --- a/src/helpers/settings.js +++ b/src/helpers/settings.js @@ -673,6 +673,9 @@ export function showSettings() { } const userTheme = settings.value("simulator.theme"); checkMenuItem(`theme-${userTheme}`, true); + checkMenuItem("peer-roku-deploy", getPeerRoku().deploy); + checkMenuItem("peer-roku-control", getPeerRoku().syncControl); + } }); } @@ -783,6 +786,20 @@ export function setSimulatorOption(key, enable, menuId) { } } +export function setPeerRoku(key, enable, menuId) { + let options = settings.value("peerRoku"); + if (options) { + if (enable && !options[key]?.length) { + settings.value(`peerRoku.${key}`, ["enabled"]); + } else if (!enable && options[key]?.length) { + settings.value(`peerRoku.${key}`, []); + } + if (menuId) { + checkMenuItem(menuId, enable); + } + } +} + export function getPeerRoku() { return { deploy: settings.value("peerRoku.deploy")?.includes("enabled") || false, diff --git a/src/main.js b/src/main.js index 97c7a49..af4db4b 100755 --- a/src/main.js +++ b/src/main.js @@ -25,6 +25,7 @@ import { } from "./menu/menuService"; import { loadFile } from "./helpers/files"; import { + getPeerRoku, getSettings, setDeviceInfo, setDisplayOption, @@ -204,6 +205,10 @@ function loadSettings(mainWindow, startup) { setDeviceInfo("localization", "countryCode"); setTimeZone(); } + if (settings.preferences.peerRoku) { + checkMenuItem("peer-roku-deploy", getPeerRoku().deploy); + checkMenuItem("peer-roku-control", getPeerRoku().syncControl); + } } // Process Command Line switches diff --git a/src/menu/deviceMenuTemplate.js b/src/menu/deviceMenuTemplate.js index a3d1418..81ad73a 100644 --- a/src/menu/deviceMenuTemplate.js +++ b/src/menu/deviceMenuTemplate.js @@ -8,7 +8,7 @@ import { isECPEnabled, enableECP, disableECP } from "../server/ecp"; import { isTelnetEnabled, enableTelnet, disableTelnet } from "../server/telnet"; import { isInstallerEnabled, enableInstaller, disableInstaller } from "../server/installer"; -import { setLocaleId, setDisplayOption } from "../helpers/settings"; +import { setLocaleId, setDisplayOption, setPeerRoku } from "../helpers/settings"; import { reloadApp } from "../helpers/window"; export const deviceMenuTemplate = { @@ -190,6 +190,28 @@ export const deviceMenuTemplate = { }, }, { type: "separator" }, + { + id: "peer-roku-deploy", + label: "Deploy to Peer Roku", + accelerator: "CmdOrCtrl+P", + type: "checkbox", + checked: false, + enabled: true, + click: (item) => { + setPeerRoku("deploy", item.checked, item.id); + }, + }, + { + id: "peer-roku-control", + label: "Sync Control with Peer Roku", + type: "checkbox", + checked: false, + enabled: true, + click: (item) => { + setPeerRoku("syncControl", item.checked, item.id); + }, + }, + { type: "separator" }, { label: "Reset Device", accelerator: "CmdOrCtrl+Shift+R", diff --git a/src/menu/menuService.js b/src/menu/menuService.js index 2944a0a..ee806a3 100644 --- a/src/menu/menuService.js +++ b/src/menu/menuService.js @@ -15,7 +15,7 @@ import { helpMenuTemplate } from "./helpMenuTemplate"; import { isInstallerEnabled } from "../server/installer"; import { isECPEnabled } from "../server/ecp"; import { isTelnetEnabled } from "../server/telnet"; -import { getSimulatorOption, setDisplayOption } from "../helpers/settings"; +import { getPeerRoku, getSimulatorOption, setDisplayOption } from "../helpers/settings"; import { loadFile, loadUrl, editorCodeFile } from "../helpers/files"; import fs from "fs"; import path from "path"; @@ -304,6 +304,8 @@ function rebuildMenu(template = false) { checkMenuItem("web-installer", isInstallerEnabled); checkMenuItem("ecp-api", isECPEnabled); checkMenuItem("telnet", isTelnetEnabled); + checkMenuItem("peer-roku-deploy", getPeerRoku().deploy); + checkMenuItem("peer-roku-control", getPeerRoku().syncControl); } } } else {