![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/lavocat.ca/private_html/.next/server/pages/api/ |
"use strict";(()=>{var e={};e.id=2832,e.ids=[2832],e.modules={4722:e=>{e.exports=require("next-auth/react")},8667:(e,t)=>{Object.defineProperty(t,"A",{enumerable:!0,get:function(){return a}});var a=function(e){return e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE",e.IMAGE="IMAGE",e}({})},24590:(e,t,a)=>{a.a(e,async(e,r)=>{try{a.r(t),a.d(t,{config:()=>l,default:()=>c,routeModule:()=>m});var s=a(33480),o=a(8667),i=a(86435),n=a(53217),d=e([n]);n=(d.then?(await d)():d)[0];let c=(0,i.M)(n,"default"),l=(0,i.M)(n,"config"),m=new s.PagesAPIRouteModule({definition:{kind:o.A.PAGES_API,page:"/api/_ws",pathname:"/api/_ws",bundlePath:"",filename:""},userland:n});r()}catch(e){r(e)}})},33480:(e,t,a)=>{e.exports=a(75600)},53217:(e,t,a)=>{a.a(e,async(e,r)=>{try{a.r(t),a.d(t,{config:()=>p,default:()=>_});var s=a(96287),o=a(4722),i=a(76760),n=e([s]);s=(n.then?(await n)():n)[0];let d=new Map,c=new Map,l=new Map,m=new Set,u=async(e,t,a,r)=>{try{await i.z.notification.create({data:{userId:e,type:t,title:E(t),message:a,data:r?JSON.stringify(r):null,isRead:!1}})}catch(e){console.error("Error creating notification:",e)}},E=e=>{switch(e){case"follow":return"New Follower";case"friend_request":return"Friend Request";case"endorsement":return"New Endorsement";case"message":return"New Message";case"profile_view":return"Profile Viewed";default:return"Notification"}},p={api:{bodyParser:!1}},_=async(e,t)=>{if(!t.socket.server.io){console.log("Setting up WebSocket server...");let e=t.socket.server,a=new s.Server(e,{path:"/api/_ws",addTrailingSlash:!1,cors:{origin:process.env.NEXTAUTH_URL||"http://localhost:3000",methods:["GET","POST"]}});a.use(async(e,t)=>{try{let a=await (0,o.getSession)({req:e.request});if(!a?.user?.id)return t(Error("Unauthorized"));e.data.user=a.user,t()}catch(e){t(Error("Authentication failed"))}}),a.on("connection",e=>{let t=e.data.user.id,r=e.data.user.name;console.log(`User ${r} connected to WebSocket`),l.set(t,e.id),m.add(t),e.broadcast.emit("USER_STATUS_UPDATE",{userId:t,status:"online",timestamp:Date.now()}),e.on("JOIN_CASE_CHAT",async t=>{try{let{caseId:a}=t,r=e.data.user.id,s=e.data.user.name,o=e.data.user.image,n=e.data.user.role||"USER",c=await i.z.legalCase.findUnique({where:{id:a},select:{id:!0,isPublic:!0,status:!0}});if(!c||!c.isPublic)return void e.emit("error",{message:"Case not found or not public"});e.join(`case_${a}`),d.has(a)||d.set(a,new Set),d.get(a).add(r),e.to(`case_${a}`).emit("CASE_USER_JOINED",{caseId:a,userId:r,userName:s,userAvatar:o,userRole:n,timestamp:Date.now()}),e.emit("CASE_CHAT_JOINED",{caseId:a,userId:r,timestamp:Date.now()}),console.log(`User ${s} joined case chat: ${a}`)}catch(t){console.error("Error joining case chat:",t),e.emit("error",{message:"Failed to join case chat"})}}),e.on("LEAVE_CASE_CHAT",async t=>{try{let{caseId:a}=t,r=e.data.user.id,s=e.data.user.name;e.leave(`case_${a}`);let o=d.get(a);o&&(o.delete(r),0===o.size&&d.delete(a));let i=c.get(a);i&&(i.delete(r),0===i.size&&c.delete(a)),e.to(`case_${a}`).emit("CASE_USER_LEFT",{caseId:a,userId:r,userName:s,timestamp:Date.now()}),e.emit("CASE_CHAT_LEFT",{caseId:a,userId:r,timestamp:Date.now()}),console.log(`User ${s} left case chat: ${a}`)}catch(t){console.error("Error leaving case chat:",t),e.emit("error",{message:"Failed to leave case chat"})}}),e.on("CASE_MESSAGE",async t=>{try{let{caseId:r,content:s,isPublic:o}=t,n=e.data.user.id,d=e.data.user.name,c=e.data.user.image,l=e.data.user.role||"USER",m=await i.z.legalCase.findUnique({where:{id:r},select:{id:!0,isPublic:!0,status:!0}});if(!m||!m.isPublic)return void e.emit("error",{message:"Case not found or not public"});let u={id:`msg_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,caseId:r,content:s.trim(),senderId:n,senderName:d,senderAvatar:c,senderRole:l,timestamp:Date.now(),isPublic:o,reactions:{}};if(o)try{await i.z.caseChatMessage.create({data:{caseId:r,content:u.content,senderId:n,senderName:d,senderAvatar:c,senderRole:l,isPublic:!0}})}catch(e){console.error("Error saving case chat message to database:",e)}a.to(`case_${r}`).emit("CASE_MESSAGE",{type:"CASE_MESSAGE",data:u}),console.log(`Case chat message sent by ${d} in case ${r}: ${s.substring(0,50)}...`)}catch(t){console.error("Error sending case chat message:",t),e.emit("error",{message:"Failed to send message"})}}),e.on("CASE_TYPING",t=>{try{let{caseId:a,isTyping:r}=t,s=e.data.user.id,o=e.data.user.name;c.has(a)||c.set(a,new Map);let i=c.get(a);r?i.set(s,{...t,userId:s,userName:o}):i.delete(s),e.to(`case_${a}`).emit("CASE_TYPING",{type:"CASE_TYPING",data:{caseId:a,userId:s,userName:o,isTyping:r,timestamp:Date.now()}})}catch(e){console.error("Error handling case typing indicator:",e)}}),e.on("JOIN_ROOM",async t=>{try{let{chatRoomId:a}=t,r=e.data.user.id;if(!await i.z.chatRoom.findFirst({where:{id:a,participants:{some:{userId:r}}}}))return void e.emit("error",{message:"Access denied to chat room"});e.join(a),e.emit("ROOM_JOINED",{chatRoomId:a})}catch(t){console.error("Error joining room:",t),e.emit("error",{message:"Failed to join room"})}}),e.on("LEAVE_ROOM",t=>{let{chatRoomId:a}=t;e.leave(a),e.emit("ROOM_LEFT",{chatRoomId:a})}),e.on("TYPING",t=>{let{roomId:a,isTyping:r}=t;e.to(a).emit("TYPING",{roomId:a,userId:e.data.user.id,userName:e.data.user.name,isTyping:r,timestamp:Date.now()})}),e.on("PRESENCE_UPDATE",t=>{e.broadcast.emit("PRESENCE_UPDATE",{userId:e.data.user.id,status:t.status,timestamp:Date.now()})}),e.on("disconnect",()=>{let t=e.data.user.id,a=e.data.user.name;console.log(`User ${a} disconnected from WebSocket`),l.delete(t),m.delete(t),e.broadcast.emit("USER_STATUS_UPDATE",{userId:t,status:"offline",timestamp:Date.now()}),d.forEach((r,s)=>{r.has(t)&&(r.delete(t),e.to(`case_${s}`).emit("CASE_USER_LEFT",{caseId:s,userId:t,userName:a,timestamp:Date.now()}),0===r.size&&d.delete(s))}),c.forEach((r,s)=>{r.has(t)&&(r.delete(t),e.to(`case_${s}`).emit("CASE_TYPING",{type:"CASE_TYPING",data:{caseId:s,userId:t,userName:a,isTyping:!1,timestamp:Date.now()}}),0===r.size&&c.delete(s))})}),e.on("ping",()=>{e.emit("pong")}),e.on("PROFILE_INTERACTION",async t=>{try{let{type:r,toUserId:s,data:o}=t,i=e.data.user.id,n=e.data.user.name,d=e.data.user.image,c={type:r,fromUserId:i,fromUserName:n,fromUserAvatar:d,toUserId:s,timestamp:Date.now(),data:o};try{switch(r){case"follow":await u(s,"follow",`${n} started following you`,{fromUserId:i,fromUserName:n,fromUserAvatar:d});break;case"friend_request":await u(s,"friend_request",`${n} sent you a friend request`,{fromUserId:i,fromUserName:n,fromUserAvatar:d});break;case"endorse":let e=o?.text||"endorsed your profile";await u(s,"endorsement",`${n} ${e}`,{fromUserId:i,fromUserName:n,fromUserAvatar:d,endorsementText:e})}}catch(e){console.error("Error saving profile interaction to database:",e)}let m=l.get(s);m&&a.to(m).emit("PROFILE_INTERACTION",{type:"PROFILE_INTERACTION",data:c}),e.broadcast.emit("PROFILE_ACTIVITY",{type:"PROFILE_ACTIVITY",data:c}),console.log(`Profile interaction: ${n} ${r} ${s}`)}catch(t){console.error("Error handling profile interaction:",t),e.emit("error",{message:"Failed to process profile interaction"})}}),e.on("ONLINE_STATUS",t=>{let a=e.data.user.id,{status:r}=t;"online"===r?m.add(a):"offline"===r&&m.delete(a),e.broadcast.emit("USER_STATUS_UPDATE",{userId:a,status:r,timestamp:Date.now()})}),e.on("PROFILE_VIEW",async t=>{try{let{targetUserId:r}=t,s=e.data.user.id,o=e.data.user.name;if(s===r)return;Date.now();let i=l.get(r);i&&a.to(i).emit("PROFILE_VIEWED",{type:"PROFILE_VIEWED",data:{viewerId:s,viewerName:o,timestamp:Date.now()}}),console.log(`Profile view: ${o} viewed ${r}`)}catch(e){console.error("Error handling profile view:",e)}}),e.emit("connected",{userId:e.data.user.id,userName:e.data.user.name,timestamp:Date.now()})}),t.socket.server.io=a}t.end()};r()}catch(e){r(e)}})},75600:e=>{e.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:(e,t,a)=>{a.d(t,{z:()=>s});var r=a(96330);let s=globalThis.prisma??new r.PrismaClient({log:["error"]})},86435:(e,t)=>{Object.defineProperty(t,"M",{enumerable:!0,get:function(){return function e(t,a){return a in t?t[a]:"then"in t&&"function"==typeof t.then?t.then(t=>e(t,a)):"function"==typeof t&&"default"===a?t:void 0}}})},96287:e=>{e.exports=import("socket.io")},96330:e=>{e.exports=require("@prisma/client")}};var t=require("../../webpack-api-runtime.js");t.C(e);var a=t(t.s=24590);module.exports=a})();