From eb6cfedeb9489ee4228915e9416c77de0a5f0d44 Mon Sep 17 00:00:00 2001 From: XtoMHA96 Date: Mon, 23 Oct 2023 10:36:17 +0100 Subject: [PATCH 1/2] Version 1.0.6 --- package.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 245ea56..673b692 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "obs-timer-controller", - "version": "1.0.5", + "version": "1.0.6", "description": "Handling browser sources for OBS related to timers and countdowns.", "main": "server.js", "repository": { @@ -23,15 +23,15 @@ "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "node": "node . test", - "pkg-win": "electron-packager . OBS-Timer-Controller --platform=win32 --arch=x64 --app-version=1.0.5 --out=dist --overwrite --icon=icon.ico --author=\"XtoManuel\" --description=\"Handling browser sources for OBS related to timers and countdowns.\"", - "pkg-linux": "electron-packager . OBS-Timer-Controller --platform=linux --arch=x64 --app-version=1.0.5 --out=dist --overwrite --icon=icon.ico --author=\"XtoManuel\" --description=\"Handling browser sources for OBS related to timers and countdowns.\"", - "pkg-mac": "electron-packager . OBS-Timer-Controller --platform=darwin --arch=x64 --app-version=1.0.5 --out=dist --overwrite --icon=icon.icns --author=\"XtoManuel\" --description=\"Handling browser sources for OBS related to timers and countdowns.\"", + "pkg-win": "electron-packager . OBS-Timer-Controller --platform=win32 --arch=x64 --app-version=1.0.6 --out=dist --overwrite --icon=icon.ico --author=\"XtoManuel\" --description=\"Handling browser sources for OBS related to timers and countdowns.\"", + "pkg-linux": "electron-packager . OBS-Timer-Controller --platform=linux --arch=x64 --app-version=1.0.6 --out=dist --overwrite --icon=icon.ico --author=\"XtoManuel\" --description=\"Handling browser sources for OBS related to timers and countdowns.\"", + "pkg-mac": "electron-packager . OBS-Timer-Controller --platform=darwin --arch=x64 --app-version=1.0.6 --out=dist --overwrite --icon=icon.icns --author=\"XtoManuel\" --description=\"Handling browser sources for OBS related to timers and countdowns.\"", "pkg-all": "npm run pkg-win && npm run pkg-linux" }, "author": "XtoManuel", "license": "ISC", "devDependencies": { - "electron": "^27.0.0", + "electron": "^27.0.2", "electron-packager": "^17.1.2" } } From 6aaaafafc8690a7326faae136c58db00fd80787f Mon Sep 17 00:00:00 2001 From: XtoMHA96 Date: Mon, 23 Oct 2023 12:50:08 +0100 Subject: [PATCH 2/2] Config add: Browser open --- .gitignore | 1 + core/client.js | 1 + package-lock.json | 24 ++++++++++++++++++------ package.json | 1 + server.js | 41 +++++++++++++++++++++++++++++++++++++---- 5 files changed, 58 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index d4cba9c..7cbda2a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.env core/config.yaml core/db.yaml dist/ diff --git a/core/client.js b/core/client.js index 5c6d9df..de6b5cf 100644 --- a/core/client.js +++ b/core/client.js @@ -106,6 +106,7 @@ window.addEventListener('unload', (event) => { }) buttonClose.addEventListener('click', () => { + socket.send(JSON.stringify({ action: 'stopCode' })) // Closes the current window or tab window.close() }) diff --git a/package-lock.json b/package-lock.json index f466ae0..8b932e2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,17 @@ { "name": "obs-timer-controller", - "version": "1.0.5", + "version": "1.0.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "obs-timer-controller", - "version": "1.0.5", + "version": "1.0.6", "license": "ISC", "dependencies": { "axios": "^1.5.1", "child_process": "^1.0.2", + "dotenv": "^16.3.1", "express": "^4.18.2", "fontkit": "^2.0.2", "fs-extra": "^11.1.1", @@ -22,7 +23,7 @@ "ws": "^8.14.2" }, "devDependencies": { - "electron": "^27.0.0", + "electron": "^27.0.2", "electron-packager": "^17.1.2" } }, @@ -919,15 +920,26 @@ "node": "*" } }, + "node_modules/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron": { - "version": "27.0.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-27.0.0.tgz", - "integrity": "sha512-mr3Zoy82l8XKK/TgguE5FeNeHZ9KHXIGIpUMjbjZWIREfAv+X2Q3vdX6RG0Pmi1K23AFAxANXQezIHBA2Eypwg==", + "version": "27.0.2", + "resolved": "https://registry.npmjs.org/electron/-/electron-27.0.2.tgz", + "integrity": "sha512-4fbcHQ40ZDlqhr5Pamm+M5BF7ry2lGqjFTWTJ/mrBwuiPWu6xhV/RWgUhKBaLqKNfAaNl3eMxV3Jc82gv6JauQ==", "dev": true, "hasInstallScript": true, "dependencies": { diff --git a/package.json b/package.json index 673b692..e27e3cc 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "dependencies": { "axios": "^1.5.1", "child_process": "^1.0.2", + "dotenv": "^16.3.1", "express": "^4.18.2", "fontkit": "^2.0.2", "fs-extra": "^11.1.1", diff --git a/server.js b/server.js index a504a57..c284924 100644 --- a/server.js +++ b/server.js @@ -4,6 +4,9 @@ const WebSocket = require('ws') const path = require('path') const fs = require('fs-extra') const open = require('openurl') +const { exec } = require('child_process') + +require('dotenv').config() // Load environment variables from .env const argsv = process.argv.slice(2) @@ -111,7 +114,7 @@ const actions = { getVariables: (ws, data) => sendVariableData(ws, GlobalVariables, Config, data.classElement), createData: (ws, data) => createData(data), removeData: (ws, data) => removeData(data), - stopCode: () => process.exit() + stopCode: () => stopCode() } function sendToAllClients (data) { @@ -289,6 +292,11 @@ function removeData (data) { saveVariablesToYAML(GlobalVariables) } +function stopCode () { + console.log('The code has stopped successfully') + process.exit() +} + // WebSocket connections handling wss.on('connection', (ws) => { ws.send(JSON.stringify({ fonts: fontOptions })) @@ -408,10 +416,35 @@ app.get('/:classElement/control&:request', (req, res) => { function openUrlWhenConfigExists () { if (Config) { - open.open(`http://localhost:${PORT}`) + const customBrowser = process.env.BROWSER // Get the value of the BROWSER environment variable + + if (customBrowser) { + try { + // If the BROWSER environment variable is defined, try to open that browser + const url = `http://localhost:${PORT}` + switch (process.platform) { + case 'darwin': // macOS + exec(`open -a "${customBrowser}" ${url}`) + break + case 'win32': // Windows + exec(`start ${customBrowser} ${url}`) + break + case 'linux': // Linux + exec(`${customBrowser} ${url}`) + break + default: + console.error('Unsupported operating system.') + } + } catch { + open.open(`http://localhost:${PORT}`) + } + } else { + // If the BROWSER environment variable is not defined, open the default browser + open.open(`http://localhost:${PORT}`) + } } else { - // Config todavĂ­a no existe, espera y vuelve a verificar en un momento - setTimeout(openUrlWhenConfigExists, 1000) // Espera 1 segundo antes de verificar nuevamente + // Configuration doesn't exist yet, wait and check again in a moment + setTimeout(openUrlWhenConfigExists, 1000) // Wait for 1 second before checking again } }