adicionados novas funcionalidades para filtro de chamados, e busca a se há algum na fila na inicialização

This commit is contained in:
Eder Moraes 2025-11-10 01:20:11 -03:00
parent 54cfba5cc4
commit 97b4d2c90e
3 changed files with 70 additions and 16 deletions

57
main.js
View File

@ -50,10 +50,10 @@ async function readData() {
async function fetchDataFromAPI() { async function fetchDataFromAPI() {
//executa uma vez e a cada 30 segundos //executa uma vez e a cada 30 segundos
//TODO propicio para fazer um websockt nessas funções que repetem a chamada de requisições em busca de alterações //!primeira requisição é feita para API
getFirstData();
getDataAndUpdateFloatingBtn();
//! as outras é o websockt que solicita a chamada de requisições em busca de alterações
const updData = setInterval(()=>{ const updData = setInterval(()=>{
getDataAndUpdateFloatingBtn(); getDataAndUpdateFloatingBtn();
},3000); },3000);
@ -65,6 +65,57 @@ async function fetchDataFromAPI() {
},300000); },300000);
} }
async function getFirstData(){
const token = await getAuthToken();
const colabId = await floatingWin.webContents.executeJavaScript("localStorage.getItem('idOperator')")
const url = apiUrl + 'get-proximos/' + colabId;
//! checa se o token e o colabId existem
if (!token && !colabId) { console.warn("Token or colabId not found in localStorage. API requests will not be made."); return; }
//! faz o request
const request = net.request({
method: 'GET',
url: url,
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token
}
});
//! busca pela resposta
request.on('response', (response) => {
let rawData = '';
response.on('data', (chunk) => { rawData += chunk; });
response.on('end', () => {
try {
const parsedData = JSON.parse(rawData);
let proximos = parsedData;
if (response.statusCode === 200) {
floatingWin.webContents.executeJavaScript("localStorage.setItem('proximos','" + JSON.stringify(proximos) + "')");
let count = proximos.length;
floatingWin.webContents.send('update-count', count);
} else {
console.error(`Erro na requisição: Status code ${response.statusCode}`, parsedData);
}
} catch (error) {
console.error("Erro ao analisar a resposta JSON:", error);
mainWin.webContents.send('api-error', {
message: `Erro ao processar resposta do servidor.`
});
}
});
});
request.on('error', (error) => {
console.error("Erro na requisição:", error);
});
request.end();
return JSON.parse(await floatingWin.webContents.executeJavaScript("localStorage.getItem('proximos')"));
}
// Função para coletar a lista de atendimentos do servidor, vai ser chamada uma vez e a cada 30s // Função para coletar a lista de atendimentos do servidor, vai ser chamada uma vez e a cada 30s
async function getDataAndUpdateFloatingBtn (){ async function getDataAndUpdateFloatingBtn (){

View File

@ -1,6 +1,6 @@
{ {
"name": "autoatendcolab", "name": "autoatendcolab",
"version": "1.1.1", "version": "1.1.2",
"main": "main.js", "main": "main.js",
"isBuildNow": true, "isBuildNow": true,
"scripts": { "scripts": {

View File

@ -38,7 +38,8 @@ async function initializePusher() {
const channelLocal = localStorage.getItem('channel'); const channelLocal = localStorage.getItem('channel');
const colabId = localStorage.getItem('idOperator'); const colabId = localStorage.getItem('idOperator');
if (channelLocal && PUSHER_APP_KEY) { //! checa se ja tem o colabId
if (channelLocal && colabId && PUSHER_APP_KEY) {
Pusher.logToConsole = true; Pusher.logToConsole = true;
var pusher = new Pusher(PUSHER_APP_KEY, { var pusher = new Pusher(PUSHER_APP_KEY, {
@ -51,21 +52,28 @@ async function initializePusher() {
cluster: 'mt1' cluster: 'mt1'
}); });
var channel = pusher.subscribe('chat.' + channelLocal + '_' + colabId); let channel;
if (pusher.connection.state === 'connected') {
pusher.unsubscribe('chat.' + channelLocal + '_' + colabId);
}
channel = pusher.subscribe('chat.' + channelLocal + '_' + colabId);
channel.bind('message-sent', function(r) { channel.bind('message-sent', function(r) {
let count = r.data.fila.original.length; let data = r.data.fila.original;
console.log(r.data.fila.original); let count = data.length;
localStorage.setItem('proximos',JSON.stringify(r.data.fila.original)); console.log(data);
localStorage.setItem('proximos',JSON.stringify(data));
populateList(r.data.currentData.original); populateList(r.data.currentData.original);
}); });
pusher.connection.bind('error', function(err) { pusher.connection.bind('error', function(err) {
console.error('Pusher connection error:', err); console.error('Pusher connection error: ', err);
}); });
console.log('Host de conexão:', host); console.log('Host de conexão: ', host);
} else { } else {
console.warn('User not authenticated or Pusher APP_KEY not available. Private channel not subscribed.'); console.warn('User not authenticated or Pusher APP_KEY not available. Private channel not subscribed.');
} }
@ -73,16 +81,11 @@ async function initializePusher() {
initializePusher(); initializePusher();
//chama o proximo da fila ao abrir a janela de atendimentos //chama o proximo da fila ao abrir a janela de atendimentos
window.electronAPI.selectAtendID((data)=>{ window.electronAPI.selectAtendID((data)=>{
nextButton.disabled = true; nextButton.disabled = true;
if(!data){ if(!data){
queueNumber.innerHTML = 'Ninguem aguardando atendimento, fechando a janela em alguns segundos...'; queueNumber.innerHTML = 'Ninguem aguardando atendimento, fechando a janela em alguns segundos...';
// setTimeout(() => {
// localStorage.removeItem('proximos');
// window.close();
// },5000);
return; return;
} }
// Reseta a view para a lista sempre que os dados são carregados ao clicar no botão para abrir a janela // Reseta a view para a lista sempre que os dados são carregados ao clicar no botão para abrir a janela