1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,700304,358801,e=>{"use strict";var t=e.i(768834),a=e.i(117595),s=e.i(810475),n=e.i(979139);function r(e={}){let{search:t="",tab:a,includeMine:s,conversationId:n,minFollowers:o,maxFollowers:i,unreadOnly:c,conversationType:d,dateFrom:l,dateTo:u,lastContactFrom:v,lastContactTo:g,createdAtFrom:m,createdAtTo:p,lastMessageFrom:C,lastMessageTo:f,stage:h,isVerified:y,channels:A,sources:I,source:w,assignedTo:M,company:b,tags:S,isArchived:_,isSilenced:E,isFavorite:T,isClosed:U,autopilotDisabled:$,repliedToBroadcast:L,hasPhone:k,hasEmail:x,hasCompany:B,sentiment:R,dealMomentum:O,whatsappInstanceId:P,instagramAccountId:F,messengerPageId:D}=e,N={};return t&&(N.search=t),a&&(N.tab=a),"boolean"==typeof s&&(N.includeMine=s?"true":"false"),n&&(N.conversationId=n),"number"==typeof o&&!isNaN(o)&&o>0&&(N.minFollowers=o),"number"==typeof i&&!isNaN(i)&&i<1e6&&(N.maxFollowers=i),!0===c&&(N.unreadOnly=c),d&&(N.conversationType=d),l&&(N.dateFrom=l),u&&(N.dateTo=u),v&&(N.lastContactFrom=v),g&&(N.lastContactTo=g),m&&(N.createdAtFrom=m),p&&(N.createdAtTo=p),C&&(N.lastMessageFrom=C),f&&(N.lastMessageTo=f),h&&(N.stage=h),A?N.channels=Array.isArray(A)?A.join(","):A:I&&(N.channels=Array.isArray(I)?I.join(","):I),w&&(N.source=w),F&&(N.instagramAccountId=F),D&&(N.messengerPageId=D),M&&(N.assignedTo="object"==typeof M&&M.user?M.user._id||M.user:M),b&&(N.company="object"==typeof b&&b._id?b._id:b),Array.isArray(S)&&S.length>0?N.tags=S.join(","):"string"==typeof S&&S&&(N.tags=S),!0===y&&(N.isVerified=String(y)),(!0===_||!1===_)&&(N.isArchived=String(_)),(!0===E||!1===E)&&(N.isSilenced=String(E)),(!0===$||!1===$)&&(N.autopilotDisabled=String($)),L&&(N.repliedToBroadcast=String(L)),(!0===T||!1===T)&&(N.isFavorite=String(T)),(!0===U||!1===U)&&(N.isClosed=String(U)),!0===k&&(N.hasPhone=String(k)),!0===x&&(N.hasEmail=String(x)),!0===B&&(N.hasCompany=String(B)),R&&(N.sentiment=R),O&&(N.dealMomentum=O),P&&(N.whatsappInstanceId=P),N}let o={async getConversations(e={}){let t=(0,s.getApi)();n.default.info("ð [messageService] getConversations chamado com options:",e);let{page:a=1,limit:o=20,sortField:i="lastMessage.createdAt",sortOrder:c="desc"}=e,d={page:a,limit:o,...r(e)};i&&(d.sortField=i),c&&(d.sortOrder=c),n.default.info("ð¤ [messageService] Parâmetros finais para requisição:",d),n.default.info("ð¤ [messageService] URL será: /messages/conversations"),n.default.info("ð¤ [messageService] Query string será:",new URLSearchParams(d).toString());try{let e=await t.get("/messages/conversations",{params:d,timeout:1e4});return n.default.info("ð¥ [messageService] Resposta recebida:",{success:e.data?.success,totalConversations:e.data?.data?.conversations?.length||0,conversations:e.data?.data?.conversations?.map(e=>({conversationId:e.conversationId,type:e.type,source:e.source,contactName:e.contact?.name,groupName:e.group?.name}))||[],pagination:e.data?.data?.pagination}),e.data}catch(e){throw n.default.error("â [messageService] Erro ao buscar conversas:",e),n.default.error("â [messageService] Detalhes do erro:",{message:e.message,response:e.response?.data,status:e.response?.status}),e}},async getContactConversation(e,t={}){let a=(0,s.getApi)(),{limit:r=50,before:o}=t;try{return(await a.get(`/messages/${e}`,{params:{limit:r,before:o,markRead:!1}})).data}catch(t){throw n.default.error(`Erro ao buscar conversa ${e}:`,t),t}},async getConversationAttachments(e,t={}){let a=(0,s.getApi)(),{type:r="media",limit:o=30,before:i}=t;try{return(await a.get(`/messages/${e}/attachments`,{params:{type:r,limit:o,...i&&{before:i}}})).data}catch(t){throw n.default.error(`Erro ao buscar anexos da conversa ${e}:`,t),t}},async searchMessages(e,t){let a=(0,s.getApi)();try{return(await a.get(`/messages/${e}/search`,{params:{q:t}})).data}catch(t){throw n.default.error(`Erro ao buscar mensagens em ${e}:`,t),t}},async sendMessage(e,t,a=null,r=null,o=!1,i,c=null,d=null,l=null,u=!1,v){let g=(0,s.getApi)();try{if(u&&!o)throw Error("Rota de comentário exige modo interno");if(o&&u){if(r?.length||c)throw Error("Comentários internos aceitam apenas texto");return(await g.post(`/messages/${e}/internal-comments`,{content:t||"",...l?{clientMessageId:l}:{}})).data}let s={content:t||"",replyToMessageId:a,isInternalComment:o};return l&&(s.clientMessageId=l),o||"boolean"!=typeof v||(s.includeSignature=v),c&&
1(s.whatsappTemplateId=c),Array.isArray(d)&&d.length>0&&(s.whatsappTemplateComponents=d),r&&r.length>0&&(s.attachments=r),i&&Array.isArray(i)&&i.length>0&&(s.mentions=i),(await g.post(`/messages/${e}`,s)).data}catch(t){throw n.default.error(`Erro ao enviar mensagem para conversa ${e}:`,t),t}},async sendContactMessage(e,t,a=null){let r=(0,s.getApi)();try{return(await r.post(`/messages/${e}/contact`,{contactId:t,replyToMessageId:a})).data}catch(t){throw n.default.error(`Erro ao enviar contato para conversa ${e}:`,t),t}},async markMessagesAsRead(e,t=null){let a=(0,s.getApi)();try{return(await a.put(`/messages/${e}/read`,{messageIds:t})).data}catch(t){throw n.default.error(`Erro ao marcar mensagens como lidas para o conversa ${e}:`,t),t}},async getResponseSuggestions(e,t=null){let a=(0,s.getApi)();try{return(await a.post("/pulse/reply",{conversationId:e,...t?{assistance:t}:{}},{timeout:18e4})).data}catch(t){throw n.default.error(`Erro ao obter sugest\xf5es para a conversa ${e}:`,t),t}},async analyzeConversationSentiment(e){let t=(0,s.getApi)();try{return(await t.post(`/ai/analyze-conversation-sentiment/${e}`,{},{timeout:18e4})).data}catch(e){throw e}},async generateConversationDNA(e){let t=(0,s.getApi)();try{return(await t.post(`/ai/dna/${e}`,{},{timeout:18e4})).data}catch(e){throw e}},async sendAnalysisFeedback(e,t,a){let n=(0,s.getApi)();return(await n.post(`/ai/analysis-feedback/${e}`,{kind:t,helpful:a})).data},async improveResponse(e,t){let a=(0,s.getApi)();try{return(await a.post(`/ai/improve-response/${e}`,{message:t},{timeout:18e4})).data}catch(t){throw n.default.error(`Erro ao melhorar resposta para o conversa ${e}:`,t),t}},async fixGrammar(e){let t=(0,s.getApi)();try{return(await t.post("/ai/fix-grammar",{message:e},{timeout:6e4})).data}catch(e){throw n.default.error("Erro ao corrigir gramática:",e),e}},async getGroupParticipants(e,t={}){let a=(0,s.getApi)(),{page:r=1,limit:o=50,search:i=""}=t;try{return(await a.get(`/messages/group/${e}/participants`,{params:{page:r,limit:o,search:i}})).data}catch(t){throw n.default.error(`Erro ao buscar participantes do grupo ${e}:`,t),t}},async addGroupParticipantAsContact(e,t){let a=(0,s.getApi)();try{return(await a.post(`/messages/group/${e}/participants/${t}/add-as-contact`)).data}catch(e){throw n.default.error(`Erro ao adicionar participante ${t} como contato:`,e),e}},async updateConversationSettings(e,t){let a=(0,s.getApi)();try{return(await a.put(`/messages/${e}/settings`,{settings:t})).data}catch(t){throw n.default.error(`Erro ao atualizar configura\xe7\xf5es da conversa ${e}:`,t),t}},async clearConversationMessages(e){let t=(0,s.getApi)();try{return(await t.delete(`/messages/${e}/messages`)).data}catch(t){throw n.default.error(`Erro ao limpar mensagens da conversa ${e}:`,t),t}},async exportConversationPdf(e){let t=(0,s.getApi)();try{return(await t.get(`/messages/${e}/export/pdf`)).data}catch(t){throw n.default.error(`Erro ao exportar conversa ${e} em PDF:`,t),t}},async startConversation(e,t=null){let a=(0,s.getApi)();try{return(await a.post("/messages/start-conversation",{contactId:e,..."string"==typeof t?{whatsappInstanceId:t}:t||{}})).data}catch(t){throw n.default.error(`Erro ao iniciar conversa com contato ${e}:`,t),t}},async updateContactMessage(e,t,a){let r=(0,s.getApi)();try{return(await r.put(`/messages/${t}/${e}/update-contact`,{contactId:a})).data}catch(t){throw n.default.error(`Erro ao atualizar mensagem de contato ${e}:`,t),t}},async getConversationCounts(e={}){let t=(0,s.getApi)(),a=r(e);try{let e=await t.get("/messages/conversations/counts",{params:a}),s=e.data?.data?.counts||{};return{success:e.data?.success??!0,data:{globalUnreadCount:s.globalUnread||0,tabCounts:{mine:s.mine||0,queue:s.queue||0,all:s.all||0,closed:s.closed||0,queueMine:s.queueMine||0,queueUnrouted:s.queueUnrouted||0,queueOtherTeams:s.queueOtherTeams||0}}}}catch(e){throw n.default.error("Erro ao buscar contador de mensagens não lidas:",e),e}},async uploadAttachments(e,t){let a=(0,s.getApi)();try{let s=new FormData;return t.forEach(e=>{s.append("attachments",e)}),(await a.post(`/messages/${e}/upload-attachments`,s,{headers:{"Content-Type":"multipart/form-data"}})).data}catch(t){throw n.default.error(`Erro ao fazer upload de anexos para conversa ${e}:`,t),t}},async uploadConversationAttachmentFromMedia(e,t){let a=(0,s.getApi)();try{return(await a.post(`/messages/${e}/upload-attachments/from-media`,{mediaId:t})).data}catch(t){throw n.default.error(`Erro ao materializar anexo da biblioteca para conversa ${e}:`,t),t}},async uploadProposalImageFromMedia(e){let t=(0,s.getApi)();try{return(await t.post("/proposals/upload-image/from-media",{mediaId:e})).data}catch(e){throw n.default.error("Erro ao materializar imagem da biblioteca para proposta:",e),e}},async uploadKnowledgeFileFromMedia(e){let t=(0,s.getApi)();try{return(await t.post("/knowledge-base/files/from-media",e)).data}catch(e){throw n.default.error("Erro ao importar arquivo da biblioteca para a base de conhecimento:",e),e}},async uploadOrgAttachments(e,t,{onProgress:a}={}){let r=(0,s.getApi)();try{let s=new FormData;
1return t.forEach(e=>{s.append("attachments",e)}),(await r.post(`/organizations/${e}/upload-attachments`,s,{headers:{"Content-Type":"multipart/form-data"},timeout:24e4,onUploadProgress:"function"==typeof a?e=>{let t=e.total?Math.round(e.loaded/e.total*100):null;a(t)}:void 0})).data}catch(t){throw n.default.error(`Erro ao fazer upload de anexos para organiza\xe7\xe3o ${e}:`,t),t}},async uploadOrgAttachmentFromMedia(e,t){let a=(0,s.getApi)();try{return(await a.post(`/organizations/${e}/upload-attachments/from-media`,{mediaId:t})).data}catch(t){throw n.default.error(`Erro ao materializar anexo da biblioteca para organiza\xe7\xe3o ${e}:`,t),t}},async toggleMuteConversation(e){let t=(0,s.getApi)();try{return(await t.put(`/messages/${e}/mute`)).data}catch(t){throw n.default.error(`Erro ao alternar silenciar conversa ${e}:`,t),t}},async toggleFavoriteConversation(e){let t=(0,s.getApi)();try{return(await t.put(`/messages/${e}/favorite`)).data}catch(t){throw n.default.error(`Erro ao alternar favoritar conversa ${e}:`,t),t}},async toggleArchiveConversation(e){let t=(0,s.getApi)();try{return(await t.put(`/messages/${e}/archive`)).data}catch(t){throw n.default.error(`Erro ao alternar arquivar conversa ${e}:`,t),t}},async toggleConversationUnread(e){let t=(0,s.getApi)();try{return(await t.put(`/messages/${e}/toggle-unread`)).data}catch(t){throw n.default.error(`Erro ao alternar status de n\xe3o lida da conversa ${e}:`,t),t}},async deleteConversation(e){let t=(0,s.getApi)();try{return(await t.delete(`/messages/${e}`)).data}catch(t){throw n.default.error(`Erro ao excluir conversa ${e}:`,t),t}},async createWhatsAppGroup(e){let t=(0,s.getApi)();try{if(!e.instanceId)throw Error("ID da instância do WhatsApp é obrigatório");return(await t.post("/whatsapp/groups/create",e)).data}catch(e){throw n.default.error("Erro ao criar grupo do WhatsApp:",e),e}},async updateGroupInfo(e,t){let a=(0,s.getApi)();try{return(await a.put(`/whatsapp/groups/${e}`,t)).data}catch(t){throw n.default.error(`Erro ao atualizar informa\xe7\xf5es do grupo ${e}:`,t),t}},async updateGroupParticipants(e,t,a){let r=(0,s.getApi)();try{return(await r.post(`/whatsapp/groups/${e}/participants`,{action:t,participantIds:a})).data}catch(t){throw n.default.error(`Erro ao atualizar participantes do grupo ${e}:`,t),t}},async leaveGroup(e){let t=(0,s.getApi)();try{return(await t.delete(`/whatsapp/groups/${e}/leave`)).data}catch(t){throw n.default.error(`Erro ao sair do grupo ${e}:`,t),t}},async getInviteCode(e){let t=(0,s.getApi)();try{return(await t.get(`/whatsapp/groups/${e}/invite`)).data}catch(t){throw n.default.error(`Erro ao obter c\xf3digo de convite do grupo ${e}:`,t),t}},async revokeInviteCode(e){let t=(0,s.getApi)();try{return(await t.post(`/whatsapp/groups/${e}/invite/revoke`)).data}catch(t){throw n.default.error(`Erro ao revogar c\xf3digo de convite do grupo ${e}:`,t),t}},async reactToMessage(e,t,a){let r=(0,s.getApi)();try{return(await r.post(`/messages/${e}/${t}/react`,{emoji:a})).data}catch(e){throw n.default.error(`Erro ao reagir \xe0 mensagem ${t}:`,e),e}},async attachProduct(e,t){let a=(0,s.getApi)();n.default.info("ðµ [messageService.attachProduct] Chamando API:",{conversationId:e,productId:t,url:`/messages/${e}/product`});try{let s=await a.put(`/messages/${e}/product`,{productId:t});return n.default.info("â
[messageService.attachProduct] Resposta recebida:",s.data),s.data}catch(t){throw n.default.error(`â [messageService.attachProduct] Erro ao atribuir produto \xe0 conversa ${e}:`,t),n.default.error("Detalhes do erro:",{message:t.message,response:t.response?.data,status:t.response?.status}),t}},async assignConversation(e,t){let a=(0,s.getApi)();try{return(await a.put(`/messages/${e}/assign`,{userId:t})).data}catch(t){throw n.default.error(`Erro ao atribuir conversa ${e}:`,t?.message||"Erro desconhecido"),t}},async bulkAssign(e,t){let a=(0,s.getApi)();try{return(await a.post("/messages/bulk/assign",{conversationIds:e,userId:t})).data}catch(e){throw n.default.error("[messageService.bulkAssign]",e?.message||e),e}},async bulkClose(e){let t=(0,s.getApi)();
1try{return(await t.post("/messages/bulk/close",{conversationIds:e})).data}catch(e){throw n.default.error("[messageService.bulkClose]",e?.message||e),e}},async bulkReopen(e){let t=(0,s.getApi)();try{return(await t.post("/messages/bulk/reopen",{conversationIds:e})).data}catch(e){throw n.default.error("[messageService.bulkReopen]",e?.message||e),e}},async bulkArchive(e,t){let a=(0,s.getApi)();try{return(await a.post("/messages/bulk/archive",{conversationIds:e,isArchived:t})).data}catch(e){throw n.default.error("[messageService.bulkArchive]",e?.message||e),e}},async bulkMute(e,t){let a=(0,s.getApi)();try{return(await a.post("/messages/bulk/mute",{conversationIds:e,isSilenced:t})).data}catch(e){throw n.default.error("[messageService.bulkMute]",e?.message||e),e}},async bulkAutopilot(e,t){let a=(0,s.getApi)();try{return(await a.post("/messages/bulk/autopilot",{conversationIds:e,autopilotDisabled:t})).data}catch(e){throw n.default.error("[messageService.bulkAutopilot]",e?.message||e),e}},async bulkRead(e,t){let a=(0,s.getApi)();try{return(await a.post("/messages/bulk/read",{conversationIds:e,isRead:t})).data}catch(e){throw n.default.error("[messageService.bulkRead]",e?.message||e),e}},async bulkDelete(e){let t=(0,s.getApi)();try{return(await t.post("/messages/bulk/delete",{conversationIds:e})).data}catch(e){throw n.default.error("[messageService.bulkDelete]",e?.message||e),e}},async setConversationAutopilot(e,t){let a=(0,s.getApi)();try{return(await a.post(`/messages/${e}/ai-agent/${t?"resume":"pause"}`)).data}catch(e){throw n.default.error("[messageService.setConversationAutopilot]",e?.message||e),e}},async assignAiAgentToConversation(e,t){let a=(0,s.getApi)();try{return(await a.post(`/messages/${e}/ai-agent/assign`,{agentId:t})).data}catch(t){throw n.default.error(`Erro ao atribuir agente IA \xe0 conversa ${e}:`,t?.message||"Erro desconhecido"),t}},async deleteMessageForEveryone(e,t){let a=(0,s.getApi)();try{return(await a.delete(`/messages/${e}/${t}/delete-for-everyone`)).data}catch(e){throw n.default.error(`Erro ao apagar mensagem ${t}:`,e),e}},async editSentMessage(e,t,a){let r=(0,s.getApi)();try{return(await r.put(`/messages/${e}/${t}/edit`,{content:a})).data}catch(e){throw n.default.error(`Erro ao editar mensagem ${t}:`,e),e}},async transcribeAudio(e,t){let a=(0,s.getApi)();try{return(await a.post(`/messages/${e}/transcribe`,{audioUrl:t},{timeout:18e4})).data}catch(t){throw n.default.error(`Erro ao transcrever \xe1udio da mensagem ${e}:`,t),t}},async fetchLinkPreview(e){let t=(0,s.getApi)();try{return(await t.get("/messages/link-preview",{params:{url:e}})).data}catch(t){return n.default.warn("[messageService] Link preview indisponÃvel",{url:e,status:t.response?.status}),{success:!1,data:{preview:null}}}},async deleteInternalComment(e,t){let a=(0,s.getApi)();try{return(await a.delete(`/messages/${e}/comment/${t}`)).data}catch(e){throw n.default.error(`Erro ao excluir coment\xe1rio ${t}:`,e),e}},async editInternalComment(e,t,a){let r=(0,s.getApi)();try{return(await r.put(`/messages/${e}/comment/${t}`,{content:a})).data}catch(e){throw n.default.error(`Erro ao editar coment\xe1rio ${t}:`,e),e}},closeConversation:async e=>(await (0,s.getApi)().put(`/messages/${e}/close`,{})).data,async reopenConversation(e){let t=(0,s.getApi)();try{return(await t.put(`/messages/${e}/reopen`)).data}catch(t){throw n.default.error(`Erro ao reabrir conversa ${e}:`,t),t}},getTransferOptions:async e=>(await (0,s.getApi)().get(`/messages/${e}/transfer-number/options`)).data,transferToNumber:async(e,t)=>(await (0,s.getApi)().post(`/messages/${e}/transfer-number`,t)).data,getLinkedWindow:async(e,t,{window:a,before:n,limit:r=50}={})=>(await (0,s.getApi)().get(`/messages/${e}/linked/${t}`,{params:{window:a,before:n||void 0,limit:r}})).data,async forwardMessages({messageIds:e,contactIds:t=[],groupIds:a=[],instanceId:r}){let o=(0,s.getApi)();try{return(await o.post("/messages/bulk/forward",{messageIds:e,contactIds:t,groupIds:a,instanceId:r})).data}catch(e){throw n.default.error("Erro ao encaminhar mensagens:",e),e}}};e.s(["default",0,o],358801);var i=e.i(818149),c=e.i(782457),d=e.i(503212),l=e.i(98233);e.i(7849);var u=e.i(160077),v=e.i(422233);
1let g=new Audio("/pop.mp3");g&&(g.volume=.5);let m=new Map,p=(e,t,a)=>e&&e.messages&&!(e.messages.length<t)?{success:!0}:{success:!1,error:`${a} requer pelo menos ${t} mensagens`},C=e=>e?"string"==typeof e?e:e._id||e.id||null:null,f=(e,t)=>!e&&!t||!!e&&!!t&&e.toString()===t.toString(),h=new Set,y={ids:new Set,busy:!1};function A(e){if(e.skipInstanceFilter)return e;let t=c.default.getState().activeInstanceId,a=(0,d.selectedMetaConnectionParams)();return e.whatsappInstanceId=t??null,e.instagramAccountId=a.instagramAccountId??null,e.messengerPageId=a.messengerPageId??null,e}function I(e){let t=c.default.getState().activeInstanceId;if(t&&e?.source==="whatsapp"){let a=C(e.whatsappInstance);if(a&&String(a)!==String(t))return!1}return(0,d.conversationMatchesMetaSelection)(e)}let w=e=>e.activeConversationId?{}:(n.default.warn("[fetchConversation] loading órfão liberado â resposta chegou sem conversa ativa"),{isLoadingConversation:!1}),M=e=>Array.isArray(e)?e.filter(e=>e&&"object"==typeof e):[],b=e=>{if(null==e||""===e)return"";if("object"==typeof e){let t=e._id??e.id;return null!=t&&""!==t?String(t):""}return String(e)},S=e=>{if(!Array.isArray(e))return[];let t=new Set,a=[];for(let s of e){if(!s||"object"!=typeof s)continue;let e=b(s._id);if(!e){a.push(s);continue}t.has(e)||(t.add(e),a.push(s))}return a},_=(e,t)=>
1{let a=[...e],s=[...t],n=null;for(;s.length>0;){let e=s[0],t=a.findIndex(t=>t._id===e);if(t>=0){a.splice(t,1),s.shift(),n=e;break}s.shift()}return{messages:a,queue:s,consumedTempId:n}},E=(e,t,a)=>{let s=(e[t]||[]).filter(e=>e!==a),n={...e};return 0===s.length?delete n[t]:n[t]=s,n},T=(e,t,a)=>{let s={...e.isGeneratingSuggestionsByConversation||{}};return a?s[t]=!0:delete s[t],{isGeneratingSuggestionsByConversation:s,isGeneratingSuggestions:Object.values(s).some(Boolean)}},U=(e,t,a,s=!0)=>{if(!t)return!1;let n=C(e?.assignedTo),r=!!(e?.aiAgentManagement?.activeAgentId||e?.activeAiAgent?._id),o=!n&&!r,i=f(n,a),c=e?.isClosed===!0;switch(t){case"queue":return o&&!c;case"all":return!o&&!c&&(s||!i);case"mine":return i&&!c;case"closed":return c;default:return!1}},$=new Map,L=new Map,k=(0,t.create)((e,t)=>{let r;return{conversations:[],activeConversation:null,activeConversationId:null,hasMoreMessages:!1,nextMessagesBefore:null,isLoadingConversations:!1,isLoadingConversation:!1,isLoadingMore:!1,isGeneratingSuggestions:!1,isGeneratingSuggestionsByConversation:{},error:null,suggestions:{},showQuickReplies:!1,pagination:{page:1,limit:20,total:0,pages:0},globalUnreadCount:0,tabCounts:{mine:0,queue:0,all:0,closed:0,queueMine:0,queueUnrouted:0,queueOtherTeams:0},showMineInAll:!1,setShowMineInAll:t=>{e({showMineInAll:!!t})},countsTick:0,availableTags:[],socketConnected:!1,socketListeners:null,whatsappUnsubscribe:null,metaSelectionUnsubscribe:null,pendingOutboundTempIds:{},aiAgentLiveUiByConversation:{},webChatGuestTypingByConversation:{},whatsappPresenceByConversation:{},activeFilters:{},suggestionOrientations:{},isForwardMode:!1,selectedMessageIds:[],enterForwardMode:()=>e({isForwardMode:!0,selectedMessageIds:[]}),exitForwardMode:()=>e({isForwardMode:!1,selectedMessageIds:[]}),toggleMessageSelection:a=>{let{selectedMessageIds:s}=t();e({selectedMessageIds:s.includes(a)?s.filter(e=>e!==a):[...s,a]})},clearSelectedMessages:()=>e({selectedMessageIds:[]}),fetchUnreadCount:async(a={})=>{let s={};e({conversationCountsRequest:s});try{let{activeFilters:n,showMineInAll:r}=t(),i={...n,includeMine:r,...a};A(i);let c=await o.getConversationCounts(i);if(t().conversationCountsRequest!==s||!c?.success)return;e(e=>({globalUnreadCount:c.data?.globalUnreadCount??e.globalUnreadCount,tabCounts:c.data?.tabCounts||e.tabCounts}))}catch(e){if(t().conversationCountsRequest!==s)return;n.default.error("Erro ao buscar contador de mensagens não lidas:",e)}},revalidateConversationCounts:(r=null,function(){r&&clearTimeout(r),r=setTimeout(()=>{r=null;try{t().fetchUnreadCount(),e(e=>({countsTick:e.countsTick+1}))}catch(e){}},500)}),fetchConversations:async(a={})=>{let s={};e({conversationListRequest:s,conversationCountsRequest:null});let{page:r=1,limit:i=20,search:c="",reset:d=!1,channels:l,sources:u,skipInstanceFilter:v=!1,...g}=a;n.default.info("ð [message-store] fetchConversations chamado com opções:",{...a,channels:l,sources:u,skipInstanceFilter:v});let m={page:r,limit:i,search:c,...g,skipInstanceFilter:v};l?(m.channels=Array.isArray(l)?l.join(","):l,n.default.info("ð¡ [message-store] channels processado:",m.channels)):u&&(m.channels=Array.isArray(u)?u.join(","):u,n.default.info("ð¡ [message-store] sources processado (como channels):",m.channels)),A(m),n.default.info("ð [message-store] Parâmetros finais antes da requisição:",m),void 0===m.includeMine&&(m.includeMine=t().showMineInAll),d&&e({conversations:[],pagination:{page:1,limit:i,total:0,pages:0}}),e({activeFilters:m,isLoadingConversations:1===r,isLoadingMore:r>1,error:null});
1try{n.default.info("ð [message-store] Chamando messageService.getConversations com params:",m);let a=await o.getConversations(m);if(t().conversationListRequest!==s)return;if(n.default.info("ð¥ [message-store] Resposta do servidor:",{success:a.success,totalConversations:a.data?.conversations?.length||0,conversations:a.data?.conversations?.map(e=>({conversationId:e.conversationId,type:e.type,source:e.source,contactName:e.contact?.name,groupName:e.group?.name}))||[],pagination:a.data?.pagination}),!a.success)throw Error(a.message||"Falha ao buscar conversas do servidor");let i=a.data.conversations.map(e=>({...e,messages:Array.isArray(e.messages)?e.messages:[]}));n.default.info("â
[message-store] Conversas processadas:",i.length,"conversas"),e(e=>{let{activeConversationId:t,activeConversation:s}=e,n=e.conversations.find(e=>e?.conversationId===t),o=1===r||d?i.map(e=>t===e.conversationId&&n&&n.messages?.length>0?{...e,messages:n.messages,hasMoreMessages:n.hasMoreMessages,nextMessagesBefore:n.nextMessagesBefore}:e):[...e.conversations,...i.filter(t=>!e.conversations.some(e=>e?.conversationId===t?.conversationId))],c=null!=a.data.tabCounts&&"object"==typeof a.data.tabCounts?a.data.tabCounts:{mine:0,queue:0,all:0,closed:0},l=s;if(s&&t){let e=i.find(e=>e?.conversationId===t);if(e){let t=e=>e?"string"==typeof e?e:e._id||e.id||null:null,a=e=>String(t(e?.aiAgentManagement?.activeAgentId)||t(e?.activeAiAgent?._id)||""),n=e=>{let t=e?.lastMessage?.createdAt;if(null==t)return null;let a=t instanceof Date?t:new Date(t);return Number.isNaN(a.getTime())?null:a.getTime()},r=e=>e?.unreadCount??0;if(n(s)!==n(e)||r(s)!==r(e)||t(s.assignedTo)!==t(e.assignedTo)||s.isSilenced!==e.isSilenced||s.isFavorite!==e.isFavorite||s.isArchived!==e.isArchived||a(s)!==a(e)||!!s.aiAgentManagement?.autopilotDisabled!=!!e.aiAgentManagement?.autopilotDisabled){let t=s.messages||[];l=t.length>0?{...s,messages:t,lastMessage:void 0!==e.lastMessage?e.lastMessage:s.lastMessage,unreadCount:r(e),isManuallyUnread:e.isManuallyUnread??s.isManuallyUnread,assignedTo:void 0!==e.assignedTo?e.assignedTo:s.assignedTo,assignedAt:void 0!==e.assignedAt?e.assignedAt:s.assignedAt,isSilenced:e.isSilenced??s.isSilenced,isFavorite:e.isFavorite??s.isFavorite,isArchived:e.isArchived??s.isArchived,isClosed:e.isClosed??s.isClosed,closedAt:void 0!==e.closedAt?e.closedAt:s.closedAt,closedBy:void 0!==e.closedBy?e.closedBy:s.closedBy,activeAiAgent:void 0!==e.activeAiAgent?e.activeAiAgent:s.activeAiAgent,aiAgentManagement:void 0!==e.aiAgentManagement?e.aiAgentManagement:s.aiAgentManagement,responseSuggestions:e.responseSuggestions??s.responseSuggestions,productId:e.productId??s.productId,whatsappInstance:e.whatsappInstance??s.whatsappInstance,instagramAccount:e.instagramAccount??s.instagramAccount}:{...e,messages:t,activityLog:s.activityLog??e.activityLog??[],summary:s.summary??e.summary,sentimentAnalysis:s.sentimentAnalysis??e.sentimentAnalysis,conversationDNA:s.conversationDNA??e.conversationDNA,conversationResolution:s.conversationResolution??e.conversationResolution,contact:s.contact??e.contact,group:s.group??e.group,settings:s.settings??e.settings,instagramAccount:s.instagramAccount??e.instagramAccount,productId:s.productId??e.productId,whatsappInstance:s.whatsappInstance??e.whatsappInstance}}}}return{conversations:o,activeConversation:l,pagination:a.data.pagination,globalUnreadCount:a.data.globalUnreadCount??e.globalUnreadCount,tabCounts:c,availableTags:Array.isArray(a.data.availableTags)?a.data.availableTags:e.availableTags,isLoadingConversations:!1,isLoadingMore:!1}})}catch(a){if(t().conversationListRequest!==s)return;e(e=>({error:a.message||"Erro ao buscar conversas",isLoadingConversations:!1,isLoadingMore:!1}))}},fetchConversation:async(a,s={})=>{if(!a)return n.default.warn("[fetchConversation] conversationId não fornecido"),{success:!1};let{activeConversation:r,activeConversationId:i,isLoadingConversation:c,conversations:d}=t();if(c&&i===a&&!s.force)return n.default.info(`[fetchConversation] J\xe1 est\xe1 carregando a conversa ${a}, ignorando...`),{success:!1};let l=r&&(r.contact&&r.contact.name||r.group&&r.group.name),v=r&&Array.isArray(r.activityLog);if(i===a&&r&&Array.isArray(r.messages)&&r.messages.length>0&&l&&v&&!s.force)return n.default.info(`[fetchConversation] Conversa ${a} j\xe1 est\xe1 carregada e ativa com dados completos`),e({isLoadingConversation:!1}),{success:!0};n.default.info(`[fetchConversation] Buscando mensagens da conversa ${a}`);let g=d.find(e=>e?.conversationId===a),m=i===a&&r?.messages?.length>0;
1e({isLoadingConversation:!0,error:null,activeConversationId:a,activeConversation:m?r:g?{...g,messages:[]}:null,hasMoreMessages:!!m&&t().hasMoreMessages,nextMessagesBefore:m?t().nextMessagesBefore:null});try{let r=await o.getContactConversation(a,s);if(!r.success)throw Error(r.message||"Falha ao buscar mensagens da conversa do servidor");if(!f(t().activeConversationId,a))return n.default.info(`[fetchConversation] Resposta antiga ignorada para conversa ${a}`),e(w),{success:!1};let i=r.data.messages||[],c=M(i),d=r.data.conversation,l=C(d)||d?.conversationId||a;if(!f(l,a))throw n.default.error("[fetchConversation] API retornou dados de outra conversa",{requestedConversationId:a,responseConversationId:l}),Error("Dados de conversa inconsistentes retornados pelo servidor");i.length!==c.length&&n.default.warn(`[fetchConversation] â ï¸ ${i.length-c.length} mensagens inv\xe1lidas ignoradas para conversa ${a}`,{rawCount:i.length,validCount:c.length,invalidCount:i.length-c.length}),n.default.info(`[fetchConversation] ${c.length} mensagens carregadas para conversa ${a}`);let u=!!d?.contact?.name,v=!!d?.group?.name;if(!d||!u&&!v)if(n.default.warn("[fetchConversation] Dados incompletos da API, buscando dados completos..."),g&&(g.contact||g.group))d=g,n.default.info("[fetchConversation] Usando dados da lista de conversas");else try{let e=await o.getConversations({conversationId:a,limit:1,skipInstanceFilter:!0});e.success&&e.data.conversations?.length>0?d=e.data.conversations[0]:n.default.error(`[fetchConversation] getConversations n\xe3o retornou dados para ${a}`)}catch(e){n.default.error("[fetchConversation] Erro ao buscar dados completos:",e)}if(!f(t().activeConversationId,a))return n.default.info(`[fetchConversation] Resposta antiga ignorada ap\xf3s completar dados para conversa ${a}`),e(w),{success:!1};let m=c.filter(e=>!e.isInternalComment),p=m.length>0?m[m.length-1]:null,h={...d||{},conversationId:a,messages:c,activityLog:r.data.activityLog||[],summary:r.data.summary?{...r.data.summary,conversationId:a}:d?.summary||null,...r.data.conversation&&{isClosed:r.data.conversation.isClosed,closedAt:r.data.conversation.closedAt,closedBy:r.data.conversation.closedBy,aiAgentManagement:r.data.conversation.aiAgentManagement,activeAiAgent:r.data.conversation.activeAiAgent,blockedEntity:r.data.conversation.blockedEntity||null,linkedHistory:r.data.conversation.linkedHistory||[],outgoingTransfer:r.data.conversation.outgoingTransfer||null,lastTransfer:r.data.conversation.lastTransfer||null},lastMessage:p?{content:p.content,sentByContact:p.sentByContact,createdAt:p.createdAt,status:p.status||"delivered",attachments:p.attachments||[]}:d?.lastMessage,unreadCount:r.data.conversation?.unreadCount??d?.unreadCount??0,isManuallyUnread:r.data.conversation?.isManuallyUnread??d?.isManuallyUnread??!1};return e(e=>f(e.activeConversationId,a)?{hasMoreMessages:r.data.hasMore,nextMessagesBefore:r.data.nextBefore,isLoadingConversation:!1,activeConversationId:a,activeConversation:h,conversations:e.conversations.map(e=>e?.conversationId===a?{...e,messages:c,unreadCount:h.unreadCount,isManuallyUnread:h.isManuallyUnread,...r.data.conversation&&{isClosed:r.data.conversation.isClosed,closedAt:r.data.conversation.closedAt,closedBy:r.data.conversation.closedBy,aiAgentManagement:r.data.conversation.aiAgentManagement,activeAiAgent:r.data.conversation.activeAiAgent}}:e)}:(n.default.info(`[fetchConversation] Estado mudou; ignorando atualiza\xe7\xe3o antiga da conversa ${a}`),w(e))),{success:!0}}catch(s){n.default.error(`[fetchConversation] Erro ao buscar conversa ${a}:`,s);let t=s.response?.status;return 403===t&&u.toast.error("Essa conversa não está disponÃvel na organização atual."),e(e=>f(e.activeConversationId,a)?{error:s.message||"Erro ao buscar conversa",isLoadingConversation:!1,activeConversationId:r?.messages?.length>0?i:null,activeConversation:r?.messages?.length>0?r:null}:w(e)),{success:!1,status:t}}},loadMoreMessages:async()=>{let{activeConversationId:a,nextMessagesBefore:s,isLoadingMore:n}=t();if(a&&s&&!n){e({isLoadingMore:!0});try{let t=await o.getContactConversation(a,{before:s});if(!t.success)throw Error(t.message||"Erro ao carregar mais mensagens");let n=M(t.data.messages||[]);e(e=>{if(!f(e.activeConversationId,a))return{isLoadingMore:!1};let s=e.activeConversation?.messages||[],r=new Set(s.map(e=>
1e?._id?.toString()).filter(Boolean)),o=[...n.filter(e=>!r.has(e?._id?.toString())),...s];return{hasMoreMessages:t.data.hasMore,nextMessagesBefore:t.data.nextBefore,isLoadingMore:!1,activeConversation:e.activeConversation?{...e.activeConversation,messages:o}:null,conversations:e.conversations.map(e=>e?.conversationId===a?{...e,messages:o}:e)}})}catch(t){e({error:t.message||"Erro ao carregar mais mensagens",isLoadingMore:!1})}}},sendInternalComment:(e,a)=>t().sendMessage(a,e,[],null,!0,void 0,null,null,!0),sendMessage:async(a,s,n=null,r=null,i=!1,c,d=null,l=null,u=!1,m)=>{if(!a||!d&&!s.trim()&&(!n||0===n.length))return{success:!1};let p=c&&c.length>0?c.map(e=>{let t=e?.contactName||e?.name||e?.displayName;return{...e,name:t,displayName:t}}):void 0,C=new Date().toISOString(),f=i?`temp-${(0,v.v4)()}`:`temp-${C}`,h={_id:f,content:s,attachments:n||[],sentByContact:!1,createdAt:C,status:i?"read":"sent",replyToMessageId:r,isInternalComment:i,mentions:p,isSending:!0,_retryArgs:{content:s,attachments:n,replyToMessageId:r,isInternalComment:i,mentions:p,whatsappTemplateId:d,whatsappTemplateComponents:l,internalCommentOnly:u,includeSignature:m}};e(e=>{let s={...e.pendingOutboundTempIds,[a]:[...e.pendingOutboundTempIds[a]||[],f]},n=e.activeConversation?.conversationId===a,r=i?e.activeConversation?.lastMessage:t().storeUtils.createLastMessage(h);return{pendingOutboundTempIds:s,activeConversation:n?{...e.activeConversation,messages:[...e.activeConversation.messages||[],h],lastMessage:r}:e.activeConversation,conversations:i?e.conversations.map(e=>e?.conversationId===a?{...e,messages:[...e.messages||[],h]}:e):t().storeUtils.updateConversationWithMessage(e.conversations,a,h)}});try{let t=await o.sendMessage(a,s,r,n,i,c,d,l,i?f:null,u,m);if(!t.success)throw Error(t.message);let v={...t.data.message,_clientKey:f};return e(e=>{let t=E(e.pendingOutboundTempIds,a,f),s=e.activeConversation?.conversationId===a,n=s?S((e.activeConversation.messages||[]).map(e=>e._id===f?v:e)):e.activeConversation?.messages,r=s&&e.activeConversation?{...e.activeConversation,messages:n,lastMessage:i?e.activeConversation.lastMessage:v}:e.activeConversation;return{pendingOutboundTempIds:t,activeConversation:r,conversations:e.conversations.map(e=>e?.conversationId===a?{...e,messages:S(e.messages?.map(e=>e._id===f?v:e)||[]),lastMessage:i?e.lastMessage:v}:e)}}),g&&g.play().catch(()=>{}),{success:!0,messageId:v._id}}catch(s){let t=s?.response?.data?.error||s?.response?.data?.message||s?.message||"Erro ao enviar mensagem";if(u)return e(e=>({pendingOutboundTempIds:E(e.pendingOutboundTempIds,a,f),activeConversation:e.activeConversation?.conversationId===a?{...e.activeConversation,messages:(e.activeConversation.messages||[]).filter(e=>e._id!==f)}:e.activeConversation,conversations:e.conversations.map(e=>e?.conversationId===a?{...e,messages:(e.messages||[]).filter(e=>e._id!==f)}:e)})),{success:!1,error:t};return e(e=>({activeConversation:e.activeConversation?.conversationId===a&&e.activeConversation?{...e.activeConversation,messages:(e.activeConversation.messages||[]).map(e=>e._id===f?{...e,status:"failed"}:e)}:e.activeConversation,conversations:e.conversations.map(e=>e?.conversationId===a?{...e,messages:e.messages?.map(e=>e._id===f?{...e,status:"failed"}:e)||[]}:e)})),{success:!1,error:t}}},retryMessage:async a=>{let{activeConversation:s,sendMessage:n}=t(),r=(s?.messages||[]).find(e=>e._id===a);if(!r||"failed"!==r.status)return{success:!1,error:"Mensagem nao encontrada"};let{conversationId:o}=s,i=r._retryArgs||{content:r.content||"",attachments:r.attachments||null,replyToMessageId:r.replyToMessageId||null,isInternalComment:!!r.isInternalComment,mentions:r.mentions};return e(e=>({activeConversation:e.activeConversation&&{...e.activeConversation,messages:(e.activeConversation.messages||[]).filter(e=>e._id!==a)},conversations:e.conversations.map(e=>e?.conversationId===o?{...e,messages:e.messages?.filter(e=>e._id!==a)||[]}:e),pendingOutboundTempIds:E(e.pendingOutboundTempIds,o,a)})),n(o,i.content,i.attachments,i.replyToMessageId,i.isInternalComment,i.mentions,i.whatsappTemplateId,i.whatsappTemplateComponents,i.internalCommentOnly,i.includeSignature)},sendContactMessage:async(a,s,n=null)=>
1{if(!a||!s?._id)return{success:!1};let r=new Date().toISOString(),i=`temp-${r}`,c={_id:i,content:"",attachments:[{type:"contact",payload:{contactId:s._id,contactName:s.name||"Sem nome",contactPhone:s.phone||s.whatsapp?.phoneNumber||null,contactWhatsappJid:s.whatsapp?.remoteJid||null,contactEmail:s.email||null,contactProfilePicture:s.profilePicture||s.whatsapp?.profilePicture||null}}],sentByContact:!1,createdAt:r,status:"sent",replyToMessageId:n,isInternalComment:!1,isSending:!0};e(e=>{let s={...e.pendingOutboundTempIds,[a]:[...e.pendingOutboundTempIds[a]||[],i]},n=t().storeUtils.createLastMessage(c);return{pendingOutboundTempIds:s,activeConversation:e.activeConversation?.conversationId===a?{...e.activeConversation,messages:[...e.activeConversation.messages||[],c],lastMessage:n}:e.activeConversation,conversations:t().storeUtils.updateConversationWithMessage(e.conversations,a,c)}});try{let t=await o.sendContactMessage(a,s._id,n);if(!t.success)throw Error(t.message);let r={...t.data.message,_clientKey:i};return e(e=>{let t=E(e.pendingOutboundTempIds,a,i),s=e.activeConversation?.conversationId===a,n=s?S((e.activeConversation.messages||[]).map(e=>e._id===i?r:e)):e.activeConversation?.messages;return{pendingOutboundTempIds:t,activeConversation:s&&e.activeConversation?{...e.activeConversation,messages:n,lastMessage:r}:e.activeConversation,conversations:e.conversations.map(e=>e?.conversationId===a?{...e,messages:S(e.messages?.map(e=>e._id===i?r:e)||[]),lastMessage:r}:e)}}),g&&g.play().catch(()=>{}),{success:!0,messageId:r._id}}catch(t){return e(e=>({activeConversation:e.activeConversation?.conversationId===a&&e.activeConversation?{...e.activeConversation,messages:(e.activeConversation.messages||[]).map(e=>e._id===i?{...e,status:"failed"}:e)}:e.activeConversation,conversations:e.conversations.map(e=>e?.conversationId===a?{...e,messages:e.messages?.map(e=>e._id===i?{...e,status:"failed"}:e)||[]}:e)})),{success:!1,error:t.message}}},removeContactFromConversations:t=>{e(e=>{let a=e.activeConversationId===t;return{conversations:e.conversations.filter(e=>e?.conversationId!==t),activeConversationId:a?null:e.activeConversationId,activeConversation:e.activeConversation?.conversationId===t?null:e.activeConversation,...a?{isLoadingConversation:!1}:{}}})},fetchSuggestions:async(t,a=null)=>{if(!t)return[];let s=`${t}:${JSON.stringify(a||{intent:"context"})}`,r=m.get(s);if(r)return n.default.info(`[fetchSuggestions] Gera\xe7\xe3o j\xe1 em andamento para ${t}, aguardando a mesma requisi\xe7\xe3o`),r;let i=(async()=>{e(e=>T(e,t,!0));try{let s=await o.getResponseSuggestions(t,a);if(s.success&&s.data?.skipped)return u.toast.error({no_credits:"Créditos de IA insuficientes para gerar sugestões",generation_failed:"A IA não conseguiu gerar as sugestões agora, tente novamente"}[s.data.skipped]||"Não foi possÃvel gerar sugestões"),n.default.warn(`[fetchSuggestions] Gera\xe7\xe3o pulada para ${t}: ${s.data.skipped}`),e(e=>T(e,t,!1)),[];if(s.success&&s.data&&Array.isArray(s.data.suggestions)){let a=s.data.suggestions;return e(e=>({suggestions:{...e.suggestions||{},[t]:a},suggestionOrientations:{...e.suggestionOrientations,[t]:s.data.orientationUsed||{intent:"context"}},showQuickReplies:e.activeConversationId===t?a.length>0:e.showQuickReplies,...T(e,t,!1)})),n.default.info(`[fetchSuggestions] Sugest\xf5es atualizadas para ${t}: ${a.length} sugest\xf5es`),a}return u.toast.error(s?.message||"A IA não retornou sugestões válidas. Tente novamente."),n.default.warn(`[fetchSuggestions] Resposta inv\xe1lida ou sem sugest\xf5es para ${t}`,s),e(e=>T(e,t,!1)),[]}catch(a){return n.default.error("Erro ao buscar sugestões:",a),u.toast.error((0,l.extractErrorMessage)(a,"Erro ao gerar sugestões")),e(e=>T(e,t,!1)),[]}})();m.set(s,i);try{return await i}finally{m.delete(s)}},analyzeConversationSentiment:async a=>{if(!a)return;let{activeConversation:s,conversations:r}=t(),i=p(s?.conversationId===a?s:r.find(e=>e?.conversationId===a),3,"Análise de sentimento");if(!i.success)return i;try{let t=await o.analyzeConversationSentiment(a);if(t.success){let s={...t.data,lastUpdated:new Date().toISOString()};return e(e=>({activeConversation:e.activeConversation?.conversationId===a?{...e.activeConversation,sentimentAnalysis:s}:e.activeConversation,conversations:e.conversations.map(e=>e?.conversationId===a?{...e,sentimentAnalysis:s}:e)})),{success:!0,data:t.data}}return{success:!1,error:t.message}}catch(e){return n.default.warn("Erro ao analisar sentimento:",e),{success:!1,error:(0,l.extractErrorMessage)(e,"Erro ao analisar sentimento")}}finally{t().clearAnalysisProgress(a)}},generateConversationDNA:async a=>{if(!a)return null;let{activeConversation:s,conversations:r}=t(),i=p(s?.conversationId===a?s:r.find(e=>e?.conversationId===a),5,"DNA da Venda");if(!i.success)return i;
1try{let t=await o.generateConversationDNA(a);if(t.success){let s={...t.data,lastUpdated:new Date().toISOString()},n=s._type||(s.ticketOverview?"resolution":"dna"),r="resolution"===n?"conversationResolution":"conversationDNA";return delete s._type,e(e=>({activeConversation:e.activeConversation?.conversationId===a?{...e.activeConversation,[r]:{...e.activeConversation[r],...s}}:e.activeConversation,conversations:e.conversations.map(e=>e?.conversationId===a?{...e,[r]:{...e[r],...s}}:e)})),{success:!0,data:t.data}}return{success:!1,error:t.message}}catch(e){return n.default.warn("Erro ao gerar DNA:",e),{success:!1,error:(0,l.extractErrorMessage)(e,"Erro ao gerar análise")}}finally{t().clearAnalysisProgress(a)}},improveMessage:async(e,t)=>{if(!e||!t)return{success:!1,error:"ConversationId e mensagem são obrigatórios"};try{let a=await o.improveResponse(e,t);if(a.success)return a;return{success:!1,error:a.message||"Falha ao melhorar mensagem"}}catch(e){return n.default.error("Erro ao melhorar mensagem:",e),{success:!1,error:(0,l.extractErrorMessage)(e,"Erro ao melhorar mensagem")}}},fixGrammar:async e=>{if(!e)return{success:!1,error:"Mensagem é obrigatória"};try{let t=await o.fixGrammar(e);if(t.success)return t;return{success:!1,error:t.message||"Falha ao corrigir gramática"}}catch(e){return n.default.error("Erro ao corrigir gramática:",e),{success:!1,error:(0,l.extractErrorMessage)(e,"Erro ao corrigir gramática")}}},attachProduct:async(t,a)=>{try{let s=await o.attachProduct(t,a);if(s.success){let a=s.data.conversation?.productId??null;e(e=>({activeConversation:e.activeConversation?.conversationId===t?{...e.activeConversation,productId:a}:e.activeConversation,conversations:e.conversations.map(e=>e.conversationId===t?{...e,productId:a}:e)}))}return s}catch(e){return n.default.error("Erro ao atribuir produto à conversa:",e),{success:!1,message:e.message}}},updateConversationSettings:async(t,a)=>{try{let s=await o.updateConversationSettings(t,a);if(s.success)return e(e=>({activeConversation:e.activeConversation?.conversationId===t?{...e.activeConversation,settings:s.data.settings}:e.activeConversation,conversations:e.conversations.map(e=>e.conversationId===t?{...e,settings:s.data.settings}:e)})),{success:!0,data:s.data};throw Error(s.message)}catch(e){return n.default.error("Erro ao atualizar configurações da conversa:",e),{success:!1,error:e.message}}},toggleMuteConversation:async a=>{try{let s=await o.toggleMuteConversation(a);if(s.success)return e(e=>({activeConversation:e.activeConversation?.conversationId===a?{...e.activeConversation,isSilenced:s.data.isSilenced}:e.activeConversation,conversations:e.conversations.map(e=>e.conversationId===a?{...e,isSilenced:s.data.isSilenced}:e)})),t().revalidateConversationCounts(),{success:!0,data:s.data,message:s.message};throw Error(s.message)}catch(e){return n.default.error("Erro ao alternar silenciar conversa:",e),{success:!1,error:e.message}}},toggleFavoriteConversation:async a=>{try{let s=await o.toggleFavoriteConversation(a);if(s.success)return e(e=>({activeConversation:e.activeConversation?.conversationId===a?{...e.activeConversation,isFavorite:s.data.isFavorite}:e.activeConversation,conversations:e.conversations.map(e=>e.conversationId===a?{...e,isFavorite:s.data.isFavorite}:e)})),t().revalidateConversationCounts(),{success:!0,data:s.data,message:s.message};throw Error(s.message)}catch(e){return n.default.error("Erro ao alternar favoritar conversa:",e),{success:!1,error:e.message}}},toggleArchiveConversation:async a=>{try{let s=await o.toggleArchiveConversation(a);if(s.success){let{activeFilters:n}=t(),r=!0===n.isArchived;return e(e=>{let t=e.activeConversation?.conversationId===a?{...e.activeConversation,isArchived:s.data.isArchived}:e.activeConversation;return s.data.isArchived&&!r?{activeConversation:t,conversations:e.conversations.filter(e=>e.conversationId!==a)}:!s.data.isArchived&&r?{activeConversation:t,conversations:e.conversations.filter(e=>e.conversationId!==a)}:{activeConversation:t,conversations:e.conversations.map(e=>e.conversationId===a?{...e,isArchived:s.data.isArchived}:e)}}),t().revalidateConversationCounts(),{success:!0,data:s.data,message:s.message}}throw Error(s.message)}catch(e){return n.default.error("Erro ao alternar arquivar conversa:",e),{success:!1,error:e.message}}},deleteConversation:async e=>{try{let a=await o.deleteConversation(e);if(a.success)return t().processConversationDeleted({conversationId:e}),{success:!0,message:a.message};throw Error(a.message)}catch(e){return n.default.error("Erro ao excluir conversa:",e),{success:!1,error:e.response?.data?.message||e.message||"Erro ao excluir conversa"}}},clearConversationMessages:async e=>{try{let a=await o.clearConversationMessages(e);if(a.success)return t().processConversationCleared({conversationId:e}),{success:!0,message:a.message};throw Error(a.message)}catch(e){return n.default.error("Erro ao limpar mensagens da conversa:",e),{success:!1,error:e.response?.data?.message||e.message||"Erro ao limpar mensagens da conversa"}}},toggleUnreadConversation:async a=>{try{let s=await o.toggleConversationUnread(a);if(s.success){let n=s.data.isManuallyUnread;return e(e=>{let t=n?e.globalUnreadCount+1:Math.max(0,e.globalUnreadCount-1);return{activeConversation:e.activeConversation?.conversationId===a?{...e.activeConversation,isManuallyUnread:n}:e.activeConversation,conversations:e.conversations.map(e=>e.conversationId===a?{...e,isManuallyUnread:n}:e),globalUnreadCount:t}}),t().revalidateConversationCounts(),{success:!0,data:s.data,message:s.message}}throw Error(s.message)}catch(e){return n.default.error("Erro ao alternar status de não lida:",e),{success:!1,error:e.message}}},assignConversation:async(e,a)=>{try{let s=await o.assignConversation(e,a);if(s.success)return t().processConversationAssigned({conversationId:e,assignedTo:s.data.assignedTo,assignedAt:s.data.assignedAt}),{success:!0,data:s.data};return{success:!1,message:s.message}}catch(e){return n.default.error("Erro ao atribuir conversa:",e?.message||"Erro desconhecido"),{success:!1,message:e?.message||"Erro desconhecido"}}},bulkAssignConversations:async(e,a)=>{try{let s=await o.bulkAssign(e,a);if(s.success)return t().revalidateConversationCounts(),{success:!0,data:s.data,message:s.message};return{success:!1,error:s.message}}catch(e){return n.default.error("[bulkAssignConversations]",e),{success:!1,error:e.response?.data?.message||e.message||"Erro ao atribuir conversas"}}},bulkCloseConversations:async e=>{try{let a=await o.bulkClose(e);if(a.success)return t().revalidateConversationCounts(),{success:!0,data:a.data,message:a.message};return{success:!1,error:a.message}}catch(e){return n.default.error("[bulkCloseConversations]",e),{success:!1,error:e.response?.data?.message||e.message||"Erro ao concluir conversas"}}},bulkReopenConversations:async e=>{try{let a=await o.bulkReopen(e);if(a.success)return t().revalidateConversationCounts(),{success:!0,data:a.data,message:a.message};return{success:!1,error:a.message}}catch(e){return n.default.error("[bulkReopenConversations]",e),{success:!1,error:e.response?.data?.message||e.message||"Erro ao reabrir conversas"}}},bulkArchiveConversations:async(e,a)=>{try{let s=await o.bulkArchive(e,a);if(s.success)return t().revalidateConversationCounts(),{success:!0,data:s.data,message:s.message};return{success:!1,error:s.message}}catch(e){return n.default.error("[bulkArchiveConversations]",e),{success:!1,error:e.response?.data?.message||e.message||"Erro ao arquivar conversas"}}},bulkMuteConversations:async(e,a)=>{try{let s=await o.bulkMute(e,a);if(s.success)return t().revalidateConversationCounts(),{success:!0,data:s.data,message:s.message};return{success:!1,error:s.message}}catch(e){return n.default.error("[bulkMuteConversations]",e),{success:!1,error:e.response?.data?.message||e.message||"Erro ao silenciar conversas"}}},bulkAutopilotConversations:async(e,a)=>{try{let s=await o.bulkAutopilot(e,a);if(s.success)return t().revalidateConversationCounts(),{success:!0,data:s.data,message:s.message};return{success:!1,error:s.message}}catch(e){return n.default.error("[bulkAutopilotConversations]",e),{success:!1,error:e.response?.data?.message||e.message||"Erro ao alterar o atendimento automático"}}},setConversationAutopilot:async(e,a)=>{try{let s=await o.setConversationAutopilot(e,a);if(!s?.success)return{success:!1,error:s?.message};return t().processAiAgentConversationAssigned({conversationId:e,aiAgentManagement:s.data?.aiAgentManagement,...a?{}:{activeAiAgent:null}}),t().revalidateConversationCounts(),{success:!0,message:s.message}}catch(e){return n.default.error("[setConversationAutopilot]",e),{success:!1,error:e.response?.data?.message||e.message||"Erro ao alterar o atendimento automático"}}},bulkReadConversations:async(e,a)=>{try{let s=await o.bulkRead(e,a);if(s.success)return t().revalidateConversationCounts(),{success:!0,data:s.data,message:s.message};return{success:!1,error:s.message}}catch(e){return n.default.error("[bulkReadConversations]",e),{success:!1,error:e.response?.data?.message||e.message||"Erro ao atualizar leitura"}}},bulkDeleteConversations:async e=>{try{let a=await o.bulkDelete(e);
1if(a.success){for(let a of e)t().processConversationDeleted({conversationId:a});return t().revalidateConversationCounts(),{success:!0,data:a.data,message:a.message}}return{success:!1,error:a.message}}catch(e){return n.default.error("[bulkDeleteConversations]",e),{success:!1,error:e.response?.data?.message||e.message||"Erro ao excluir conversas"}}},markExposedMessagesAsRead:async(a,r,{all:i=!1}={})=>{let c=s.useAuthStore.getState().user,d=C(c?.currentOrganization),l=t().activeConversation;if(!c||!d||l?.conversationId!==a||!r.length)return!1;let u=l._unreadRevision||0,v=new Set(i?(l.messages||[]).filter(e=>e.sentByContact&&"read"!==e.status).map(e=>e._id):r);try{let n=await o.markMessagesAsRead(a,i?null:r),l=s.useAuthStore.getState().user;if(!n.success||!f(C(l),C(c))||!f(C(l?.currentOrganization),d))return!1;let g=t().activeConversation?.conversationId===a?t().activeConversation:t().conversations.find(e=>e.conversationId===a);g&&(g._unreadRevision||0)===u&&Number.isFinite(n.data?.unreadCount)&&t().processConversationUnreadUpdate({conversationId:a,unreadCount:n.data.unreadCount,isManuallyUnread:!!n.data.isManuallyUnread});let m=e=>e?.conversationId===a?{...e,messages:e.messages?.map(e=>v.has(e._id)?{...e,status:"read"}:e)}:e;return e(e=>({activeConversation:m(e.activeConversation),conversations:e.conversations.map(m)})),!0}catch(e){return n.default.error("Erro ao confirmar mensagens expostas:",e),!1}},markConversationAsRead:async a=>{try{let{activeConversation:s,conversations:n}=t(),r=s?.conversationId===a?s:n.find(e=>e?.conversationId===a),i=r?.unreadCount||0,c=r?.isManuallyUnread||!1;if(0===i&&!c)return{success:!0};let d=await o.markMessagesAsRead(a);if(d.success)return e(e=>({activeConversation:e.activeConversation?.conversationId===a?{...e.activeConversation,unreadCount:0,isManuallyUnread:!1}:e.activeConversation,conversations:e.conversations.map(e=>e.conversationId===a?{...e,unreadCount:0,isManuallyUnread:!1}:e),globalUnreadCount:Math.max(0,e.globalUnreadCount-1)})),t().revalidateConversationCounts(),{success:!0};throw Error(d.message)}catch(e){return n.default.error("Erro ao marcar conversa como lida:",e),{success:!1,error:e.message}}},_detachRealtimeSubscriptions:()=>{let{socketListeners:a,whatsappUnsubscribe:s,metaSelectionUnsubscribe:r}=t();if(a){for(let e of Object.values(a))if("function"==typeof e)try{e()}catch(e){n.default.warn("[Socket] Falha ao remover listener:",e)}}if(s)try{s()}catch(e){n.default.warn("[WhatsApp Subscribe] Falha ao cancelar:",e)}if(r)try{r()}catch(e){n.default.warn("[Meta Subscribe] Falha ao cancelar:",e)}e({socketListeners:null,whatsappUnsubscribe:null,metaSelectionUnsubscribe:null})},setupRealTimeConnection:()=>{if(t().socketConnected&&i.default.isConnected())return n.default.info("[Socket] Já conectado, ignorando setup duplicado"),!0;t()._detachRealtimeSubscriptions(),i.default.connect()||(n.default.warn("[Socket] Não foi possÃvel conectar (token pode não estar disponÃvel), tentando novamente em 2 segundos..."),setTimeout(()=>{a.default.get("auth-token")&&!i.default.isConnected()&&(n.default.info("[Socket] Token disponÃvel agora, tentando conectar novamente..."),i.default.connect())},2e3));let s=i.default.onConnectionStateChange(a=>{n.default.info(`[Socket] Estado de conex\xe3o mudou: ${a?"CONECTADO":"DESCONECTADO"}`),e({socketConnected:a}),a&&(n.default.info("[Socket] Reconectado! Buscando contador de mensagens não lidas..."),t().fetchUnreadCount())}),r=i.default.addListener("new_message",e=>{t().processNewMessage(e),e?.sentByContact&&t().revalidateConversationCounts()}),o=i.default.addListener("message_status_update",e=>t().processMessageStatusUpdate(e)),l=i.default.addListener("message_reaction_update",e=>t().processMessageReactionUpdate(e)),u=i.default.addListener("message_deleted",e=>t().processMessageDeleted(e)),v=i.default.addListener("message_edited",e=>t().processMessageEdited(e)),g=i.default.addListener("comment_edited",({conversationId:t,message:a})=>{if(!t||!a?._id)return;let s=(e=[])=>e.map(e=>b(e._id)===b(a._id)&&e.isInternalComment?{...e,content:a.content,editedAt:a.editedAt}:e);e(e=>({activeConversation:e.activeConversation?.conversationId===t?{...e.activeConversation,messages:s(e.activeConversation.messages)}:e.activeConversation,conversations:e.conversations.map(e=>e?.conversationId===t?{...e,messages:s(e.messages)}:e)}))}),m=i.default.addListener("comment_deleted",({conversationId:t,messageId:a})=>{if(!t||!a)return;let s=(e=[])=>e.filter(e=>b(e._id)!==b(a));e(e=>({activeConversation:e.activeConversation?.conversationId===t?{...e.activeConversation,messages:s(e.activeConversation.messages)}:e.activeConversation,conversations:e.conversations.map(e=>e?.conversationId===t?{...e,messages:s(e.messages)}:e)}))}),p=i.default.addListener("ai_suggestions_updated",e=>t().processAISuggestionsUpdate(e)),C=i.default.addListener("ai_analysis_updated",e=>t().processAIAnalysisUpdate(e)),f=i.default.addListener("ai_analysis_progress",e=>t().processAIAnalysisProgress(e)),h=i.default.addListener("conversation_assigned",e=>{e?.aiAgentManagement!==void 0?t().processAiAgentConversationAssigned({conversationId:e.conversationId,assignedTo:e.assignedTo,assignedAt:e.assignedAt,aiAgentManagement:e.aiAgentManagement,...void 0!==e.activeAiAgent?{activeAiAgent:e.activeAiAgent}:{}}):t().processConversationAssigned(e)}),y=i.default.addListener("ai_agent.conversation.assigned",e=>{t().processAiAgentConversationAssigned(e)}),A=i.default.addListener("ai_agent.conversation.autopilot_changed",e=>{t().processAiAgentConversationAssigned(e)}),I=i.default.addListener("conversation_settings_updated",({conversationId:t,settings:a})=>{t&&a&&e(e=>({activeConversation:e.activeConversation?.conversationId===t?{...e.activeConversation,settings:a}:e.activeConversation,conversations:e.conversations.map(e=>e.conversationId===t?{...e,settings:a}:e)}))}),w=i.default.addListener("conversation_activity_logged",e=>{t().processConversationActivityLogged(e)}),M=i.default.addListener("conversation_closed",e=>{t().processConversationClosed(e)}),S=i.default.addListener("conversation_reopened",e=>{t().processConversationReopened(e)}),_=i.default.addListener("conversation_transferred",e=>{t().processConversationTransferred(e)}),E=i.default.addListener("conversation_updated",e=>{t().processConversationUpdated(e)}),T=i.default.addListener("conversation_unread_update",e=>{t().processConversationUnreadUpdate(e)}),U=i.default.addListener("conversation_deleted",e=>{t().processConversationDeleted(e)}),$=i.default.addListener("conversation_cleared",e=>{t().processConversationCleared(e)}),L=i.default.addListener("ai_agent.run.started",e=>{t().processAiAgentRunStarted(e),t().revalidateConversationCounts()}),k=i.default.addListener("ai_agent.run.completed",e=>{t().processAiAgentRunEnded(e),t().revalidateConversationCounts()}),x=i.default.addListener("ai_agent.run.failed",e=>{t().processAiAgentRunEnded(e)}),B=i.default.addListener("ai_agent.run.skipped",e=>{t().processAiAgentRunEnded(e)}),R=i.default.addListener("ai_agent.handoff",e=>{e?.conversationId&&t().processAiAgentRunEnded({conversationId:e.conversationId})}),O=i.default.addListener("ai_agent.dashboard.typing",e=>{t().processAiAgentDashboardTyping(e)}
1),P=i.default.addListener("webchat_guest_typing",e=>{t().processWebChatGuestTyping(e)}),F=i.default.addListener("whatsapp_presence",e=>{t().processWhatsappPresence(e)}),D=i.default.addListener("new_conversation",e=>{!e?.conversationId||t().conversations.some(t=>t?.conversationId===e.conversationId)||(t()._syncConversationIntoList(e.conversationId),t().revalidateConversationCounts())}),N=c.default.getState().activeInstanceId,q=c.default.subscribe(e=>{let a=e.activeInstanceId;if(a!==N){n.default.info("[WhatsApp Subscribe] Instância mudou de",N,"para",a);let{activeFilters:e}=t();t().fetchConversations({...e,reset:!0})}N=a}),G=d.default.getState().selection,z=d.default.subscribe(e=>{let a=e.selection;if(a.instagram===G.instagram&&a.messenger===G.messenger)return;G=a;let{activeFilters:s}=t();t().fetchConversations({...s,reset:!0})}),j=i.default.isConnected();return e({socketConnected:j,socketListeners:{newMessage:r,statusUpdate:o,conversationAssigned:h,aiAgentConversationAssigned:y,aiAgentAutopilotChanged:A,conversationSettingsUpdated:I,reactionUpdate:l,messageDeleted:u,messageEdited:v,commentEdited:g,commentDeleted:m,aiSuggestions:p,aiAnalysis:C,aiAnalysisProgress:f,activityLogged:w,conversationClosed:M,conversationReopened:S,conversationTransferred:_,conversationUpdated:E,conversationUnreadUpdate:T,conversationDeleted:U,conversationCleared:$,aiAgentRunStarted:L,aiAgentRunCompleted:k,aiAgentRunFailed:x,aiAgentRunSkipped:B,aiAgentHandoff:R,aiAgentDashboardTyping:O,webChatGuestTyping:P,whatsappPresence:F,newConversation:D,connectionState:s},whatsappUnsubscribe:q,metaSelectionUnsubscribe:z}),j?(n.default.info("[Socket] Conectado! Buscando contador inicial de mensagens não lidas..."),t().fetchUnreadCount()):n.default.warn("[Socket] Socket criado mas ainda não conectado, aguardando conexão..."),!0},closeRealTimeConnection:()=>{for(let e of(t()._detachRealtimeSubscriptions(),i.default.disconnect(),L.values()))clearTimeout(e);L.clear(),e({socketConnected:!1,aiAgentLiveUiByConversation:{},webChatGuestTypingByConversation:{},whatsappPresenceByConversation:{}})},processNewMessage:a=>{let{conversationId:r,content:o,sentByContact:i,timestamp:c,messageId:d,status:l,attachments:u,contactId:v,groupId:g,sentByUser:m,sentByAiAgent:p,organizationId:C,isInternalComment:f,clientMessageId:h,replyTo:y,mentions:A,call:I}=a,w=s.useAuthStore.getState().user?.currentOrganization,M=w?._id||w;if(C&&M&&String(C)!==String(M))return void n.default.info(`[processNewMessage] Ignorando mensagem de outra organiza\xe7\xe3o: ${C} (atual: ${M})`);if(f){let t={_id:d,clientMessageId:h||null,content:o,createdAt:c,status:l||"read",sentByContact:!1,sentByUser:m,isInternalComment:!0,attachments:[],replyTo:y||null};e(e=>{let a=(e=[])=>{let a=e.find(e=>e._id===d||h&&e._id===h);return a?._id===d?e:S([...e.filter(e=>e._id!==h),{...t,...a?{_clientKey:a._id}:{}}])};return{pendingOutboundTempIds:h?E(e.pendingOutboundTempIds,r,h):e.pendingOutboundTempIds,activeConversation:e.activeConversation?.conversationId===r?{...e.activeConversation,messages:a(e.activeConversation.messages)}:e.activeConversation,conversations:e.conversations.map(e=>e?.conversationId===r?{...e,messages:a(e.messages)}:e)}});return}let{activeConversationId:T,activeConversation:U,conversations:$}=t(),L=T===r,k=$.find(e=>e?.conversationId===r),x={_id:d,content:o,sentByContact:i,createdAt:c,status:l||"sent",sentByUser:m,...null!=p?{sentByAiAgent:p}:{},attachments:u,contact:v,group:g,replyTo:y||null,...Array.isArray(A)&&A.length>0?{mentions:A}:{},...I&&"object"==typeof I?{call:I}:{}},B=b(d);if(!k){if(L&&U){let a=U.messages||[];if(B&&a.some(e=>b(e._id)===B))return;e(e=>{let a=[...e.pendingOutboundTempIds[r]||[]],s=[...e.activeConversation?.messages||[]],n=x;if(!i&&d){let e=_(s,a);s=e.messages,a=e.queue,e.consumedTempId&&(n={...x,_clientKey:e.consumedTempId})}s.push(n),s=S(s);let o={...e.pendingOutboundTempIds};return 0===a.length?delete o[r]:o[r]=a,{pendingOutboundTempIds:o,activeConversation:e.activeConversation&&{...e.activeConversation,messages:s,lastMessage:t().storeUtils.createLastMessage(x),...i&&"read"!==l&&{unreadCount:(e.activeConversation.unreadCount||0)+1,_unreadRevision:(e.activeConversation._unreadRevision||0)+1}}}})}t()._syncConversationIntoList(r),t().revalidateConversationCounts();return}if(d&&l&&!o&&(!u||0===u.length))return void e(e=>{let t={conversations:e.conversations.map(e=>e?.conversationId===r?{...e,messages:e.messages?.map(e=>b(e._id)===B?{...e,status:l}:e)||[]}:e)};return L&&e.activeConversation&&(t.activeConversation={...e.activeConversation,messages:e.activeConversation.messages?.map(e=>b(e._id)===B?{...e,status:l}:e)||[]}),t});let R=L&&U?.messages?U.messages:k.messages||[],O=""!==B?R.findIndex(e=>b(e._id)===B):-1;if(O>=0){let t=R[O],a=t.content||"",s=o||"",n=Array.isArray(A)?A:[],i=n.length>0&&!(t.mentions?.length>0);(a!==s&&s.trim().length>0||i)&&e(e=>{let a={...t,...s.trim().length>0?{content:s}:{},...i?{mentions:n}:{}},o=e=>b(e._id)===B?a:e,c={conversations:e.conversations.map(e=>e?.conversationId===r?{...e,messages:e.messages?.map(o)||[]}:e)};return L&&e.activeConversation&&(c.activeConversation={...e.activeConversation,messages:e.activeConversation.messages?.map(o)||[]}),c});return}let P=!!m&&("object"!=typeof m||!!(m._id??m.id));(!(!i&&d&&(o||u?.length>0))||!P)&&(e(e=>{if(L){let a=[...e.pendingOutboundTempIds[r]||[]],s=[...e.activeConversation?.messages||[]],n=x;if(!i&&d){let e=_(s,a);s=e.messages,a=e.queue,e.consumedTempId&&(n={...x,_clientKey:e.consumedTempId})}s.push(n),s=S(s);let o={...e.pendingOutboundTempIds};0===a.length?delete o[r]:o[r]=a;let c=t().storeUtils.createLastMessage(x),l=e.conversations.map(e=>e?.conversationId===r?{...e,messages:s,lastMessage:c}:e);return{pendingOutboundTempIds:o,activeConversation:e.activeConversation&&{...e.activeConversation,messages:s,lastMessage:c}
1,conversations:t().storeUtils.moveConversationToTop(l,r,{})}}let a=e.conversations.find(e=>e?.conversationId===r),s=i?(a?.unreadCount||0)+1:a?.unreadCount||0,n=i&&0===(a?.unreadCount||0)&&!a?.isManuallyUnread,o=[...e.pendingOutboundTempIds[r]||[]],c=[...a?.messages||[]],l=x;if(!i&&d){let e=_(c,o);c=e.messages,o=e.queue,e.consumedTempId&&(l={...x,_clientKey:e.consumedTempId})}c.push(l),c=S(c);let u={...e.pendingOutboundTempIds};0===o.length?delete u[r]:u[r]=o;let v=e.conversations.map(e=>e?.conversationId===r?{...e,messages:c}:e);return{pendingOutboundTempIds:u,conversations:t().storeUtils.moveConversationToTop(v,r,{lastMessage:t().storeUtils.createLastMessage(x),unreadCount:s,_unreadRevision:(a?._unreadRevision||0)+ +!!i}),globalUnreadCount:n?e.globalUnreadCount+1:e.globalUnreadCount}}),L&&i&&"read"!==l&&e(e=>{let t=e.activeConversation?.unreadCount||0,a=0===t&&!e.activeConversation?.isManuallyUnread,s=t+1,n=e=>({...e,unreadCount:s,_unreadRevision:(e._unreadRevision||0)+1});return{activeConversation:e.activeConversation&&n(e.activeConversation),conversations:e.conversations.map(e=>e?.conversationId===r?n(e):e),globalUnreadCount:a?e.globalUnreadCount+1:e.globalUnreadCount}}))},_syncConversationIntoList:a=>{if(a&&y.ids.add(String(a)),y.busy)return;y.busy=!0;let s=async()=>{let a=y.ids;y.ids=new Set;let r=()=>a.forEach(e=>y.ids.add(e)),{activeFilters:i,conversations:c,pagination:d,conversationListRequest:l,isLoadingConversations:u}=t();try{if(!i?.tab)return;if(u)return r();let s=Math.min(Math.max(c.length,d.limit||20),100),n=await o.getConversations({...i,page:1,limit:s});if(t().conversationListRequest!==l)return r();if(!n?.success||!Array.isArray(n.data?.conversations))return;e(e=>{let t=[...e.conversations],s=-1;for(let e of n.data.conversations){let n=t.findIndex(t=>f(t?.conversationId||t?._id,e.conversationId));-1!==n?s=n:a.has(String(e.conversationId))&&(s+=1,t.splice(s,0,{...e,messages:Array.isArray(e.messages)?e.messages:[]}))}return t.length===e.conversations.length?{}:{conversations:t}})}catch(e){n.default.error("[_syncConversationIntoList] Erro ao sincronizar a lista:",e)}finally{y.ids.size>0?setTimeout(s,300):y.busy=!1}};s()},updateContactInConversations:(t,a)=>{e(e=>{let s=e=>({...e,...a,lastUpdated:new Date().toISOString()});return{activeConversation:e.activeConversation?.contact?._id===t?{...e.activeConversation,contact:s(e.activeConversation.contact)}:e.activeConversation,conversations:e.conversations.map(e=>e?.contact?._id===t?{...e,contact:s(e.contact)}:e)}})},updateContactField:(t,a,s)=>{if(!t||!a)return;let n=e=>{let t={...e};return"bio"===a||"followingCount"===a?t.instagram={...t.instagram,[a]:s}:"instagram"===a?t.instagram={...t.instagram,...s}:t[a]=s,t.lastUpdated=new Date().toISOString(),t};e(e=>({activeConversation:e.activeConversation?.conversationId===t?{...e.activeConversation,contact:n(e.activeConversation.contact)}:e.activeConversation,conversations:e.conversations.map(e=>e?.conversationId===t?{...e,contact:n(e.contact)}:e)}))},storeUtils:{safelyMergeConversation:(e,t)=>{let a={...e,...t};return e?.messages?.length>0&&(!t.messages||0===t.messages.length)&&(a.messages=e.messages),a},updateConversation:(e,a,s)=>e.map(e=>{if(e?.conversationId!==a)return e;let n=s(e);return t().storeUtils.safelyMergeConversation(e,n)}),updateMessage:(e,a,s,n)=>t().storeUtils.updateConversation(e,a,e=>({...e,messages:(e.messages||[]).map(e=>e._id===s?n(e):e)})),moveConversationToTop:(e,t,a)=>{let s=e.findIndex(e=>e?.conversationId===t);if(-1===s)return e;let n=[...e],r=n[s],o={...r,...a,messages:a.messages||r.messages||[]};return n.splice(s,1),n.unshift(o),n},createLastMessage:e=>({content:e.content,sentByContact:e.sentByContact,createdAt:e.createdAt||e.timestamp,status:e.status||(e.sentByContact?"delivered":"sent"),attachments:e.attachments||[],...e.mentions?.length>0?{mentions:e.mentions}:{}}),updateConversationWithMessage:(e,a,s,n={})=>{let r=e.map(e=>e?.conversationId===a?{...e,messages:[...e.messages||[],s],lastMessage:t().storeUtils.createLastMessage(s),...n}:e);return t().storeUtils.moveConversationToTop(r,a,{})}},updateMessageReactionOptimistic:(a,s,n)=>{e(e=>{let{activeConversationId:r,activeConversation:o}=e,i=r===a,c=e.conversations.find(e=>e?.conversationId===a);if(!c&&!i)return e;let d=t().storeUtils.updateMessage(e.conversations,a,s,e=>({...e,reaction:n||null}));c?.lastMessage?._id===s&&(d=t().storeUtils.updateConversation(d,a,e=>({...e,lastMessage:{...e.lastMessage,reaction:n||null}})));let l=o;return i&&o&&(l={...o,messages:o.messages?.map(e=>e._id===s?{...e,reaction:n||null}:e)||[],lastMessage:o.lastMessage?._id===s?{...o.lastMessage,reaction:n||null}:o.lastMessage}),{conversations:d,activeConversation:l}})},processMessageReactionUpdate:a=>{a.conversationId&&a.messageId&&void 0!==a.reaction&&e(e=>{let{activeConversationId:s,activeConversation:n}=e,r=s===a.conversationId,o=e.conversations.find(e=>e?.conversationId===a.conversationId);if(!o&&!r)return e;let i=t().storeUtils.updateMessage(e.conversations,a.conversationId,a.messageId,e=>({...e,reaction:a.reaction}));o?.lastMessage?._id===a.messageId&&(i=t().storeUtils.updateConversation(i,a.conversationId,e=>({...e,lastMessage:{...e.lastMessage,reaction:a.reaction}})));let c=n;if(r&&n){let e=n.messages?.map(e=>e._id===a.messageId?{...e,reaction:a.reaction}:e)||[];c={...n,messages:e,lastMessage:n.lastMessage?._id===a.messageId?{...n.lastMessage,reaction:a.reaction}:n.lastMessage}}return{conversations:i,activeConversation:c}})},processMessageStatusUpdate:t=>{t.conversationId&&(t.messageId||t.messageIds)&&t.status&&e(e=>{let{activeConversationId:a,activeConversation:s}=e,n=a===t.conversationId,r=e.conversations.find(e=>e?.conversationId===t.conversationId);if(!r&&!n)return e;let o=e=>t.messageIds&&Array.isArray(t.messageIds)?e.map(e=>t.messageIds.includes(e._id?.toString())?{...e,status:t.status}:e):t.messageId?e.map(e=>e._id===t.messageId?{...e,status:t.status}:e):e,i=t.messageId?r?.lastMessage?._id===t.messageId:t.messageIds?.includes(r?.lastMessage?._id?.toString()),c=e.conversations.map(e=>e?.conversationId!==t.conversationId?e:{...e,messages:o(e.messages||[]),lastMessage:i?{...e.lastMessage,status:t.status}:e.lastMessage}),d=s;if(n&&s){let e=t.messageId?s.lastMessage?._id===t.messageId:t.messageIds?.includes(s.lastMessage?._id?.toString());d={...s,messages:o(s.messages||[]),lastMessage:e?{...s.lastMessage,status:t.status}:s.lastMessage}}return{conversations:c,activeConversation:d}})},processMessageDeleted:a=>{a.conversationId&&a.messageId&&e(e=>{let{activeConversationId:s,activeConversation:n}=e,r=s===a.conversationId,o=e.conversations.find(e=>e?.conversationId===a.conversationId);if(!o&&!r)return e;let i=e=>({...e,isDeleted:!0,deletedAt:a.deletedAt||a.timestamp}),c=o?.lastMessage?._id===a.messageId,d=t().storeUtils.updateMessage(e.conversations,a.conversationId,a.messageId,i);c&&(d=t().storeUtils.updateConversation(d,a.conversationId,e=>({...e,lastMessage:i(e.lastMessage)})));let l=n;if(r&&n){let e=n.lastMessage?._id===a.messageId;l={...n,messages:n.messages?.map(e=>e._id===a.messageId?i(e):e)||[],lastMessage:e?i(n.lastMessage):n.lastMessage}}return{conversations:d,activeConversation:l}})},processMessageEdited:a=>{a.conversationId&&a.messageId&&e(e=>{let{activeConversationId:s,activeConversation:n}=e,r=s===a.conversationId,o=e.conversations.find(e=>e?.conversationId===a.conversationId);if(!o&&!r)return e;let i=e=>({...e,content:a.content,editedAt:a.editedAt,editHistory:a.editHistory||[]}),c=o?.lastMessage?._id===a.messageId,d=t().storeUtils.updateMessage(e.conversations,a.conversationId,a.messageId,i);c&&(d=t().storeUtils.updateConversation(d,a.conversationId,e=>({...e,lastMessage:i(e.lastMessage)})));let l=n;if(r&&n){let e=n.lastMessage?._id===a.messageId;l={...n,messages:n.messages?.map(e=>e._id===a.messageId?i(e):e)||[],lastMessage:e?i(n.lastMessage):n.lastMessage}}return{conversations:d,activeConversation:l}})},processConversationAssigned:a=>{let{conversationId:n,assignedTo:r,assignedAt:o}=a;if(!n)return;let i=C(s.useAuthStore.getState().user),c=!1;e(e=>{let{activeConversationId:t,activeConversation:a}=e,s=t===n,d=e.conversations.find(e=>e.conversationId===n||e._id===n),l=s&&a?a:d;if(c=!d,!l)return{};if(!I(l))return s&&a?{activeConversation:{...a,assignedTo:r,assignedAt:o}}:{};if(f(C(l.assignedTo),C(r)))return{};let u={...l,assignedTo:r},v=e.activeFilters?.tab;return{conversations:v&&!U(u,v,i,e.showMineInAll)?e.conversations.filter(e=>e.conversationId!==n&&e._id!==n):e.conversations.map(e=>e.conversationId!==n&&e._id!==n?e:{...e,assignedTo:r,assignedAt:o}),activeConversation:s&&a?{...a,assignedTo:r,assignedAt:o}:e.activeConversation}});let{activeFilters:d,showMineInAll:l}=t();c&&U({assignedTo:r},d?.tab,i,l)&&t()._syncConversationIntoList(n),t().revalidateConversationCounts()},processAiAgentConversationAssigned:a=>{let{conversationId:n,assignedTo:r,assignedAt:o,aiAgentManagement:i,activeAiAgent:c}=a;if(!n)return;let d="assignedTo"in a,l=C(s.useAuthStore.getState().user),u=String(n),v=!1;e(e=>{let{activeConversationId:t,activeConversation:a}=e,s=String(t)===u||String(a?.conversationId)===u||String(a?._id)===u,n=e.conversations.find(e=>String(e.conversationId)===u||String(e._id)===u),g=s&&a?a:n;if(v=!n,!g)return{};let m=!I(g),p={...g.aiAgentManagement||{},...i},C=e=>{if(!e||String(e.conversationId)!==u&&String(e._id)!==u)return e;let t={...e,...d?{assignedTo:r,assignedAt:o}:{},aiAgentManagement:p};return void 0!==c&&(t.activeAiAgent=c),t};if(m)return s&&a?{activeConversation:C(a)}:{};let f=C(g),h=e.activeFilters?.tab;return{conversations:h&&!U(f,h,l,e.showMineInAll)?e.conversations.filter(e=>String(e.conversationId)!==u&&String(e._id)!==u):e.conversations.map(e=>C(e)),activeConversation:s&&a?C(a):e.activeConversation}});let{activeFilters:g,showMineInAll:m}=t();v&&U({assignedTo:d?r:null,aiAgentManagement:i,activeAiAgent:c},g?.tab,l,m)&&t()._syncConversationIntoList(n),t().revalidateConversationCounts()},processAISuggestionsUpdate:a=>{a.conversationId&&a.suggestions&&e(e=>{let s={...e.suggestions||{},[a.conversationId]:a.suggestions},{activeConversationId:n}=t(),r=n===a.conversationId;return{suggestions:s,suggestionOrientations:{...e.suggestionOrientations,[a.conversationId]:a.orientationUsed||{intent:"context"}},showQuickReplies:r||e.showQuickReplies,...T(e,a.conversationId,!1)}})},analysisProgressByConversation:{},processAIAnalysisProgress:t=>{let a=C(t?.conversationId);a&&t?.stage&&e(e=>({analysisProgressByConversation:{...e.analysisProgressByConversation,[a]:{kind:t.kind,stage:t.stage,at:t.at,attempt:t.attempt,messages:t.messages}}}))},clearAnalysisProgress:t=>{let a=C(t);a&&e(e=>{if(!e.analysisProgressByConversation?.[a])return{};let t={...e.analysisProgressByConversation};return delete t[a],{analysisProgressByConversation:t}})},processAIAnalysisUpdate:a=>{let{conversationId:s,analysisType:n,data:r}=a;if(!s||!r)return;t().clearAnalysisProgress(s);let o="resolution"===n?"conversationResolution":"conversationDNA";e(e=>{let t={...r,lastUpdated:new Date().toISOString()};return{activeConversation:e.activeConversation?.conversationId===s?{...e.activeConversation,[o]:{...e.activeConversation[o]||{},...t}}:e.activeConversation,conversations:e.conversations.map(e=>e?.conversationId===s?{...e,[o]:{...e[o]||{},...t}}:e),isGeneratingSuggestions:Object.values(e.isGeneratingSuggestionsByConversation||{}).some(Boolean)}})},processAiAgentRunStarted:t=>{let a=C(t?.conversationId);if(!a)return;let s=C(t?.runId),n=String(a);e(e=>({aiAgentLiveUiByConversation:{...e.aiAgentLiveUiByConversation,[n]:{runId:s?String(s):null,agentName:t?.agentName&&String(t.agentName).trim()||"Agente IA",phase:"running"}}}))},processAiAgentRunEnded:t=>{let a=C(t?.conversationId);if(!a)return;let s=String(a);e(e=>{if(!e.aiAgentLiveUiByConversation[s])return{};let t={...e.aiAgentLiveUiByConversation};return delete t[s],{aiAgentLiveUiByConversation:t}})},processAiAgentDashboardTyping:t=>{let a=C(t?.conversationId);if(!a)return;let s=String(a),n=!!t?.isTyping;e(e=>{let a=e.aiAgentLiveUiByConversation[s];return a?{aiAgentLiveUiByConversation:{...e.aiAgentLiveUiByConversation,[s]:{...a,phase:n?"typing":"running",...t?.agentName&&String(t.agentName).trim()?{agentName:String(t.agentName).trim()}:{}}}}:n?{aiAgentLiveUiByConversation:{...e.aiAgentLiveUiByConversation,[s]:{runId:C(t?.runId)?String(C(t.runId)):null,agentName:t?.agentName&&String(t.agentName).trim()||"Agente IA",phase:"typing"}}}:{}})},processWebChatGuestTyping:t=>{let a=t?.conversationId?String(t.conversationId):null;if(a){if(clearTimeout($.get(a)),!t?.isTyping)return void e(e=>{if(!e.webChatGuestTypingByConversation[a])return{};let t={...e.webChatGuestTypingByConversation};return delete t[a],{webChatGuestTypingByConversation:t}});e(e=>({webChatGuestTypingByConversation:{...e.webChatGuestTypingByConversation,[a]:!0}})),$.set(a,setTimeout(()=>{$.delete(a),e(e=>{let t={...e.webChatGuestTypingByConversation};return delete t[a],{webChatGuestTypingByConversation:t}})},6e3))}},processWhatsappPresence:t=>
1{let a=t?.conversationId?String(t.conversationId):null,s=t?.participantKey?String(t.participantKey):null;if(!a||!s)return;let n=`${a}::${s}`;clearTimeout(L.get(n)),L.delete(n);let r=()=>e(e=>{let t=e.whatsappPresenceByConversation[a];if(!t?.[s])return{};let n={...t};delete n[s];let r={...e.whatsappPresenceByConversation};return 0===Object.keys(n).length?delete r[a]:r[a]=n,{whatsappPresenceByConversation:r}});if("idle"===t.state||"offline"===t.state)return"offline"===t.state&&t.lastSeenAt?void e(e=>({whatsappPresenceByConversation:{...e.whatsappPresenceByConversation,[a]:{...e.whatsappPresenceByConversation[a]||{},[s]:{state:"offline",name:null,lastSeenAt:t.lastSeenAt}}}})):void r();if(e(e=>({whatsappPresenceByConversation:{...e.whatsappPresenceByConversation,[a]:{...e.whatsappPresenceByConversation[a]||{},[s]:{state:t.state,name:t.participantName||null,lastSeenAt:t.lastSeenAt||null}}}})),"typing"===t.state||"recording"===t.state){let e=setTimeout(()=>{L.delete(n),r()},25e3);L.set(n,e)}},clearWhatsappPresence:t=>{let a=t?String(t):null;if(a){for(let[e,t]of L)e.startsWith(`${a}::`)&&(clearTimeout(t),L.delete(e));e(e=>{if(!e.whatsappPresenceByConversation[a])return{};let t={...e.whatsappPresenceByConversation};return delete t[a],{whatsappPresenceByConversation:t}})}},processConversationActivityLogged:a=>{let{conversationId:s,activity:r}=a;if(!s||!r)return;let{activeConversationId:o}=t();f(o,s)?e(e=>{if(!e.activeConversation)return{};if(e.activeConversation.activityLog?.findIndex(e=>e._id===r._id||e.type===r.type&&e.createdAt===r.createdAt&&e.performedBy?._id===r.performedBy?._id)>=0)return n.default.info("[processConversationActivityLogged] Atividade já existe, ignorando duplicata"),{};let t=[r,...e.activeConversation.activityLog||[]];return n.default.info(`[processConversationActivityLogged] Nova atividade adicionada: ${r.type}`),{activeConversation:{...e.activeConversation,activityLog:t}}}):n.default.info(`[processConversationActivityLogged] Ignorando - conversa ${s} n\xe3o est\xe1 ativa`)},_updateConversationClosedState:(t,a)=>{t&&e(e=>{let{activeConversationId:s,activeConversation:n}=e;return{activeConversation:s===t&&n?{...n,...a}:n,conversations:e.conversations.map(e=>e.conversationId===t||e._id===t?{...e,...a}:e)}})},processConversationTransferred:a=>{let{transferId:s,fromConversationId:n,toConversationId:r,at:o,by:i,fromInstance:c,toInstance:d}=a||{};if(!s||!n&&!r)return;let l=C(i),u=e=>f(e,n)?{direction:"out",transfer:s,instance:C(d),instanceName:d?.name||null,by:l,byName:i?.name||null,at:o}:f(e,r)?{direction:"in",transfer:s,instance:C(c),instanceName:c?.name||null,by:l,byName:i?.name||null,at:o}:null;if(e(e=>{let t=e.activeConversationId,a=t?u(t):null,c=t&&f(t,n);return{conversations:e.conversations.map(e=>{let t=u(e?.conversationId||e?._id);return t?{...e,lastTransfer:t}:e}),activeConversation:e.activeConversation&&a?{...e.activeConversation,lastTransfer:a,...c?{isClosed:!0,closedAt:e.activeConversation.closedAt||o||new Date().toISOString(),outgoingTransfer:String(e.activeConversation.outgoingTransfer?.transferId||"")===String(s)?e.activeConversation.outgoingTransfer:{transferId:s,at:o||new Date().toISOString(),note:"",by:i?{_id:l,name:i.name||null}:null,to:{conversationId:r||null,instance:{_id:C(d),name:d?.name||null}},destination:null,canOpen:!1}}:{}}:e.activeConversation}}),h.has(s))return;let v=t().activeConversationId;v&&(f(v,n)||f(v,r))&&(h.add(s),h.size>50&&h.delete(h.values().next().value),t().fetchConversation(v,{force:!0}))},patchConversation:(t,a)=>e(e=>({conversations:e.conversations.map(e=>f(e._id,t)?{...e,...a}:e),activeConversation:e.activeConversation&&f(e.activeConversation._id,t)?{...e.activeConversation,...a}:e.activeConversation})),processConversationClosed:a=>{let{conversationId:s,isClosed:n,closedAt:r,closedBy:o}=a;t()._updateConversationClosedState(s,{isClosed:n,closedAt:r,closedBy:o});let{activeFilters:i,conversations:c}=t(),d=i?.tab,l=c.find(e=>e.conversationId===s||e._id===s);"closed"===d?l||t()._syncConversationIntoList(s):l&&e(e=>({conversations:e.conversations.filter(e=>e.conversationId!==s&&e._id!==s),pagination:{...e.pagination,total:Math.max(0,(e.pagination.total||0)-1)}})),t().revalidateConversationCounts()},processConversationDeleted:a=>{let{conversationId:s}=a;s&&(e(e=>{let t=e.conversations.find(e=>f(e.conversationId||e._id,s)),a=f(e.activeConversationId,s)||e.activeConversation&&f(e.activeConversation.conversationId||e.activeConversation._id,s);if(!t&&!a)return{};let n=(t?.unreadCount||0)>0||t?.isManuallyUnread;return{conversations:e.conversations.filter(e=>!(f(e?.conversationId,s)||f(e?._id,s))),activeConversationId:a?null:e.activeConversationId,activeConversation:a?null:e.activeConversation,...a?{isLoadingConversation:!1}:{},pagination:{...e.pagination,...t?{total:Math.max(0,(e.pagination.total||0)-1)}:{}}
1,...t&&n?{globalUnreadCount:Math.max(0,e.globalUnreadCount-1)}:{}}}),t().revalidateConversationCounts())},processConversationCleared:a=>{let{conversationId:s}=a;s&&(e(e=>{let t=e.conversations.find(e=>f(e.conversationId||e._id,s)),a=f(e.activeConversationId,s)||e.activeConversation&&f(e.activeConversation.conversationId||e.activeConversation._id,s);if(!t&&!a)return{};let n=(t?.unreadCount||0)>0||t?.isManuallyUnread,r={messages:[],lastMessage:null,unreadCount:0,isManuallyUnread:!1};return{conversations:e.conversations.map(e=>f(e.conversationId,s)||f(e._id,s)?{...e,...r}:e),activeConversation:a&&e.activeConversation?{...e.activeConversation,...r}:e.activeConversation,...a?{hasMoreMessages:!1}:{},...n?{globalUnreadCount:Math.max(0,e.globalUnreadCount-1)}:{}}}),t().revalidateConversationCounts())},processConversationReopened:a=>{let{conversationId:s,isClosed:n,closedAt:r,closedBy:o,assignedTo:i,assignedAt:c}=a,d={isClosed:n,closedAt:r,closedBy:o};void 0!==i&&(d.assignedTo=i),void 0!==c&&(d.assignedAt=c),t()._updateConversationClosedState(s,d);let{activeFilters:l}=t();"closed"===l?.tab?e(e=>({conversations:e.conversations.filter(e=>e.conversationId!==s&&e._id!==s),pagination:{...e.pagination,total:Math.max(0,(e.pagination.total||0)-1)}})):t().conversations.some(e=>e.conversationId===s||e._id===s)||t()._syncConversationIntoList(s),t().revalidateConversationCounts()},processConversationUnreadUpdate:a=>{let{conversationId:s,isManuallyUnread:n,unreadCount:r}=a;s&&(e(e=>{let{activeConversationId:t,activeConversation:a}=e,o=f(t,s),i=e.conversations.find(e=>e.conversationId===s||e._id===s)||(o?a:null),c=(i?.unreadCount||0)>0||i?.isManuallyUnread;return{activeConversation:o&&a?{...a,isManuallyUnread:n,unreadCount:r,_unreadRevision:(a._unreadRevision||0)+1}:a,conversations:e.conversations.map(e=>f(e.conversationId||e._id,s)?{...e,isManuallyUnread:n,unreadCount:r,_unreadRevision:(e._unreadRevision||0)+1}:e),globalUnreadCount:Math.max(0,e.globalUnreadCount+(!!(r>0||n)-!!c))}}),t().revalidateConversationCounts())},processConversationUpdated:t=>{let{conversationId:a,...s}=t;if(!a)return;let n=Object.fromEntries(Object.entries(s).filter(([,e])=>void 0!==e));e(e=>{let{activeConversationId:t,activeConversation:s}=e,r=f(t,a),o=e.activeFilters?.isArchived===!0,i=e=>f(e.conversationId||e._id,a),c=r&&s?{...s,...n}:s,d=e.conversations.map(e=>i(e)?{...e,...n}:e);if(Object.prototype.hasOwnProperty.call(n,"isArchived")){let e=!!n.isArchived;e&&!o?d=d.filter(e=>
1!i(e)):!e&&o&&(d=d.filter(e=>!i(e)))}return{activeConversation:c,conversations:d}})},closeConversation:async e=>{let a=await o.closeConversation(e);if(!a.success)return a;let s=a.data?.conversation;if(!s?.isClosed)throw Error("O servidor não confirmou a conclusão da conversa.");return t()._updateConversationClosedState(e,{activityLog:s.activityLog}),t().processConversationClosed({conversationId:e,isClosed:s.isClosed,closedAt:s.closedAt,closedBy:s.closedBy}),a},reopenConversation:async a=>{try{let n=await o.reopenConversation(a);if(n.success){let{activeConversationId:r,activeConversation:o,activeFilters:i}=t(),c=f(r,a),d=C(s.useAuthStore.getState().user),l=n.data?.conversation,u=l?{isClosed:l.isClosed,closedAt:l.closedAt,closedBy:l.closedBy,activityLog:l.activityLog}:{isClosed:!1,closedAt:null,closedBy:null};return e(e=>{let t=i?.tab,s=l&&t&&!U(l,t,d,e.showMineInAll)?e.conversations.filter(e=>!f(e.conversationId||e._id,a)):e.conversations.map(e=>f(e.conversationId||e._id,a)?{...e,...u}:e),n=c&&o?{...o,...u}:e.activeConversation;return{conversations:s,activeConversation:n}}),t().revalidateConversationCounts(),{success:!0,message:"Conversa reaberta com sucesso"}}return{success:!1,message:n.message}}catch(e){return n.default.error(`Erro ao reabrir conversa ${a}:`,e?.message||"Erro desconhecido"),{success:!1,message:e?.message||"Erro desconhecido"}}},resetConversations:()=>{e(e=>({conversationListRequest:null,conversationCountsRequest:null,conversations:[],activeConversationId:null,activeConversation:null,hasMoreMessages:!1,nextMessagesBefore:null,isLoadingConversations:!1,isLoadingConversation:!1,isLoadingMore:!1,isGeneratingSuggestions:!1,isGeneratingSuggestionsByConversation:{},error:null,suggestions:{},suggestionOrientations:{},showQuickReplies:!1,activeFilters:{},pagination:{...e.pagination,page:1,total:0,pages:0}
1,pendingOutboundTempIds:{}}))},clearActiveConversation:()=>{e({activeConversationId:null,activeConversation:null,hasMoreMessages:!1,nextMessagesBefore:null,isLoadingConversation:!1,showQuickReplies:!1})},reset:()=>{e({conversationListRequest:null,conversationCountsRequest:null}),t()._detachRealtimeSubscriptions(),i.default.disconnectAndClear(),e({conversations:[],activeConversationId:null,activeConversation:null,hasMoreMessages:!1,nextMessagesBefore:null,isLoadingConversations:!1,isLoadingConversation:!1,isLoadingMore:!1,isGeneratingSuggestions:!1,isGeneratingSuggestionsByConversation:{},error:null,suggestions:{},suggestionOrientations:{},socketConnected:!1,showQuickReplies:!1,activeFilters:{},pagination:{page:1,limit:20,total:0,pages:0},globalUnreadCount:0,tabCounts:{mine:0,queue:0,all:0,closed:0,queueMine:0,queueUnrouted:0,queueOtherTeams:0},showMineInAll:!1,pendingOutboundTempIds:{}})}}});e.s(["default",0,k],700304)}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.