2 lines
1.6 KiB
JavaScript
2 lines
1.6 KiB
JavaScript
import{cF as N,J as P,G as U,r,u as $,d1 as k,N as q,d2 as S,h as D,av as E,d3 as F}from"./CwKn53hw.js";const R=N("chat",()=>{const n=P(),o=U(),i=r([]),c=r(!1),y=r(0),b=$(),l=r(10),d=r(!1),h=e=>{const a=i.value.findIndex(u=>u.chat_id===e.chat_id);a>=0?Object.assign(i.value[a],{...e}):i.value.push(e)},I=e=>{e.map(a=>h(a))},T=async()=>{try{if(!d.value){c.value=!0;const e=await k(n.user.id,++y.value,l.value);I(e),(e==null?void 0:e.length)<l.value&&(d.value=!0)}}catch(e){console.log("e ===>",e)}finally{c.value=!1}},f=async e=>await F(e),x=async e=>{i.value.unshift(f(e))};return{chats:i,runChannel:()=>{q.channel("realtime:chats").on("postgres_changes",{event:"*",schema:"public",table:"chats"},async e=>{var a,u,g,m,v,_,w,p;if((a=n.user)!=null&&a.id&&(e.new.user1_id==n.user.id||e.new.user2_id==n.user.id)){if(e.eventType==="INSERT")await x(e.new.chat_id);else if(e.eventType==="UPDATE"){const s=e.new;if(h(s),(u=s==null?void 0:s.last_message)!=null&&u.sender_id&&((g=s==null?void 0:s.last_message)==null?void 0:g.sender_id)!==((m=n.user)==null?void 0:m.id)&&!((v=s==null?void 0:s.last_message)!=null&&v.is_read)){const C=`open${Date.now()}`,t=await f(s.chat_id);S.open({message:o.useString("newMessage"),description:`${o.useString("YouHaveNewMessageFrom")}: ${((_=n.user)==null?void 0:_.id)===s.user1_id?(w=t==null?void 0:t.user2)==null?void 0:w.name:(p=t==null?void 0:t.user1)==null?void 0:p.name}`,btn:()=>D(E,{type:"primary",size:"small",onClick:async()=>{S.close(C),await b.push({name:"message-detail_message",query:{id:s.chat_id}})}},{default:()=>o.useString("show")}),key:C,onClose:close})}}}}).subscribe()},request:T}});export{R as u};
|