3 lines
31 KiB
JavaScript
3 lines
31 KiB
JavaScript
|
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-IYr-MHu4.js","assets/vendor-react-BHG7lGYR.js","assets/vendor-BD_zwJK7.css"])))=>i.map(i=>d[i]);
|
||
|
|
import{a as l,j as e}from"./vendor-react-BHG7lGYR.js";import{l as le,t as ce,D as de,E as ue,T as Z,F as me}from"./vendor-IYr-MHu4.js";import{g as ee,D as he,E as A,B as U,p as se,a as I,u as O,d as _,l as q,L as te,_ as ae,f as F,h as xe,i as J}from"./index-BWcMVITa.js";import{a as re,u as ne,b as B}from"./vendor-tanstack-BzWBL1hV.js";import{I as oe}from"./input-BGBI2Wze.js";import{L as H}from"./label-N1Bsuay_.js";import{S as fe}from"./select-laDQECdR.js";import{D as pe,a as ge,b as ve,c as V,u as be}from"./useIsRateLimited-HpmSVPdB.js";import{C as X}from"./confirmation-dialog-D8kbmfRa.js";import{i as ye,J as we,ah as je,U as ke,ai as Ne,aj as Ce,p as Se,T as _e,ak as Q,al as Ee,k as Re,n as ie,X as $,am as De,an as G,ao as Te,ap as Me,aq as ze,ar as Le,A as Y}from"./vendor-icons-DaGlTw4_.js";import"./vendor-router-D-s5vIeO.js";import"./vendor-utils-CgOSfOkx.js";import"./dropdown-BYn_8IId.js";const z=le()(ce(de(s=>({userId:null,username:null,currentConversationId:null,conversations:[],messages:{},typingUsers:{},wsToken:null,wsUrl:null,wsStatus:"disconnected",setUserId:(o,n)=>s(r=>{r.userId=o,r.username=n}),setWsToken:(o,n)=>s(r=>{r.wsToken=o,r.wsUrl=n}),setWsStatus:o=>s(n=>{n.wsStatus=o}),addConversation:o=>s(n=>{n.conversations.some(r=>r.id===o.id)||n.conversations.push(o)}),setCurrentConversation:o=>s(n=>{n.currentConversationId=o}),addMessage:o=>s(n=>{n.messages[o.conversation_id]||(n.messages[o.conversation_id]=[]),n.messages[o.conversation_id].push(o)}),loadMessages:(o,n)=>s(r=>{const i=r.messages[o]||[],d=new Set(n.map(c=>c.id)),a=[...i.filter(c=>!d.has(c.id)),...n];a.sort((c,x)=>new Date(c.created_at).getTime()-new Date(x.created_at).getTime()),r.messages[o]=a}),addReaction:(o,n,r,i)=>s(d=>{const u=d.messages[o];if(u){const a=u.find(c=>c.id===n);a&&(a.reactions||(a.reactions={}),Object.keys(a.reactions).forEach(c=>{a.reactions[c]=a.reactions[c].filter(x=>x!==r),a.reactions[c].length===0&&delete a.reactions[c]}),a.reactions[i]||(a.reactions[i]=[]),a.reactions[i].includes(r)||a.reactions[i].push(r))}}),removeReaction:(o,n,r)=>s(i=>{const d=i.messages[o];if(d){const u=d.find(a=>a.id===n);u&&u.reactions&&Object.keys(u.reactions).forEach(a=>{u.reactions[a]=u.reactions[a].filter(c=>c!==r),u.reactions[a].length===0&&delete u.reactions[a]})}}),setUserTyping:(o,n,r)=>s(i=>{i.typingUsers[o]||(i.typingUsers[o]=[]),r?i.typingUsers[o].includes(n)||i.typingUsers[o].push(n):i.typingUsers[o]=i.typingUsers[o].filter(d=>d!==n)})})),{name:"ChatStore",enabled:!1}));function Pe({open:s,onClose:o}){const[n,r]=l.useState(""),[i,d]=l.useState("public"),[u,a]=l.useState(!1),[c,x]=l.useState(null),[v,f]=l.useState(null),[t,w]=l.useState(0),p=l.useRef(null),C=ee(),{addConversation:D,setCurrentConversation:T}=z(),E=async()=>{if(x(null),f(null),!n.trim()){x("Room name is required");return}const j=n.trim(),b=i,y=async()=>{const N=await I.post("/conversations",{name:j,type:b}),k={id:N.data.id||N.data.conversation?.id,name:N.data.name||N.data.conversation?.name,type:N.data.type||N.data.conversation?.type||b,participants:N.data.participants||[],unread_count:0};D(k),T(k.id),C.success("Room created successfully"),r(""),d("public"),f(null),w(0),p.current=null,o()};p.current=y,a(!0);try{await y()}catch(N){const k=se(N);f(new Error(k.message))}finally{a(!1)}},L=async()=>{if(!(!p.current||t>=3)){w(j=>j+1),a(!0);try{await p.current()}catch{}finally{a(!1)}}};return e.jsx(he,{open:s,onClose:o,title:"Create New Room",variant:"default",size:"md",children:e.jsxs("div",{className:"space-y-4",children:[v&&e.jsx(A,{error:v,variant:"banner",severity:"error",context:{action:"creating room",resource:"conversation"},onRetry:t<3?L:void 0,onDismiss:()=>{f(null),w(0),p.current=null}}),c&&e.jsx(A,{error:c,variant:"inline",severity:"error",size:"sm",dismissible:!1}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(H,{htmlFor:"room-name",children:"Room Name"}),e.jsx(oe,{id:"room-name",value:n,onChange:j=>{r(j.target.value),x(null)},placeholder:"Enter room name",maxLength:100})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(H,{htmlFor:"room-type",children:"Ro
|