@@ -112,49 +112,41 @@ export function useSessionMessages(session?: UseSessionReturn): UseSessionMessag
112112 return merged ;
113113 } , [ transcriptionMessages , chat . chatMessages ] ) ;
114114
115- const [ messageFirstReceivedTimeMap , setMessageFirstReceivedTime ] = React . useState (
115+ const messageFirstReceivedTimeMapRef = React . useRef (
116116 new Map < ReceivedMessage [ 'id' ] , Date > ( ) ,
117117 ) ;
118- React . useEffect ( ( ) => {
119- setMessageFirstReceivedTime ( ( oldMap ) => {
120- const newMap = new Map ( oldMap ) ;
118+ const sortedReceivedMessages = React . useMemo ( ( ) => {
119+ const now = new Date ( ) ;
120+ for ( const message of receivedMessages ) {
121+ if ( messageFirstReceivedTimeMapRef . current . has ( message . id ) ) {
122+ continue ;
123+ }
121124
122- const now = new Date ( ) ;
123- for ( const message of receivedMessages ) {
124- if ( newMap . has ( message . id ) ) {
125- continue ;
126- }
125+ messageFirstReceivedTimeMapRef . current . set ( message . id , now ) ;
126+ }
127127
128- newMap . set ( message . id , now ) ;
128+ return receivedMessages . sort ( ( a , b ) => {
129+ const aFirstReceivedAt = messageFirstReceivedTimeMapRef . current . get ( a . id ) ;
130+ const bFirstReceivedAt = messageFirstReceivedTimeMapRef . current . get ( b . id ) ;
131+ if ( typeof aFirstReceivedAt === 'undefined' || typeof bFirstReceivedAt === 'undefined' ) {
132+ return 0 ;
129133 }
130134
131- return newMap ;
135+ return aFirstReceivedAt . getTime ( ) - bFirstReceivedAt . getTime ( ) ;
132136 } ) ;
133137 } , [ receivedMessages ] ) ;
134138
135139 const previouslyReceivedMessageIdsRef = React . useRef ( new Set ( ) ) ;
136140 React . useEffect ( ( ) => {
137- for ( const message of receivedMessages ) {
141+ for ( const message of sortedReceivedMessages ) {
138142 if ( previouslyReceivedMessageIdsRef . current . has ( message . id ) ) {
139143 continue ;
140144 }
141145
142146 previouslyReceivedMessageIdsRef . current . add ( message . id ) ;
143147 emitter . emit ( MessagesEvent . MessageReceived , message ) ;
144148 }
145- } , [ receivedMessages ] ) ;
146-
147- const sortedReceivedMessages = React . useMemo ( ( ) => {
148- return receivedMessages . sort ( ( a , b ) => {
149- const aFirstReceivedAt = messageFirstReceivedTimeMap . get ( a . id ) ;
150- const bFirstReceivedAt = messageFirstReceivedTimeMap . get ( b . id ) ;
151- if ( typeof aFirstReceivedAt === 'undefined' || typeof bFirstReceivedAt === 'undefined' ) {
152- return 0 ;
153- }
154-
155- return aFirstReceivedAt . getTime ( ) - bFirstReceivedAt . getTime ( ) ;
156- } ) ;
157- } , [ receivedMessages , messageFirstReceivedTimeMap ] ) ;
149+ } , [ sortedReceivedMessages ] ) ;
158150
159151 return React . useMemo (
160152 ( ) => ( {
0 commit comments