55 getVoiceDurationInSeconds ,
66 getVoiceWidth
77} from '~/lib/chat/formatters'
8+ import { createPerfTrace } from '~/lib/chat/perf-logger'
89import { createMessageNormalizer , dedupeMessagesById } from '~/lib/chat/message-normalizer'
910
1011export const useChatMessages = ( {
@@ -410,9 +411,15 @@ export const useChatMessages = ({
410411 const loadMessages = async ( { username, reset } ) => {
411412 if ( ! username || ! selectedAccount . value ) return
412413
413- logMessagePhase ( 'loadMessages:enter' , {
414- username,
415- reset
414+ const trace = createPerfTrace ( 'chat-messages' , {
415+ account : String ( selectedAccount . value || '' ) . trim ( ) ,
416+ selectedUsername : String ( selectedContact . value ?. username || '' ) . trim ( ) ,
417+ username : String ( username || '' ) . trim ( ) ,
418+ reset : ! ! reset
419+ } )
420+
421+ trace . log ( 'loadMessages:enter' , {
422+ activeMessagesFor : String ( activeMessagesFor . value || '' ) . trim ( )
416423 } )
417424 messagesError . value = ''
418425 isLoadingMessages . value = true
@@ -438,46 +445,37 @@ export const useChatMessages = ({
438445 if ( realtimeEnabled . value ) {
439446 params . source = 'realtime'
440447 }
441- logMessagePhase ( 'loadMessages:request:start' , {
442- username,
443- reset,
448+ trace . log ( 'loadMessages:request:start' , {
444449 offset,
445450 existingCount : existing . length ,
446451 renderTypeFilter : messageTypeFilter . value ,
447452 realtime : ! ! realtimeEnabled . value
448453 } )
449454 const response = await api . listChatMessages ( params )
450- logMessagePhase ( 'loadMessages:request:end' , {
451- username,
452- reset,
455+ trace . log ( 'loadMessages:request:end' , {
453456 rawCount : Array . isArray ( response ?. messages ) ? response . messages . length : 0 ,
454457 total : Number ( response ?. total || 0 ) ,
455458 hasMore : response ?. hasMore
456459 } )
457460
458461 const raw = response ?. messages || [ ]
459- logMessagePhase ( 'loadMessages:normalize:start' , {
460- username,
462+ trace . log ( 'loadMessages:normalize:start' , {
461463 rawCount : raw . length
462464 } )
463465 const mapped = dedupeMessagesById ( raw . map ( normalizeMessage ) )
464- logMessagePhase ( 'loadMessages:normalize:end' , {
465- username,
466+ trace . log ( 'loadMessages:normalize:end' , {
466467 mappedCount : mapped . length ,
467468 renderTypeCounts : summarizeRenderTypes ( mapped )
468469 } )
469470
470471 if ( activeMessagesFor . value !== username ) {
471- logMessagePhase ( 'loadMessages:abort-stale' , {
472- username,
472+ trace . log ( 'loadMessages:abort-stale' , {
473473 activeMessagesFor : activeMessagesFor . value
474474 } )
475475 return
476476 }
477477
478- logMessagePhase ( 'loadMessages:state-commit:start' , {
479- username,
480- reset,
478+ trace . log ( 'loadMessages:state-commit:start' , {
481479 mappedCount : mapped . length
482480 } )
483481 if ( reset ) {
@@ -496,8 +494,7 @@ export const useChatMessages = ({
496494 [ username ] : [ ...older , ...existing ]
497495 }
498496 }
499- logMessagePhase ( 'loadMessages:state-commit:end' , {
500- username,
497+ trace . log ( 'loadMessages:state-commit:end' , {
501498 storedCount : ( allMessages . value [ username ] || [ ] ) . length
502499 } )
503500
@@ -508,18 +505,14 @@ export const useChatMessages = ({
508505 hasMore : response ?. hasMore
509506 }
510507 }
511- logMessagePhase ( 'loadMessages:meta-commit:end' , {
512- username,
508+ trace . log ( 'loadMessages:meta-commit:end' , {
513509 total : Number ( response ?. total || 0 ) ,
514510 hasMore : response ?. hasMore
515511 } )
516512
517- logMessagePhase ( 'loadMessages:nextTick:start' , {
518- username
519- } )
513+ trace . log ( 'loadMessages:nextTick:start' )
520514 await nextTick ( )
521- logMessagePhase ( 'loadMessages:nextTick:end' , {
522- username,
515+ trace . log ( 'loadMessages:nextTick:end' , {
523516 renderedCount : ( allMessages . value [ username ] || [ ] ) . length
524517 } )
525518 const nextContainer = messageContainerRef . value
@@ -532,13 +525,16 @@ export const useChatMessages = ({
532525 }
533526 }
534527 updateJumpToBottomState ( )
535- logMessagePhase ( 'loadMessages:scroll:end' , {
536- username,
528+ trace . log ( 'loadMessages:scroll:end' , {
537529 hasContainer : ! ! nextContainer ,
538530 scrollTop : nextContainer ? nextContainer . scrollTop : null ,
539531 scrollHeight : nextContainer ? nextContainer . scrollHeight : null
540532 } )
541533 } catch ( error ) {
534+ trace . log ( 'loadMessages:error' , {
535+ message : String ( error ?. message || '' ) ,
536+ errorName : String ( error ?. name || '' )
537+ } )
542538 console . error ( '[chat-messages] loadMessages:error' , {
543539 account : String ( selectedAccount . value || '' ) . trim ( ) ,
544540 username : String ( username || '' ) . trim ( ) ,
@@ -548,9 +544,7 @@ export const useChatMessages = ({
548544 messagesError . value = error ?. message || '加载聊天记录失败'
549545 } finally {
550546 isLoadingMessages . value = false
551- logMessagePhase ( 'loadMessages:exit' , {
552- username,
553- reset,
547+ trace . log ( 'loadMessages:exit' , {
554548 loading : isLoadingMessages . value ,
555549 error : messagesError . value
556550 } )
@@ -571,9 +565,24 @@ export const useChatMessages = ({
571565
572566 const refreshCurrentMessageMedia = async ( ) => {
573567 if ( ! selectedContact . value ?. username ) return
568+ const trace = createPerfTrace ( 'chat-messages' , {
569+ account : String ( selectedAccount . value || '' ) . trim ( ) ,
570+ username : String ( selectedContact . value ?. username || '' ) . trim ( ) ,
571+ action : 'refreshCurrentMessageMedia'
572+ } )
573+ trace . log ( 'refreshCurrentMessageMedia:start' , {
574+ localMediaVersion : Number ( localMediaVersion . value || 0 )
575+ } )
574576 bumpLocalMediaVersion ( )
577+ trace . log ( 'refreshCurrentMessageMedia:version-bumped' , {
578+ localMediaVersion : Number ( localMediaVersion . value || 0 )
579+ } )
575580 renormalizeLoadedMessages ( selectedContact . value . username )
581+ trace . log ( 'refreshCurrentMessageMedia:renormalized' , {
582+ renderedCount : ( allMessages . value [ selectedContact . value . username ] || [ ] ) . length
583+ } )
576584 await nextTick ( )
585+ trace . log ( 'refreshCurrentMessageMedia:end' )
577586 }
578587
579588 const refreshRealtimeIncremental = async ( ) => {
0 commit comments