veza/apps/web/dist_verification/assets/ChatPage-sofPTFXq.js

3 lines
32 KiB
JavaScript
Raw Normal View History

const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-CjLUfV8Y.js","assets/vendor-react-C9dYU-TK.js","assets/vendor-security-DsrNJhpn.js","assets/vendor-BD_zwJK7.css"])))=>i.map(i=>d[i]);
import{a as n,j as e,R as me}from"./vendor-react-C9dYU-TK.js";import{D as he,h as W,B as k,p as ee,g as M,q as te,c as y,v as A,l as O,L as re,_ as se,j as fe,x as H,C as q}from"./index-BMBS6scK.js";import{b as ae,u as ne,a as V}from"./vendor-tanstack-C4XaEYj2.js";import{L as J,I as oe}from"./input-DeoQfymd.js";import{S as xe}from"./Select-EdCpbbCo.js";import{u as z}from"./chatStore-Cmmpwqns.js";import{W as F,aI as pe,g as ge,ag as be,aJ as ye,aw as ve,i as je,P as Ne,aK as Q,m as we,aL as Ce,S as ie,X as $,aM as B,aN as Se,aO as ke,aP as _e,ak as Ee,e as G}from"./vendor-icons-BSV6HBy1.js";import{D as Re,a as De,b as Te,c as X,u as ze}from"./useIsRateLimited-8kuXO8Mx.js";import{C as Y}from"./confirmation-dialog-BlZmJOYR.js";import{A as le}from"./avatar-DAue0w7u.js";import{af as Le,ag as ce,ah as Me}from"./vendor-CjLUfV8Y.js";import"./vendor-router-Dr0ZB7zf.js";import"./vendor-http-CctT3C58.js";import"./vendor-utils-D0JLFg89.js";import"./vendor-motion-CbAtAbUE.js";import"./vendor-i18n-PN7w4axr.js";import"./dropdown-CPqsiWN7.js";import"./vendor-security-DsrNJhpn.js";function Pe({open:t,onClose:c}){const[a,o]=n.useState(""),[u,d]=n.useState("public"),[m,r]=n.useState(!1),[i,l]=n.useState(null),[x,p]=n.useState(null),[s,g]=n.useState(0),v=n.useRef(null),R=te(),{addConversation:_,setCurrentConversation:E}=z(),D=async()=>{if(l(null),p(null),!a.trim()){l("Room name is required");return}const j=a.trim(),f=u,N=async()=>{const S=await M.post("/conversations",{name:j,type:f}),w={id:S.data.id||S.data.conversation?.id,name:S.data.name||S.data.conversation?.name,type:S.data.type||S.data.conversation?.type||f,participants:S.data.participants||[],unread_count:0};_(w),E(w.id),R.success("Room created successfully"),o(""),d("public"),p(null),g(0),v.current=null,c()};v.current=N,r(!0);try{await N()}catch(S){const w=ee(S);p(new Error(w.message))}finally{r(!1)}},P=async()=>{if(!(!v.current||s>=3)){g(j=>j+1),r(!0);try{await v.current()}catch{}finally{r(!1)}}};return e.jsx(he,{open:t,onClose:c,title:"Create New Room",variant:"default",size:"md",children:e.jsxs("div",{className:"space-y-4",children:[x&&e.jsx(W,{error:x,variant:"banner",severity:"error",context:{action:"creating room",resource:"conversation"},onRetry:s<3?P:void 0,onDismiss:()=>{p(null),g(0),v.current=null}}),i&&e.jsx(W,{error:i,variant:"inline",severity:"error",size:"sm",dismissible:!1}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(J,{htmlFor:"room-name",children:"Room Name"}),e.jsx(oe,{id:"room-name",value:a,onChange:j=>{o(j.target.value),l(null)},placeholder:"Enter room name",maxLength:100})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(J,{htmlFor:"room-type",children:"Room Type"}),e.jsx(xe,{options:[{value:"public",label:"Public"},{value:"private",label:"Private"}],value:u,onChange:j=>d(Array.isArray(j)?j[0]:j),name:"room-type"})]}),e.jsxs("div",{className:"flex justify-end gap-2 pt-4",children:[e.jsx(k,{variant:"outline",onClick:c,disabled:m,children:"Cancel"}),e.jsx(k,{onClick:D,disabled:m||!a.trim(),children:m?"Creating...":"Create Room"})]})]})})}function Ae(t,c,a){const{data:o,isLoading:u,error:d}=ae({queryKey:["chatConversations",t],queryFn:async()=>{if(!t)return[];const r=(await M.get("/conversations")).data,i=Array.isArray(r)?r:r?.conversations??[];return Array.isArray(i)?i:[]},enabled:!!t});return n.useEffect(()=>{o&&o.forEach(m=>{a.some(r=>r.id===m.id)||c({id:m.id,name:m.name,type:m.type??"direct",participants:Array.isArray(m.participants)?m.participants:[],unread_count:0})})},[o,a,c]),{data:o??[],isLoading:u,error:d}}function Ie({count:t,className:c}){return e.jsx("div",{className:y("p-4 border-b border-white/5 bg-white/2 backdrop-blur-sm",c),children:e.jsxs("div",{className:"flex items-center justify-between mb-1",children:[e.jsxs("h2",{className:"text-sm font-bold text-foreground tracking-wide uppercase flex items-center gap-2",children:[e.jsx(F,{className:"w-4 h-4 text-muted-foreground"}),"Active Channels"]}),e.jsx("span",{className:"text-xs font-mono text-muted-foreground bg-muted px-1.5 py-0.5 rounded",children:t})]})})}function Oe({className:t