@@ -21,6 +21,7 @@ import MessageHeader from '../MessageHeader';
2121import MessageToolbarHolder from '../MessageToolbarHolder' ;
2222import StatusIndicators from '../StatusIndicators' ;
2323import RoomMessageContent from './room/RoomMessageContent' ;
24+ import { useMessageListReadReceipts } from '../list/MessageListContext' ;
2425
2526type RoomMessageProps = {
2627 message : IMessage & { ignored ?: boolean } ;
@@ -34,6 +35,30 @@ type RoomMessageProps = {
3435 searchText ?: string ;
3536} & ComponentProps < typeof Message > ;
3637
38+ const getAriaLabelledBy = ( {
39+ readReceiptEnabled,
40+ messageId,
41+ sequential,
42+ } : {
43+ readReceiptEnabled : boolean ;
44+ messageId : string ;
45+ sequential : boolean ;
46+ } ) => {
47+ const labels : string [ ] = [ ] ;
48+
49+ if ( ! sequential ) {
50+ labels . push ( `${ messageId } -displayName` , `${ messageId } -time` ) ;
51+ }
52+
53+ labels . push ( `${ messageId } -content` ) ;
54+
55+ if ( readReceiptEnabled ) {
56+ labels . push ( `${ messageId } -read-status` ) ;
57+ }
58+
59+ return labels . join ( ' ' ) ;
60+ } ;
61+
3762const RoomMessage = ( {
3863 message,
3964 showUserAvatar,
@@ -58,6 +83,8 @@ const RoomMessage = ({
5883 const toggleSelected = useToggleSelect ( message . _id ) ;
5984 const selected = useIsSelectedMessage ( message . _id ) ;
6085
86+ const { enabled : readReceiptEnabled } = useMessageListReadReceipts ( ) ;
87+
6188 useCountSelected ( ) ;
6289 const messageRef = useJumpToMessage ( message . _id ) ;
6390
@@ -68,7 +95,7 @@ const RoomMessage = ({
6895 role = 'listitem'
6996 aria-roledescription = { t ( 'message' ) }
7097 tabIndex = { 0 }
71- aria-labelledby = { ` ${ message . _id } -displayName ${ message . _id } -time ${ message . _id } -content ${ message . _id } -read-status` }
98+ aria-labelledby = { getAriaLabelledBy ( { readReceiptEnabled , messageId : message . _id , sequential } ) }
7299 onClick = { selecting ? toggleSelected : undefined }
73100 isSelected = { selected }
74101 isEditing = { editing }
@@ -101,7 +128,7 @@ const RoomMessage = ({
101128 < MessageContainer >
102129 { ! sequential && < MessageHeader message = { message } /> }
103130 { ignored ? (
104- < IgnoredContent onShowMessageIgnored = { toggleDisplayIgnoredMessage } />
131+ < IgnoredContent messageId = { message . _id } onShowMessageIgnored = { toggleDisplayIgnoredMessage } />
105132 ) : (
106133 < RoomMessageContent message = { message } unread = { unread } mention = { mention } all = { all } searchText = { searchText } />
107134 ) }
0 commit comments