11/* eslint-disable camelcase */
2- import type { Participant , Room , ChatMessage , SendTextOptions } from 'livekit-client' ;
2+ import type { Room , SendTextOptions } from 'livekit-client' ;
33import { compareVersions , RoomEvent } from 'livekit-client' ;
44import { BehaviorSubject , Subject , scan , map , takeUntil , from , filter } from 'rxjs' ;
55import {
@@ -9,15 +9,10 @@ import {
99 setupDataMessageHandler ,
1010} from '../observables/dataChannel' ;
1111import { log } from '../logger' ;
12+ import { ChatMessage , ReceivedChatMessage } from '../messages/types' ;
1213
1314/** @public */
14- export type { ChatMessage } ;
15-
16- /** @public */
17- export interface ReceivedChatMessage extends ChatMessage {
18- from ?: Participant ;
19- attributes ?: Record < string , string > ;
20- }
15+ export type { ChatMessage , ReceivedChatMessage } ;
2116
2217export interface LegacyChatMessage extends ChatMessage {
2318 ignoreLegacy ?: boolean ;
@@ -55,7 +50,9 @@ function isIgnorableChatMessage(msg: ReceivedChatMessage | LegacyReceivedChatMes
5550}
5651
5752const decodeLegacyMsg = ( message : Uint8Array ) =>
58- JSON . parse ( new TextDecoder ( ) . decode ( message ) ) as LegacyReceivedChatMessage | ReceivedChatMessage ;
53+ JSON . parse ( new TextDecoder ( ) . decode ( message ) ) as
54+ | LegacyReceivedChatMessage
55+ | Exclude < ReceivedChatMessage , 'type' > ;
5956
6057const encodeLegacyMsg = ( message : LegacyChatMessage ) =>
6158 new TextEncoder ( ) . encode ( JSON . stringify ( message ) ) ;
@@ -93,8 +90,9 @@ export function setupChat(room: Room, options?: ChatOptions) {
9390 timestamp,
9491 message : chunk ,
9592 from : room . getParticipantByIdentity ( participantInfo . identity ) ,
93+ type : 'chatMessage' ,
9694 // editTimestamp: type === 'update' ? timestamp : undefined,
97- } as ReceivedChatMessage ;
95+ } satisfies ReceivedChatMessage ;
9896 } ) ,
9997 ) ;
10098 streamObservable . subscribe ( {
@@ -111,7 +109,11 @@ export function setupChat(room: Room, options?: ChatOptions) {
111109 if ( isIgnorableChatMessage ( parsedMessage ) ) {
112110 return undefined ;
113111 }
114- const newMessage : ReceivedChatMessage = { ...parsedMessage , from : msg . from } ;
112+ const newMessage : ReceivedChatMessage = {
113+ ...parsedMessage ,
114+ type : 'chatMessage' ,
115+ from : msg . from ,
116+ } ;
115117 return newMessage ;
116118 } ) ,
117119 filter ( ( msg ) => ! ! msg ) ,
@@ -169,6 +171,7 @@ export function setupChat(room: Room, options?: ChatOptions) {
169171
170172 const receivedChatMsg : ReceivedChatMessage = {
171173 ...chatMsg ,
174+ type : 'chatMessage' ,
172175 from : room . localParticipant ,
173176 attributes : options . attributes ,
174177 } ;
0 commit comments