Преглед на файлове

fix: corrige vazamento de mensagens entre conversas WhatsApp, erro interno exposto e race condition na conexão

leonardo преди 1 месец
родител
ревизия
c8550206f4
променени са 1 файла, в които са добавени 5 реда и са изтрити 3 реда
  1. 5 3
      src/composables/useConversas.js

+ 5 - 3
src/composables/useConversas.js

@@ -104,9 +104,11 @@ export function useConversas() {
 
   async function buscarNovasMensagens() {
     if (!conversaAtivaId.value || buscandoNovasMensagens) return;
+    const idConsultado = conversaAtivaId.value;
     buscandoNovasMensagens = true;
     try {
-      const { results } = await listarMensagensConversa(conversaAtivaId.value, ultimoTimestamp);
+      const { results } = await listarMensagensConversa(idConsultado, ultimoTimestamp);
+      if (conversaAtivaId.value !== idConsultado) return;
       if (results.length > 0) {
         const idsExistentes = new Set(mensagens.value.map((m) => m.Id));
         const novas = results.filter((m) => !idsExistentes.has(m.Id));
@@ -128,6 +130,8 @@ export function useConversas() {
     mensagens.value = [];
     limparMidiaCache();
     ultimoTimestamp = null;
+    sugestao.value = null;
+    sugestaoError.value = "";
     mensagensLoading.value = true;
     mensagensError.value = "";
 
@@ -136,8 +140,6 @@ export function useConversas() {
       if (conversaAtivaId.value !== id) return;
       mensagens.value = results;
       ultimoTimestamp = results.length > 0 ? results[results.length - 1].Timestamp : null;
-      sugestao.value = null;
-      sugestaoError.value = "";
       if (results.length && results[results.length - 1].Direcao === "entrada") buscarSugestao();
     } catch (err) {
       if (conversaAtivaId.value !== id) return;