evita abertura de multiplas instancias

This commit is contained in:
Eder Moraes 2025-06-20 11:08:13 -03:00
parent 8eed72c15b
commit 97fa71f231
3 changed files with 67 additions and 41 deletions

90
main.js
View File

@ -1,4 +1,5 @@
const { app, BrowserWindow, ipcMain, screen, net, dialog } = require('electron');
// const { app: singleInstanceLock } = require('electron-single-instance');
const path = require('path');
const fs = require('fs');
@ -22,6 +23,8 @@ const pusherUrl = 'autoatend.linco.work';
autoUpdater.autoDownload = false;
autoUpdater.autoInstallOnAppQuit = true;
//impede que o app seja executado mais de uma vez
const gotTheLock = app.requestSingleInstanceLock();
// Função modificada para buscar dados da API
async function readData() {
@ -275,48 +278,63 @@ if(pjson.isBuildNow){
}
// Inicialização do aplicativo modificada para verificar autenticação
app.whenReady().then(async () => {
// Verifica se o usuário já está autenticado
const token = await getAuthToken();
if (!token) {
// Se não estiver autenticado, mostra a tela de login
createLoginWindow();
} else {
// Se já estiver autenticado, verifica se tem operador selecionado
// const operator = await getSelectedOperator();
if (!operator || operator === 'null' || operator === null || operator === undefined || operator === '') {
// Se não tiver operador selecionado, mostra a tela de seleção
createOperatorWindow();
} else {
// Se já tiver operador, inicia normalmente
createFloatingWindow();
createMainWindow();
}
if (!gotTheLock) {
app.quit();
} else {
app.on('second-instance', () => {
if (mainWin) {
if (mainWin.isMinimized()) {
mainWin.restore();
}
mainWin.focus();
}
createUpdateWindow();
});
app.on('activate', () => {
// No macOS é comum recriar uma janela no aplicativo quando o
// ícone do dock é clicado e não há outras janelas abertas.
if (BrowserWindow.getAllWindows().length === 0) {
// Poderia recriar a janela principal aqui se necessário,
// mas como temos a flutuante, talvez não precise.
if (!floatingWin) createFloatingWindow();
if (!mainWin) createMainWindow();
if (!updateWin) createUpdateWindow();
// Inicialização do aplicativo modificada para verificar autenticação
app.whenReady().then(async () => {
// Verifica se o usuário já está autenticado
const token = await getAuthToken();
if (!token) {
// Se não estiver autenticado, mostra a tela de login
createLoginWindow();
} else {
// Se já estiver autenticado, verifica se tem operador selecionado
// const operator = await getSelectedOperator();
if (!operator || operator === 'null' || operator === null || operator === undefined || operator === '') {
// Se não tiver operador selecionado, mostra a tela de seleção
createOperatorWindow();
} else {
// Se já tiver operador, inicia normalmente
createFloatingWindow();
createMainWindow();
}
}
createUpdateWindow();
app.on('activate', () => {
// No macOS é comum recriar uma janela no aplicativo quando o
// ícone do dock é clicado e não há outras janelas abertas.
if (BrowserWindow.getAllWindows().length === 0) {
// Poderia recriar a janela principal aqui se necessário,
// mas como temos a flutuante, talvez não precise.
if (!floatingWin) createFloatingWindow();
if (!mainWin) createMainWindow();
if (!updateWin) createUpdateWindow();
}
});
if(pjson.isBuildNow){
autoUpdater.checkForUpdates();
}
});
if(pjson.isBuildNow){
autoUpdater.checkForUpdates();
}
}
});
// Função para verificar se já existe um operador selecionado
async function getSelectedOperator() {

15
package-lock.json generated
View File

@ -1,15 +1,16 @@
{
"name": "electronjs",
"version": "1.0.0",
"name": "autoatendcolab",
"version": "1.0.7",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "electronjs",
"version": "1.0.0",
"name": "autoatendcolab",
"version": "1.0.7",
"license": "ISC",
"dependencies": {
"@electron/remote": "^2.1.2",
"electron-single-instance": "^0.0.2",
"electron-updater": "^6.6.2",
"jquery": "^3.7.1"
},
@ -2609,6 +2610,12 @@
"chokidar": "^3.5.2"
}
},
"node_modules/electron-single-instance": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/electron-single-instance/-/electron-single-instance-0.0.2.tgz",
"integrity": "sha512-HWZ0BsGpFRuUU+8Cpf0ecDHYOqptuUyjup62sYnkl19//DtysiTZzeIWO9YXdbow3JErti/Zyi2yHO2e0yn1ew==",
"license": "MIT"
},
"node_modules/electron-updater": {
"version": "6.6.2",
"resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.6.2.tgz",

View File

@ -1,6 +1,6 @@
{
"name": "autoatendcolab",
"version": "1.0.7",
"version": "1.0.8",
"main": "main.js",
"isBuildNow": true,
"scripts": {
@ -38,6 +38,7 @@
"description": "Sistema auxiliar para colaboradores de autoatendimento",
"dependencies": {
"@electron/remote": "^2.1.2",
"electron-single-instance": "^0.0.2",
"electron-updater": "^6.6.2",
"jquery": "^3.7.1"
},