From 187b385facceed37a0cb602ee2ad1a07c4c03d8a Mon Sep 17 00:00:00 2001 From: Eder Moraes <54563944+edermcastro@users.noreply.github.com> Date: Fri, 30 May 2025 08:56:34 -0300 Subject: [PATCH] =?UTF-8?q?coaltera=C3=A7oes=20no=20main=20eno=20renderer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- floating_preload.js | 2 +- main.js | 77 ++++++++++++++++++++++++++++++++------------- package.json | 2 +- preload.js | 3 +- renderer.js | 3 +- 5 files changed, 61 insertions(+), 26 deletions(-) diff --git a/floating_preload.js b/floating_preload.js index 8442c32..ec52cf3 100644 --- a/floating_preload.js +++ b/floating_preload.js @@ -2,7 +2,7 @@ const { contextBridge, ipcRenderer } = require('electron'); contextBridge.exposeInMainWorld('electronAPI', { onUpdateCount: (callback) => ipcRenderer.on('update-count', (_event, value) => callback(value)), - showMainWindow: () => ipcRenderer.send('show-main-window') + showMainWindow: () => ipcRenderer.send('chamar-fila') // Remova a linha abaixo: // startDrag: (offset) => ipcRenderer.send('drag-float-window', offset) }); \ No newline at end of file diff --git a/main.js b/main.js index b10a254..d42728a 100644 --- a/main.js +++ b/main.js @@ -305,8 +305,16 @@ async function getSelectedOperatorId() { }); } + +// Ouvir pedido para obter contagem (ex: se o JSON for atualizado) +ipcMain.handle('get-count', async () => { + const data = readData(); + return data.length; +}); + // Ouvir pedido para mostrar a janela principal -ipcMain.on('show-main-window', async () => { +ipcMain.on('chamar-fila', async () => { + if (mainWin) { if (!mainWin.isVisible()) { const data = readData(); @@ -325,25 +333,54 @@ ipcMain.on('show-main-window', async () => { mainWin.focus(); }); } + + try{ + //chama-fila-app-colab/{colabId} + const colabId = await getSelectedOperatorId(); + const token = await getAuthToken('token'); + const url = apiUrl + 'chama-fila-app-colab/'+colabId; // URL de exemplo para enviar a solicitação + const request = net.request({ + method: 'GET', + url: url, + headers: { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer ' + token + } + }); + + request.on('response', (response) => { + if (response.statusCode === 200) { + mainWin.webContents.send('select-atend-id', response.data.id); + // window.electronAPI.selectAtendID(response.data.id); + console.log(response.data); + } + }); + + } catch(error){ + console.log(error); + } + }); -// Ouvir pedido para obter contagem (ex: se o JSON for atualizado) -ipcMain.handle('get-count', async () => { - const data = readData(); - return data.length; +ipcMain.on('select-atend-id',(itemId)=>{ + selectedItemId = itemId; + console.log(selectedItemId); }); -// Ouvir clique no botão "Próximo" -ipcMain.on('next-step', (event, itemId) => { - console.log('Botão Próximo clicado para o item ID:', itemId); // Log para depuração - const url = 'https://httpbin.org/post'; // URL de exemplo para enviar a solicitação +// Ouvir clique no botão "Iniciar atendimento" +ipcMain.on('iniciar-atendimento', (event, itemId) => { + + //TODO inicia o atendimento o id do atendimento deve ser requisitado do backend + + const url = apiUrl + 'iniciar-atendimento/'+itemId; // URL de exemplo para enviar a solicitação // Simula o envio de uma solicitação POST com o ID do item const request = net.request({ - method: 'POST', + method: 'GET', url: url, headers: { - 'Content-Type': 'application/json' + 'Content-Type': 'application/json', + 'Authorization': 'Bearer ' + localStorage.getItem('token') } }); @@ -374,20 +411,18 @@ ipcMain.on('next-step', (event, itemId) => { // Ouvir clique no botão "Salvar" ipcMain.on('save-observation', (event, { itemId, observation }) => { + + //TODO salva a observação e finaliza o atendimento + console.log(`Salvando observação para item ${itemId}: ${observation}`); - // Aqui você implementaria a lógica para salvar a observação. - // Poderia ser: - // 1. Atualizar o arquivo data.json (cuidado com concorrência se houver muita escrita) - // 2. Salvar em outro arquivo - // 3. Enviar para outra API/banco de dados - // Exemplo simples (apenas log): + console.log("Observação 'salva' (apenas log por enquanto)."); // Opcional: Ler dados novamente e atualizar contagem na janela flutuante - const data = readData(); - if (floatingWin) { - floatingWin.webContents.send('update-count', data.length); - } + // const data = readData(); + // if (floatingWin) { + // floatingWin.webContents.send('update-count', data.length); + // } // Opcional: Fechar ou resetar a janela principal após salvar if (mainWin) { diff --git a/package.json b/package.json index 34c7197..152c51e 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "autoatendcolab", "version": "1.0.0", "main": "main.js", - "isBuildNow": true, + "isBuildNow": false, "scripts": { "start": "electron .", "nodemon": "nodemon --exec electron .", diff --git a/preload.js b/preload.js index 7c966b5..8d511f4 100644 --- a/preload.js +++ b/preload.js @@ -2,7 +2,8 @@ const { app, contextBridge, ipcRenderer } = require('electron'); contextBridge.exposeInMainWorld('electronAPI', { onLoadData: (callback) => ipcRenderer.on('load-data', (_event, value) => callback(value)), - sendNextStep: (itemId) => ipcRenderer.send('next-step', itemId), + selectAtendID: (callback) => ipcRenderer.on('select-atend-id', (_event, value) => callback(value)), + iniciaAtendimento: (itemId) => ipcRenderer.send('iniciar-atendimento', itemId), quitApp : () => ipcRenderer.send('sair'), saveObservation: (data) => ipcRenderer.send('save-observation', data), // data = { itemId, observation } diff --git a/renderer.js b/renderer.js index d44997a..310fc48 100644 --- a/renderer.js +++ b/renderer.js @@ -90,8 +90,7 @@ function showObservationView() { // // Evento do botão "Iniciar atendimento" nextButton.addEventListener('click', () => { if (selectedItemId !== null) { - console.log("Botão Próximo clicado, enviando ID:", selectedItemId); - window.electronAPI.sendNextStep(selectedItemId); // Envia o ID para o main process + window.electronAPI.iniciaAtendimento(selectedItemId); showObservationView(); // Muda para a tela de observação } else { console.warn("Nenhum item selecionado para 'Próximo'");