@@ -13,7 +13,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
13
See the License for the specific language governing permissions and
14
14
limitations under the License.
15
15
*/
16
-
17
16
import React from 'react' ;
18
17
import { MatrixClientPeg } from './MatrixClientPeg' ;
19
18
import { _t } from './languageHandler' ;
@@ -32,7 +31,7 @@ import { MatrixEvent } from "matrix-js-sdk/src/models/event";
32
31
// any text to display at all. For this reason they return deferred values
33
32
// to avoid the expense of looking up translations when they're not needed.
34
33
35
- function textForMemberEvent ( ev : MatrixEvent ) : ( ) => string | null {
34
+ function textForMemberEvent ( ev : MatrixEvent , allowJSX : boolean , showHiddenEvents ?: boolean ) : ( ) => string | null {
36
35
// XXX: SYJS-16 "sender is sometimes null for join messages"
37
36
const senderName = ev . sender ? ev . sender . name : ev . getSender ( ) ;
38
37
const targetName = ev . target ? ev . target . name : ev . getStateKey ( ) ;
@@ -84,7 +83,7 @@ function textForMemberEvent(ev: MatrixEvent): () => string | null {
84
83
return ( ) => _t ( '%(senderName)s changed their profile picture' , { senderName } ) ;
85
84
} else if ( ! prevContent . avatar_url && content . avatar_url ) {
86
85
return ( ) => _t ( '%(senderName)s set a profile picture' , { senderName } ) ;
87
- } else if ( SettingsStore . getValue ( "showHiddenEventsInTimeline" ) ) {
86
+ } else if ( showHiddenEvents ?? SettingsStore . getValue ( "showHiddenEventsInTimeline" ) ) {
88
87
// This is a null rejoin, it will only be visible if using 'show hidden events' (labs)
89
88
return ( ) => _t ( "%(senderName)s made no change" , { senderName } ) ;
90
89
} else {
@@ -319,15 +318,15 @@ function textForCanonicalAliasEvent(ev: MatrixEvent): () => string | null {
319
318
} ) ;
320
319
}
321
320
322
- function textForCallAnswerEvent ( event ) : ( ) => string | null {
321
+ function textForCallAnswerEvent ( event : MatrixEvent ) : ( ) => string | null {
323
322
return ( ) => {
324
323
const senderName = event . sender ? event . sender . name : _t ( 'Someone' ) ;
325
324
const supported = MatrixClientPeg . get ( ) . supportsVoip ( ) ? '' : _t ( '(not supported by this browser)' ) ;
326
325
return _t ( '%(senderName)s answered the call.' , { senderName } ) + ' ' + supported ;
327
326
} ;
328
327
}
329
328
330
- function textForCallHangupEvent ( event ) : ( ) => string | null {
329
+ function textForCallHangupEvent ( event : MatrixEvent ) : ( ) => string | null {
331
330
const getSenderName = ( ) => event . sender ? event . sender . name : _t ( 'Someone' ) ;
332
331
const eventContent = event . getContent ( ) ;
333
332
let getReason = ( ) => "" ;
@@ -364,14 +363,14 @@ function textForCallHangupEvent(event): () => string | null {
364
363
return ( ) => _t ( '%(senderName)s ended the call.' , { senderName : getSenderName ( ) } ) + ' ' + getReason ( ) ;
365
364
}
366
365
367
- function textForCallRejectEvent ( event ) : ( ) => string | null {
366
+ function textForCallRejectEvent ( event : MatrixEvent ) : ( ) => string | null {
368
367
return ( ) => {
369
368
const senderName = event . sender ? event . sender . name : _t ( 'Someone' ) ;
370
369
return _t ( '%(senderName)s declined the call.' , { senderName } ) ;
371
370
} ;
372
371
}
373
372
374
- function textForCallInviteEvent ( event ) : ( ) => string | null {
373
+ function textForCallInviteEvent ( event : MatrixEvent ) : ( ) => string | null {
375
374
const getSenderName = ( ) => event . sender ? event . sender . name : _t ( 'Someone' ) ;
376
375
// FIXME: Find a better way to determine this from the event?
377
376
let isVoice = true ;
@@ -403,7 +402,7 @@ function textForCallInviteEvent(event): () => string | null {
403
402
}
404
403
}
405
404
406
- function textForThreePidInviteEvent ( event ) : ( ) => string | null {
405
+ function textForThreePidInviteEvent ( event : MatrixEvent ) : ( ) => string | null {
407
406
const senderName = event . sender ? event . sender . name : event . getSender ( ) ;
408
407
409
408
if ( ! isValid3pidInvite ( event ) ) {
@@ -419,7 +418,7 @@ function textForThreePidInviteEvent(event): () => string | null {
419
418
} ) ;
420
419
}
421
420
422
- function textForHistoryVisibilityEvent ( event ) : ( ) => string | null {
421
+ function textForHistoryVisibilityEvent ( event : MatrixEvent ) : ( ) => string | null {
423
422
const senderName = event . sender ? event . sender . name : event . getSender ( ) ;
424
423
switch ( event . getContent ( ) . history_visibility ) {
425
424
case 'invited' :
@@ -441,7 +440,7 @@ function textForHistoryVisibilityEvent(event): () => string | null {
441
440
}
442
441
443
442
// Currently will only display a change if a user's power level is changed
444
- function textForPowerEvent ( event ) : ( ) => string | null {
443
+ function textForPowerEvent ( event : MatrixEvent ) : ( ) => string | null {
445
444
const senderName = event . sender ? event . sender . name : event . getSender ( ) ;
446
445
if ( ! event . getPrevContent ( ) || ! event . getPrevContent ( ) . users ||
447
446
! event . getContent ( ) || ! event . getContent ( ) . users ) {
@@ -523,7 +522,7 @@ function textForPinnedEvent(event: MatrixEvent, allowJSX: boolean): () => string
523
522
return ( ) => _t ( "%(senderName)s changed the pinned messages for the room." , { senderName } ) ;
524
523
}
525
524
526
- function textForWidgetEvent ( event ) : ( ) => string | null {
525
+ function textForWidgetEvent ( event : MatrixEvent ) : ( ) => string | null {
527
526
const senderName = event . getSender ( ) ;
528
527
const { name : prevName , type : prevType , url : prevUrl } = event . getPrevContent ( ) ;
529
528
const { name, type, url } = event . getContent ( ) || { } ;
@@ -553,12 +552,12 @@ function textForWidgetEvent(event): () => string | null {
553
552
}
554
553
}
555
554
556
- function textForWidgetLayoutEvent ( event ) : ( ) => string | null {
555
+ function textForWidgetLayoutEvent ( event : MatrixEvent ) : ( ) => string | null {
557
556
const senderName = event . sender ?. name || event . getSender ( ) ;
558
557
return ( ) => _t ( "%(senderName)s has updated the widget layout" , { senderName } ) ;
559
558
}
560
559
561
- function textForMjolnirEvent ( event ) : ( ) => string | null {
560
+ function textForMjolnirEvent ( event : MatrixEvent ) : ( ) => string | null {
562
561
const senderName = event . getSender ( ) ;
563
562
const { entity : prevEntity } = event . getPrevContent ( ) ;
564
563
const { entity, recommendation, reason } = event . getContent ( ) ;
@@ -646,7 +645,9 @@ function textForMjolnirEvent(event): () => string | null {
646
645
}
647
646
648
647
interface IHandlers {
649
- [ type : string ] : ( ev : MatrixEvent , allowJSX ?: boolean ) => ( ( ) => string | JSX . Element | null ) ;
648
+ [ type : string ] :
649
+ ( ev : MatrixEvent , allowJSX : boolean , showHiddenEvents ?: boolean ) =>
650
+ ( ( ) => string | JSX . Element | null ) ;
650
651
}
651
652
652
653
const handlers : IHandlers = {
@@ -682,14 +683,27 @@ for (const evType of ALL_RULE_TYPES) {
682
683
stateHandlers [ evType ] = textForMjolnirEvent ;
683
684
}
684
685
685
- export function hasText ( ev : MatrixEvent ) : boolean {
686
+ /**
687
+ * Determines whether the given event has text to display.
688
+ * @param ev The event
689
+ * @param showHiddenEvents An optional cached setting value for showHiddenEventsInTimeline
690
+ * to avoid hitting the settings store
691
+ */
692
+ export function hasText ( ev : MatrixEvent , showHiddenEvents ?: boolean ) : boolean {
686
693
const handler = ( ev . isState ( ) ? stateHandlers : handlers ) [ ev . getType ( ) ] ;
687
- return Boolean ( handler ?.( ev ) ) ;
694
+ return Boolean ( handler ?.( ev , false , showHiddenEvents ) ) ;
688
695
}
689
696
697
+ /**
698
+ * Gets the textual content of the given event.
699
+ * @param ev The event
700
+ * @param allowJSX Whether to output rich JSX content
701
+ * @param showHiddenEvents An optional cached setting value for showHiddenEventsInTimeline
702
+ * to avoid hitting the settings store
703
+ */
690
704
export function textForEvent ( ev : MatrixEvent ) : string ;
691
- export function textForEvent ( ev : MatrixEvent , allowJSX : true ) : string | JSX . Element ;
692
- export function textForEvent ( ev : MatrixEvent , allowJSX = false ) : string | JSX . Element {
705
+ export function textForEvent ( ev : MatrixEvent , allowJSX : true , showHiddenEvents ?: boolean ) : string | JSX . Element ;
706
+ export function textForEvent ( ev : MatrixEvent , allowJSX = false , showHiddenEvents ?: boolean ) : string | JSX . Element {
693
707
const handler = ( ev . isState ( ) ? stateHandlers : handlers ) [ ev . getType ( ) ] ;
694
- return handler ?.( ev , allowJSX ) ?.( ) || '' ;
708
+ return handler ?.( ev , allowJSX , showHiddenEvents ) ?.( ) || '' ;
695
709
}
0 commit comments