KI-AGENT: Matrix-Chat live aktualisieren
This commit is contained in:
@@ -22,6 +22,13 @@ type MatrixRoomEvent = {
|
||||
}
|
||||
}
|
||||
|
||||
type MatrixJoinedMembersResponse = {
|
||||
joined: Record<string, {
|
||||
display_name?: string
|
||||
avatar_url?: string
|
||||
}>
|
||||
}
|
||||
|
||||
const trimTrailingSlash = (value: string) => value.replace(/\/+$/, "")
|
||||
const readLocalDevRegistrationSharedSecret = () => {
|
||||
if (process.env.NODE_ENV === "production") return ""
|
||||
@@ -687,6 +694,10 @@ export function matrixService(server: FastifyInstance) {
|
||||
`/_matrix/client/v3/rooms/${encodeURIComponent(room.roomId)}/messages?dir=b&limit=50`,
|
||||
session.accessToken
|
||||
)
|
||||
const members = await requestMatrixJson<MatrixJoinedMembersResponse>(
|
||||
`/_matrix/client/v3/rooms/${encodeURIComponent(room.roomId)}/joined_members`,
|
||||
session.accessToken
|
||||
)
|
||||
|
||||
return {
|
||||
roomId: room.roomId,
|
||||
@@ -697,6 +708,7 @@ export function matrixService(server: FastifyInstance) {
|
||||
.map((event) => ({
|
||||
id: event.event_id,
|
||||
sender: event.sender,
|
||||
senderDisplayName: members.joined[event.sender]?.display_name || event.sender,
|
||||
body: event.content?.body || "",
|
||||
timestamp: event.origin_server_ts,
|
||||
own: event.sender === session.matrixUserId,
|
||||
@@ -705,6 +717,33 @@ export function matrixService(server: FastifyInstance) {
|
||||
}
|
||||
}
|
||||
|
||||
const getGeneralRoomMembers = async (userId: string, tenantId: number | null) => {
|
||||
const room = await provisionTenantRoom(userId, tenantId, {
|
||||
key: "allgemein",
|
||||
name: "Allgemeiner Chat",
|
||||
})
|
||||
|
||||
const session = await ensureCurrentUserJoinedRoom(userId, tenantId, {
|
||||
roomId: room.roomId,
|
||||
alias: room.alias,
|
||||
})
|
||||
const members = await requestMatrixJson<MatrixJoinedMembersResponse>(
|
||||
`/_matrix/client/v3/rooms/${encodeURIComponent(room.roomId)}/joined_members`,
|
||||
session.accessToken
|
||||
)
|
||||
|
||||
return {
|
||||
roomId: room.roomId,
|
||||
alias: room.alias,
|
||||
members: Object.entries(members.joined).map(([matrixUserId, member]) => ({
|
||||
matrixUserId,
|
||||
displayName: member.display_name || matrixUserId,
|
||||
avatarUrl: member.avatar_url || null,
|
||||
own: matrixUserId === session.matrixUserId,
|
||||
})),
|
||||
}
|
||||
}
|
||||
|
||||
const sendGeneralRoomMessage = async (
|
||||
userId: string,
|
||||
tenantId: number | null,
|
||||
@@ -746,6 +785,7 @@ export function matrixService(server: FastifyInstance) {
|
||||
return {
|
||||
id: response.event_id,
|
||||
sender: session.matrixUserId,
|
||||
senderDisplayName: await getCurrentUserDisplayName(userId, tenantId),
|
||||
body: message,
|
||||
timestamp: Date.now(),
|
||||
own: true,
|
||||
@@ -765,6 +805,7 @@ export function matrixService(server: FastifyInstance) {
|
||||
provisionTenantRoom,
|
||||
createAccessTokenForUser,
|
||||
getGeneralRoomMessages,
|
||||
getGeneralRoomMembers,
|
||||
sendGeneralRoomMessage,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user