1import{j as e}from"./ui--P4lsL1b.js";import{u as A,a as H,B as k,M as V,D as J,h as R,i as G,j as K,s as c,J as u,A as Q,L as W}from"./index-Qulnlpxv.js";import{u as X}from"./useQuery-Jzb2obuU.js";import{d as Z,r as l}from"./vendor-nLdbLG9k.js";import{D as ee,a as re,b as se,c as ie}from"./dropdown-menu-DABu-xrI.js";import{T as te,A as ne,b as oe,c as ae,d as ce,e as de,f as le,g as ue,h as me}from"./alert-dialog-BWSQXDXB.js";import{V as he}from"./VerifiedTraderBadge-MfOzRDYg.js";import{I as Y}from"./info-XMFLeidC.js";import{E as ge}from"./ellipsis-vertical-BQeGifEt.js";import{I as pe}from"./InviteGuard-D8dNKXTJ.js";import"./supabase-sRrgOpWC.js";import"./index-C-5DauYz.js";import"./index-BhD_7wIV.js";import"./alert-BMl3kGfa.js";import"./lock-Cc481I09.js";import"./mail-Cm9vcHf8.js";import"./skeleton-sANWSB6G.js";const fe=({match:r,onMatchDeleted:I})=>{var F,T,z,O,L;const p=Z(),{t:h}=A(),[f,x]=l.useState(null),[b,E]=l.useState(!1),[n,j]=l.useState(null),[N,m]=l.useState(!1),[g,y]=l.useState(null),[v,d]=l.useState(!1),[C,i]=l.useState(!1);l.useEffect(()=>{(async()=>{const{data:o}=await c.from("profiles").select("is_premium, premium_until").eq("id",r.otherItem.userId).maybeSingle();o&&i(!!o.is_premium&&(!o.premium_until||new Date(o.premium_until)>new Date))})()},[r.otherItem.userId]),l.useEffect(()=>{(async()=>{const{data:{user:o}}=await c.auth.getUser();o&&y(o.id)})()},[]),l.useEffect(()=>{(async()=>{if(!g)return;console.log("Checking for existing conversation for item pair:",r.userItem.id,"and",r.otherItem.id);const{data:o,error:a}=await c.from("conversations").select("id, status").or(`and(initiator_id.eq.${g},recipient_id.eq.${r.otherItem.userId},initiator_item_id.eq.${r.userItem.id},recipient_item_id.eq.${r.otherItem.id}),and(initiator_id.eq.${r.otherItem.userId},recipient_id.eq.${g},initiator_item_id.eq.${r.otherItem.id},recipient_item_id.eq.${r.userItem.id})`).eq("status","active").maybeSingle();if(a){console.error("Error fetching conversation:",a);return}console.log("Existing conversation found:",o),o&&x(o.id)})()},[r.otherItem.userId,r.userItem.id,r.otherItem.id,g]);const s=async()=>{var t,o;if(v){console.log("Already creating conversation, skipping...");return}try{d(!0);const{data:{user:a}}=await c.auth.getUser();if(!a){u.error("Please log in to start a conversation");return}if(console.log("Starting chat - User ID:",a.id,"Other User ID:",r.otherItem.userId),console.log("User Item ID:",r.userItem.id,"Other Item ID:",r.otherItem.id),f){console.log("Using existing conversation:",f),p(`/chat/${f}`);return}console.log("Performing final check for existing conversation for this item pair...");const{data:D,error:P}=await c.from("conversations").select("id, status").or(`and(initiator_id.eq.${a.id},recipient_id.eq.${r.otherItem.userId},initiator_item_id.eq.${r.userItem.id},recipient_item_id.eq.${r.otherItem.id}),and(initiator_id.eq.${r.otherItem.userId},recipient_id.eq.${a.id},initiator_item_id.eq.${r.otherItem.id},recipient_item_id.eq.${r.userItem.id})`).maybeSingle();if(P&&console.error("Error checking for existing conversation:",P),D&&D.status==="active"){console.log("Found existing conversation during final check:",D.id),x(D.id),p(`/chat/${D.id}`);return}console.log("No existing conversation found, creating new one..."),console.log("Creating conversation with data:",{initiator_id:a.id,recipient_id:r.otherItem.userId,initiator_item_id:r.userItem.id,recipient_item_id:r.otherItem.id,status:"active"});const{data:q,error:$}=await c.from("conversations").insert({initiator_id:a.id,recipient_id:r.otherItem.userId,initiator_item_id:r.userItem.id,recipient_item_id:r.otherItem.id,status:"active"}).select("id").single();if($){if(console.error("Error creating conversation:",$),$.code==="23505"||(t=$.message)!=null&&t.includes("duplicate")||(o=$.message)!=null&&o.includes("unique")){console.log("Duplicate conversation detected, fetching existing one for this item pair...");const{data:M,error:B}=await c.from("conversations").select("id").or(`and(initiator_id.eq.${a.id},recipient_id.eq.${r.otherItem.userId},initiator_item_id.eq.${r.userItem.id},recipient_item_id.eq.${r.otherItem.id}),and(initiator_id.eq.${r.otherItem.userId},recipient_id.eq.${a.id},initiator_item_id.eq.${r.otherItem.id},recipient_item_id.eq.${r.userItem.id})`).maybeSingle();if(B){console.error("Error fetching duplicate conversation:",B),u.error("Failed to open conversation");return}if(M){console.log("Using existing conversation:",M.id),x(M.id),p(`/chat/${M.id}`);return}}u.error("Failed to create conversation");return}if(!q||!q.id){console.error("No conversation ID returned from insert"),u.error("Failed to create conversation");return}console.log("Successfully created new conversation:",q.id),x(q.id),p(`/chat/${q.id}`),u.success("Chat started!")}catch(a){console.error("Error handling chat:",a),u.error("Failed to start conversation")}finally{d(!1)}},U=async()=>{try{const{error:t}=await c.from("matches").delete().eq("id",r.id);if(t){console.error("Error deleting match:",t),u.error("Failed to delete match");return}u.success("Match deleted successfully"),I&&I()}catch(t){console.error("Error deleting match:",t),u.error("Failed to delete match")}finally{m(!1)}},_=t=>t?t.startsWith("http")?t:`https://ehjuekrauiaebsqyqonq.supabase.co/storage/v1/object/public/items/${t}`:"/placeholder.svg",w=t=>{j(t),E(!0)},S=({item:t,label:o})=>e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:o}),e.jsxs("div",{className:"text-sm space-y-1",children:[e.jsxs("p",{children:[e.jsx("span",{className:"font-medium",children:"Title:"})," ",t.title]}),t.model&&e.jsxs("p",{children:[e.jsx("span",{className:"font-medium",children:"Model:"})," ",t.model]}),t.year&&e.jsxs("p",{children:[e.jsx("span",{className:"font-medium",children:"Year:"})," ",t.year]}),t.category&&e.jsxs("p",{children:[e.jsx("span",{className:"font-medium",children:"Category:"})," ",t.category]}),t.condition&&e.jsxs("p",{children:[e.jsx("span",{className:"font-medium",children:"Condition:"})," ",t.condition]}),t.description&&e.jsxs("p",{children:[e.jsx("span",{className:"font-medium",children:"Description:"})," ",t.description]})]})]});return e.jsxs(e.Fragment,{children:[e.jsx(H,{className:"cursor-pointer hover:shadow-md transition-shadow duration-200",children:e.jsxs("div",{className:"p-4",children:[e.jsxs("div",{className:"flex items-center gap-4 mb-3",children:[e.jsx("div",{className:"w-16 h-16 rounded-lg overflow-hidden bg-accent flex-shrink-0 cursor-pointer",onClick:()=>w("user"),children:e.jsx("img",{loading:"lazy",decoding:"async",src:_(r.userItem.imageUrl),alt:r.userItem.title,className:"w-full h-full object-cover"})}),e.jsx("div",{className:"flex-1 min-w-0",children:e.jsxs("h3",{className:"font-semibold text-foreground truncate cursor-pointer hover:underline",onClick:()=>w("user"),children:["Your item: ",r.userItem.title]})}),e.jsx(k,{variant:"ghost",size:"icon",onClick:()=>w("user"),children:e.jsx(Y,{className:"h-5 w-5"})})]}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"w-16 h-16 rounded-lg overflow-hidden bg-accent flex-shrink-0 cursor-pointer",onClick:()=>w("other"),children:e.jsx("img",{loading:"lazy",decoding:"async",src:_(r.otherItem.imageUrl),alt:r.otherItem.title,className:"w-full h-full object-cover"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:"font-semibold text-foreground truncate cursor-pointer hover:underline",onClick:()=>w("other"),children:r.otherItem.title}),e.jsxs("p",{className:"text-sm text-muted-foreground truncate flex items-center gap-1",children:[r.otherItem.userName,C&&e.jsx(he,{})]})]}),e.jsx(k,{variant:"ghost",size:"icon",onClick:()=>w("other"),children:e.jsx(Y,{className:"h-5 w-5"})}),e.jsx(k,{variant:"ghost",size:"icon",onClick:s,className:"text-primary",disabled:v,children:e.jsx(V,{className:"w-6 h-6","aria-label":"Open chat"})}),e.jsxs(ee,{children:[e.jsx(re,{asChild:!0,children:e.jsx(k,{variant:"ghost",size:"icon",children:e.jsx(ge,{className:"h-5 w-5"})})}),e.jsx(se,{align:"end",children:e.jsxs(ie,{onClick:()=>m(!0),children:[e.jsx(te,{className:"mr-2 h-4 w-4"}),e.jsx("span",{children:((F=h.matchesSection)==null?void 0:F.deleteMatch)||"Delete match"})]})})]})]})]})}),e.jsx(J,{open:b,onOpenChange:E,children:e.jsxs(R,{className:"sm:max-w-md",children:[e.jsx(G,{children:e.jsx(K,{children:n==="user"?`Your Item: ${r.userItem.title}`:`${r.otherItem.userName}'s Item: ${r.otherItem.title}`})}),e.jsxs("div",{className:"flex flex-col space-y-4",children:[e.jsx("div",{className:"w-full h-48 rounded-md overflow-hidden",children:e.jsx("img",{loading:"lazy",decoding:"async",src:_(n==="user"?r.userItem.imageUrl:r.otherItem.imageUrl),alt:n==="user"?r.userItem.title:r.otherItem.title,className:"w-full h-full object-contain"})}),e.jsx("div",{className:"space-y-2",children:n==="user"?e.jsx(S,{item:r.userItem,label:"Your Item Details"}):e.jsx(S,{item:r.otherItem,label:`${r.otherItem.userName}'s Item Details`})}),n==="other"&&e.jsx("div",{className:"flex justify-end pt-2",children:e.jsxs(k,{onClick:s,className:"flex items-center gap-2",disabled:v,children:[e.jsx(V,{className:"w-4 h-4"}),"Chat about this item"]})})]})]})}),e.jsx(ne,{open:N,onOpenChange:m,children:e.jsxs(oe,{children:[e.jsxs(ae,{children:[e.jsx(ce,{children:((T=h.matchesSection)==null?void 0:T.deleteMatchTitle)||"Delete Match"}),e.jsx(de,{children:((z=h.matchesSection)==null?void 0:z.deleteMatchConfirm)||"Are you sure you want to delete this match? This action cannot be undone."})]}),e.jsxs(le,{children:[e.jsx(ue,{children:((O=h.common)==null?void 0:O.cancel)||"Cancel"}),e.jsx(me,{onClick:U,className:"bg-destructive text-destructive-foreground",children:((L=h.common)==null?void 0:L.delete)||"Delete"})]})]})})]})},xe=()=>{const{language:r,t:I}=A(),p=()=>{switch(r){case"pl":return"Åadowanie dopasowaÅ...";case"es":return"Cargando coincidencias...";case"fr":return"Chargement des correspondances...";case"de":return"Ãbereinstimmungen werden geladen...";case"pt":return"Carregando combinações...";default:return"Loading matches..."}},h=()=>{switch(r){case"pl":return"Nie znaleziono jeszcze dopasowaÅ. Dopasowanie powstaje, gdy obaj użytkownicy polubiÄ swoje przedmioty!";case"es":return"Aún no se han encontrado coincidencias. ¡Una coincidencia ocurre cuando ambos usuarios dan me gusta a los artÃculos del otro!";case"fr":return"Aucune correspondance trouvée pour l'instant. Une correspondance se produit lorsque les deux utilisateurs aiment les objets de l'autre !";case"de":return"Noch keine Ãbereinstimmungen gefunden. Eine Ãbereinstimmung entsteht, wenn beide Benutzer die Artikel des anderen mögen!";case"pt":return"Nenhuma combinação encontrada ainda. Uma combinação acontece quando ambos os usuários curtem os itens um do outro!";default:return"No matches found yet. A match happens when both users like each other's items!"}},{data:f=[],isLoading:x,refetch:b}=X({queryKey:["matches"],queryFn:async()=>{try{const{data:{user:n}}=await c.auth.getUser();if(!n)return u.error("Please log in to view matches"),[];console.log("Current user ID:",n.id);const{data:j,error:N}=await c.from("items").select("id").eq("user_id",n.id);if(N)throw console.error("Error fetching user items:",N),N;if(!(j!=null&&j.length))return console.log("User has no items"),[];const m=j.map(d=>d.id);console.log("User item IDs:",m);const{data:g,error:y}=await c.from("matches").select(` 2 id, 3 status, 4 item1_id, 5 item2_id, 6 items1:items!matches_item1_id_fkey ( 7 id, title, image_url, description, model, year, category, condition, 8 user_id, 9 profiles!items_user_id_fkey (id, username) 10 ), 11 items2:items!matches_item2_id_fkey ( 12 id, title, image_url, description, model, year, category, condition, 13 user_id, 14 profiles!items_user_id_fkey (id, username) 15 )
16 `).or("status.eq.active,status.eq.pending").or(`item1_id.in.(${m.join(",")}),item2_id.in.(${m.join(",")})`).order("created_at",{ascending:!1});if(y)throw console.error("Error fetching matches:",y),y;console.log("Raw matches data:",g);const v=(g||[]).map(d=>{var U,_;const C=m.includes((U=d.items1)==null?void 0:U.id),i=C?d.items1:d.items2,s=C?d.items2:d.items1;return console.log("Processing match:",{matchId:d.id,isItem1Mine:C,myItemId:i==null?void 0:i.id,otherItemId:s==null?void 0:s.id}),{id:d.id,userItem:{id:i==null?void 0:i.id,title:i==null?void 0:i.title,imageUrl:i==null?void 0:i.image_url,description:i==null?void 0:i.description,model:i==null?void 0:i.model,year:i==null?void 0:i.year,category:i==null?void 0:i.category,condition:i==null?void 0:i.condition},otherItem:{id:s==null?void 0:s.id,title:s==null?void 0:s.title,imageUrl:s==null?void 0:s.image_url,userName:((_=s==null?void 0:s.profiles)==null?void 0:_.username)||"Unknown User",userId:s==null?void 0:s.user_id,description:s==null?void 0:s.description,model:s==null?void 0:s.model,year:s==null?void 0:s.year,category:s==null?void 0:s.category,condition:s==null?void 0:s.condition}}});return console.log("Transformed matches:",v),v}catch(n){return console.error("Error fetching matches:",n),u.error("Failed to load matches"),[]}}});l.useEffect(()=>{console.log("Setting up realtime subscription");const n=c.channel("matches_changes").on("postgres_changes",{event:"*",schema:"public",table:"matches"},()=>{console.log("Matches updated, refetching..."),b()}).subscribe();return()=>{console.log("Cleaning up subscription"),c.removeChannel(n)}},[b]);const E=()=>{b()};return x?e.jsx("div",{className:"text-center py-4",children:p()}):f.length===0?e.jsx("div",{className:"text-center py-4 text-gray-500",children:h()}):e.jsx("div",{className:"space-y-3",children:f.map(n=>e.jsx(fe,{match:n,onMatchDeleted:E},n.id))})},Se=()=>{l.useEffect(()=>{window.scrollTo(0,0)},[]);const{language:r}=A(),I=()=>{switch(r){case"pl":return"Dopasowania";case"es":return"Coincidencias";case"fr":return"Correspondances";case"de":return"Ãbereinstimmungen";case"pt":return"Combinações";default:return"Matches"}};return e.jsx(pe,{feature:"Matches",children:e.jsx(Q,{children:e.jsxs("div",{className:"min-h-screen bg-[#F8F9FB]",children:[e.jsxs("header",{className:"bg-white/80 backdrop-blur-sm border-b border-gray-200/50 p-4",children:[e.jsx("div",{className:"flex justify-center mb-4",children:e.jsx(W,{})}),e.jsx("div",{className:"bg-[#005B7C] text-white p-3 rounded-lg shadow-md",children:e.jsx("h1",{className:"text-xl font-semibold text-center",children:I()})})]}),e.jsx("div",{className:"p-4 max-w-2xl mx-auto",children:e.jsx(xe,{})})]})})})};export{Se as default};
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.