coalteraçoes no main eno renderer

This commit is contained in:
Eder Moraes 2025-05-30 08:56:34 -03:00
parent 87eef0b2a8
commit 187b385fac
5 changed files with 61 additions and 26 deletions

View File

@ -2,7 +2,7 @@ const { contextBridge, ipcRenderer } = require('electron');
contextBridge.exposeInMainWorld('electronAPI', { contextBridge.exposeInMainWorld('electronAPI', {
onUpdateCount: (callback) => ipcRenderer.on('update-count', (_event, value) => callback(value)), 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: // Remova a linha abaixo:
// startDrag: (offset) => ipcRenderer.send('drag-float-window', offset) // startDrag: (offset) => ipcRenderer.send('drag-float-window', offset)
}); });

77
main.js
View File

@ -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 // Ouvir pedido para mostrar a janela principal
ipcMain.on('show-main-window', async () => { ipcMain.on('chamar-fila', async () => {
if (mainWin) { if (mainWin) {
if (!mainWin.isVisible()) { if (!mainWin.isVisible()) {
const data = readData(); const data = readData();
@ -325,25 +333,54 @@ ipcMain.on('show-main-window', async () => {
mainWin.focus(); 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.on('select-atend-id',(itemId)=>{
ipcMain.handle('get-count', async () => { selectedItemId = itemId;
const data = readData(); console.log(selectedItemId);
return data.length;
}); });
// Ouvir clique no botão "Próximo" // Ouvir clique no botão "Iniciar atendimento"
ipcMain.on('next-step', (event, itemId) => { ipcMain.on('iniciar-atendimento', (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 //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 // Simula o envio de uma solicitação POST com o ID do item
const request = net.request({ const request = net.request({
method: 'POST', method: 'GET',
url: url, url: url,
headers: { 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" // Ouvir clique no botão "Salvar"
ipcMain.on('save-observation', (event, { itemId, observation }) => { 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}`); 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)."); console.log("Observação 'salva' (apenas log por enquanto).");
// Opcional: Ler dados novamente e atualizar contagem na janela flutuante // Opcional: Ler dados novamente e atualizar contagem na janela flutuante
const data = readData(); // const data = readData();
if (floatingWin) { // if (floatingWin) {
floatingWin.webContents.send('update-count', data.length); // floatingWin.webContents.send('update-count', data.length);
} // }
// Opcional: Fechar ou resetar a janela principal após salvar // Opcional: Fechar ou resetar a janela principal após salvar
if (mainWin) { if (mainWin) {

View File

@ -2,7 +2,7 @@
"name": "autoatendcolab", "name": "autoatendcolab",
"version": "1.0.0", "version": "1.0.0",
"main": "main.js", "main": "main.js",
"isBuildNow": true, "isBuildNow": false,
"scripts": { "scripts": {
"start": "electron .", "start": "electron .",
"nodemon": "nodemon --exec electron .", "nodemon": "nodemon --exec electron .",

View File

@ -2,7 +2,8 @@ const { app, contextBridge, ipcRenderer } = require('electron');
contextBridge.exposeInMainWorld('electronAPI', { contextBridge.exposeInMainWorld('electronAPI', {
onLoadData: (callback) => ipcRenderer.on('load-data', (_event, value) => callback(value)), 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'), quitApp : () => ipcRenderer.send('sair'),
saveObservation: (data) => ipcRenderer.send('save-observation', data), // data = { itemId, observation } saveObservation: (data) => ipcRenderer.send('save-observation', data), // data = { itemId, observation }

View File

@ -90,8 +90,7 @@ function showObservationView() {
// // Evento do botão "Iniciar atendimento" // // Evento do botão "Iniciar atendimento"
nextButton.addEventListener('click', () => { nextButton.addEventListener('click', () => {
if (selectedItemId !== null) { if (selectedItemId !== null) {
console.log("Botão Próximo clicado, enviando ID:", selectedItemId); window.electronAPI.iniciaAtendimento(selectedItemId);
window.electronAPI.sendNextStep(selectedItemId); // Envia o ID para o main process
showObservationView(); // Muda para a tela de observação showObservationView(); // Muda para a tela de observação
} else { } else {
console.warn("Nenhum item selecionado para 'Próximo'"); console.warn("Nenhum item selecionado para 'Próximo'");