NeahNew/.next/server/app/api/rocket-chat/messages/route.js
2025-05-06 23:01:34 +02:00

1 line
11 KiB
JavaScript

(()=>{var e={};e.id=3540,e.ids=[3540],e.modules={3295:e=>{"use strict";e.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},10846:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11723:e=>{"use strict";e.exports=require("querystring")},12269:(e,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0})},12412:e=>{"use strict";e.exports=require("assert")},14985:e=>{"use strict";e.exports=require("dns")},19854:(e,r,s)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var t={};Object.defineProperty(r,"default",{enumerable:!0,get:function(){return n.default}});var o=s(12269);Object.keys(o).forEach(function(e){!("default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(t,e))&&(e in r&&r[e]===o[e]||Object.defineProperty(r,e,{enumerable:!0,get:function(){return o[e]}}))});var n=function(e,r){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var s=a(r);if(s&&s.has(e))return s.get(e);var t={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in e)if("default"!==n&&({}).hasOwnProperty.call(e,n)){var i=o?Object.getOwnPropertyDescriptor(e,n):null;i&&(i.get||i.set)?Object.defineProperty(t,n,i):t[n]=e[n]}return t.default=e,s&&s.set(e,t),t}(s(35426));function a(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,s=new WeakMap;return(a=function(e){return e?s:r})(e)}Object.keys(n).forEach(function(e){!("default"===e||"__esModule"===e||Object.prototype.hasOwnProperty.call(t,e))&&(e in r&&r[e]===n[e]||Object.defineProperty(r,e,{enumerable:!0,get:function(){return n[e]}}))})},21820:e=>{"use strict";e.exports=require("os")},22553:(e,r,s)=>{"use strict";s.r(r),s.d(r,{patchFetch:()=>h,routeModule:()=>d,serverHooks:()=>g,workAsyncStorage:()=>m,workUnitAsyncStorage:()=>f});var t={};s.r(t),s.d(t,{GET:()=>p});var o=s(96559),n=s(48088),a=s(37719),i=s(19854),c=s(26690),u=s(32190),l=s(36781);async function p(e){try{let r=await (0,i.getServerSession)(c.N);if(!r?.user?.email)return console.error("No valid session or email found"),u.NextResponse.json({messages:[]},{status:200});let s=new URL(e.url);if("true"!==s.searchParams.get("refresh")){let e=await (0,l.nF)(r.user.id);if(e)return console.log(`Using cached messages data for user ${r.user.id}`),u.NextResponse.json(e)}let t="https://parole.slm-lab.net/channel/City".split("/channel")[0];if(!t)return console.error("Failed to get Rocket.Chat base URL"),u.NextResponse.json({error:"Server configuration error"},{status:500});console.log("Using Rocket.Chat base URL:",t);let o={"X-Auth-Token":process.env.ROCKET_CHAT_TOKEN,"X-User-Id":process.env.ROCKET_CHAT_USER_ID,"Content-Type":"application/json"},n=r.user.email.split("@")[0];if(!n)return console.error("No username found in session email"),u.NextResponse.json({messages:[]},{status:200});let a=await fetch(`${t}/api/v1/users.list`,{method:"GET",headers:o});if(!a.ok)return console.error("Failed to get users list:",a.status),u.NextResponse.json({messages:[]},{status:200});let p=await a.json();console.log("Users list response:",{success:p.success,count:p.count,usersCount:p.users?.length});let d=p.users.find(e=>e.username===n||e.emails?.some(e=>e.address===r.user.email));if(!d)return console.error("User not found in users list"),u.NextResponse.json({messages:[]},{status:200});console.log("Found Rocket.Chat user:",{username:d.username,id:d._id});let m=await fetch(`${t}/api/v1/users.createToken`,{method:"POST",headers:o,body:JSON.stringify({userId:d._id})});if(!m.ok){console.error("Failed to create user token:",m.status);let e=await m.text();return console.error("Create token error details:",e),u.NextResponse.json({messages:[]},{status:200})}let f={"X-Auth-Token":(await m.json()).data.authToken,"X-User-Id":d._id,"Content-Type":"application/json"},g=await fetch(`${t}/api/v1/subscriptions.get`,{method:"GET",headers:f});if(!g.ok){console.error("Failed to get subscriptions:",g.status);let e=await g.text();return console.error("Subscriptions error details:",e),u.NextResponse.json({messages:[]},{status:200})}let h=await g.json();if(!h.success||!Array.isArray(h.update))return console.error("Invalid subscriptions response structure"),u.NextResponse.json({messages:[]},{status:200});let _=h.update.filter(e=>!!(e.unread>0||e.alert)&&["d","c","p"].includes(e.t));console.log("Filtered user subscriptions:",{userId:d._id,username:d.username,totalSubscriptions:_.length,subscriptionDetails:_.map(e=>({type:e.t,name:e.fname||e.name,rid:e.rid,alert:e.alert,unread:e.unread,userMentions:e.userMentions}))});let k={};for(let e of _)try{let r;switch(e.t){case"c":r="channels.messages";break;case"p":r="groups.messages";break;case"d":r="im.messages";break;default:continue}let s=new URLSearchParams({roomId:e.rid,count:String(Math.max(e.unread,5))}),o=await fetch(`${t}/api/v1/${r}?${s}`,{method:"GET",headers:f});if(!o.ok){console.error(`Failed to get messages for room ${e.name}:`,o.status);continue}let n=await o.json();if(console.log(`Messages for room ${e.fname||e.name}:`,{success:n.success,count:n.count,hasMessages:n.messages?.length>0}),n.success&&n.messages?.length>0){let r=n.messages.filter(r=>!(r.u._id===d._id||"c"===e.t&&(!r.msg||r.t||!r.u||r.msg.includes("has joined the channel")||r.msg.includes("has left the channel")||r.msg.includes("added")||r.msg.includes("removed"))));if(r.length>0){let s=r[0],o=s.u||{},n=o.username||"unknown";if(o._id===d._id)continue;let a=e.fname||e.name,i=o.name||n,c=s.msg||"";c.includes("started a call")&&(c="\uD83D\uDCDE Call received");let u=new Date(s.ts),l=new Date,p="";p=isNaN(u.getTime())?"Invalid Date":u.toDateString()===l.toDateString()?u.toLocaleTimeString("fr-FR",{hour:"2-digit",minute:"2-digit"}):u.toLocaleDateString("fr-FR",{day:"2-digit",month:"short"});let m=i.split(" ").map(e=>e[0]).slice(0,2).join("").toUpperCase(),f={id:s._id,text:c,timestamp:p,rawTimestamp:s.ts,roomName:a,roomType:e.t,sender:{_id:o._id,username:n,name:i,initials:m,color:function(e){let r=["#FF7452","#4CAF50","#2196F3","#9C27B0","#FF9800","#00BCD4","#795548","#607D8B"],s=e.split("").reduce((e,r)=>e+r.charCodeAt(0),0)%r.length;return r[s]}(n)},isOwnMessage:o._id===d._id,room:{id:e.rid,type:e.t,name:a,isChannel:"c"===e.t,isPrivateGroup:"p"===e.t,isDirect:"d"===e.t,link:`${t}/${"d"===e.t?"direct":"p"===e.t?"group":"channel"}/${e.name}`,unread:e.unread,alert:e.alert,userMentions:e.userMentions}};(!k[e.rid]||new Date(s.ts).getTime()>new Date(k[e.rid].rawTimestamp).getTime())&&(k[e.rid]=f)}}}catch(r){console.error(`Error fetching messages for room ${e.name}:`,r);continue}let w={messages:Object.values(k).sort((e,r)=>{let s=new Date(e.rawTimestamp);return new Date(r.rawTimestamp).getTime()-s.getTime()}).slice(0,10),total:Object.keys(k).length,hasMore:Object.keys(k).length>10};return await (0,l.pO)(r.user.id,w),u.NextResponse.json(w)}catch(e){return console.error("Error fetching messages:",e),u.NextResponse.json({error:"Failed to fetch messages"},{status:500})}}let d=new o.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/rocket-chat/messages/route",pathname:"/api/rocket-chat/messages",filename:"route",bundlePath:"app/api/rocket-chat/messages/route"},resolvedPagePath:"/Users/alma/Documents/NeahNew/app/api/rocket-chat/messages/route.ts",nextConfigOutput:"",userland:t}),{workAsyncStorage:m,workUnitAsyncStorage:f,serverHooks:g}=d;function h(){return(0,a.patchFetch)({workAsyncStorage:m,workUnitAsyncStorage:f})}},26690:(e,r,s)=>{"use strict";s.d(r,{N:()=>i});var t=s(1926),o=s(10591);function n(e){let r=process.env[e];if(!r)throw Error(`Missing required environment variable: ${e}`);return r}async function a(e){try{let r=await fetch(`${process.env.KEYCLOAK_ISSUER}/protocol/openid-connect/token`,{headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:process.env.KEYCLOAK_CLIENT_ID,client_secret:process.env.KEYCLOAK_CLIENT_SECRET,grant_type:"refresh_token",refresh_token:e.refreshToken||""}),method:"POST"}),s=await r.json();if(!r.ok)throw s;return{...e,accessToken:s.access_token,refreshToken:s.refresh_token??e.refreshToken,accessTokenExpires:Date.now()+1e3*s.expires_in}}catch(r){return console.error("Error refreshing access token:",r),{...e,error:"RefreshAccessTokenError"}}}let i={providers:[(0,t.A)({clientId:n("KEYCLOAK_CLIENT_ID"),clientSecret:n("KEYCLOAK_CLIENT_SECRET"),issuer:n("KEYCLOAK_ISSUER"),authorization:{params:{scope:"openid profile email roles"}},profile(e){console.log("Keycloak profile callback:",{rawProfile:e,rawRoles:e.roles,realmAccess:e.realm_access,groups:e.groups});let r=e.realm_access?.roles||[];console.log("Profile callback raw roles:",r);let s=r.map(e=>e.replace(/^ROLE_/,"").toLowerCase());return console.log("Profile callback cleaned roles:",s),{id:e.sub,name:e.name??e.preferred_username,email:e.email,first_name:e.given_name??"",last_name:e.family_name??"",username:e.preferred_username??e.email?.split("@")[0]??"",role:s}}})],session:{strategy:"jwt",maxAge:2592e3},callbacks:{async jwt({token:e,account:r,profile:s}){if(r&&s){let t=(s.realm_access?.roles||[]).map(e=>e.replace(/^ROLE_/,"").toLowerCase());e.accessToken=r.access_token??"",e.refreshToken=r.refresh_token??"",e.accessTokenExpires=r.expires_at??0,e.sub=s.sub,e.role=t,e.username=s.preferred_username??"",e.first_name=s.given_name??"",e.last_name=s.family_name??""}else if(e.accessToken)try{let r=(0,o.s)(e.accessToken);r.realm_access?.roles&&(e.role=r.realm_access.roles.map(e=>e.replace(/^ROLE_/,"").toLowerCase()))}catch(e){console.error("Error decoding token:",e)}return Date.now()<1e3*e.accessTokenExpires?e:a(e)},async session({session:e,token:r}){if(r.error)throw Error(r.error);let s=Array.isArray(r.role)?r.role:[];return e.user={id:r.sub??"",email:r.email??null,name:r.name??null,image:null,username:r.username??"",first_name:r.first_name??"",last_name:r.last_name??"",role:s,nextcloudInitialized:!1},e.accessToken=r.accessToken,e}},pages:{signIn:"/signin",error:"/signin"},debug:!1}},27910:e=>{"use strict";e.exports=require("stream")},28354:e=>{"use strict";e.exports=require("util")},29294:e=>{"use strict";e.exports=require("next/dist/server/app-render/work-async-storage.external.js")},34631:e=>{"use strict";e.exports=require("tls")},41204:e=>{"use strict";e.exports=require("string_decoder")},44870:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},55511:e=>{"use strict";e.exports=require("crypto")},55591:e=>{"use strict";e.exports=require("https")},63033:e=>{"use strict";e.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},74075:e=>{"use strict";e.exports=require("zlib")},78335:()=>{},79428:e=>{"use strict";e.exports=require("buffer")},79551:e=>{"use strict";e.exports=require("url")},81630:e=>{"use strict";e.exports=require("http")},83997:e=>{"use strict";e.exports=require("tty")},91645:e=>{"use strict";e.exports=require("net")},94735:e=>{"use strict";e.exports=require("events")},96487:()=>{}};var r=require("../../../../webpack-runtime.js");r.C(e);var s=e=>r(r.s=e),t=r.X(0,[4243,5419,580,8794,1642,6781],()=>s(22553));module.exports=t})();