11/*
2- Copyright 2015, 2016 OpenMarket Ltd
3- Copyright 2017 New Vector Ltd
42Copyright 2019 Michael Telatynski <[email protected] > 5- Copyright 2019, 2020 The Matrix.org Foundation C.I.C.
3+ Copyright 2019 - 2021 The Matrix.org Foundation C.I.C.
64
75Licensed under the Apache License, Version 2.0 (the "License");
86you may not use this file except in compliance with the License.
@@ -17,18 +15,19 @@ See the License for the specific language governing permissions and
1715limitations under the License.
1816*/
1917
20- import ReplyThread from "../elements/ReplyThread" ;
2118import React , { createRef } from 'react' ;
2219import PropTypes from 'prop-types' ;
2320import classNames from "classnames" ;
2421import { EventType } from "matrix-js-sdk/src/@types/event" ;
22+ import { EventStatus } from 'matrix-js-sdk/src/models/event' ;
23+
24+ import ReplyThread from "../elements/ReplyThread" ;
2525import { _t } from '../../../languageHandler' ;
2626import * as TextForEvent from "../../../TextForEvent" ;
2727import * as sdk from "../../../index" ;
2828import dis from '../../../dispatcher/dispatcher' ;
2929import SettingsStore from "../../../settings/SettingsStore" ;
3030import { Layout , LayoutPropType } from "../../../settings/Layout" ;
31- import { EventStatus } from 'matrix-js-sdk/src/models/event' ;
3231import { formatTime } from "../../../DateUtils" ;
3332import { MatrixClientPeg } from '../../../MatrixClientPeg' ;
3433import { ALL_RULE_TYPES } from "../../../mjolnir/BanList" ;
@@ -43,39 +42,56 @@ import {replaceableComponent} from "../../../utils/replaceableComponent";
4342import Tooltip from "../elements/Tooltip" ;
4443
4544const eventTileTypes = {
46- 'm.room.message' : 'messages.MessageEvent' ,
47- 'm.sticker' : 'messages.MessageEvent' ,
48- 'm.key.verification.cancel' : 'messages.MKeyVerificationConclusion' ,
49- 'm.key.verification.done' : 'messages.MKeyVerificationConclusion' ,
50- 'm.room.encryption' : 'messages.EncryptionEvent' ,
51- 'm.call.invite' : 'messages.TextualEvent' ,
52- 'm.call.answer' : 'messages.TextualEvent' ,
53- 'm.call.hangup' : 'messages.TextualEvent' ,
54- 'm.call.reject' : 'messages.TextualEvent' ,
45+ [ EventType . RoomMessage ] : 'messages.MessageEvent' ,
46+ [ EventType . Sticker ] : 'messages.MessageEvent' ,
47+ [ EventType . KeyVerificationCancel ] : 'messages.MKeyVerificationConclusion' ,
48+ [ EventType . KeyVerificationDone ] : 'messages.MKeyVerificationConclusion' ,
49+ [ EventType . CallInvite ] : 'messages.TextualEvent' ,
50+ [ EventType . CallAnswer ] : 'messages.TextualEvent' ,
51+ [ EventType . CallHangup ] : 'messages.TextualEvent' ,
52+ [ EventType . CallReject ] : 'messages.TextualEvent' ,
5553} ;
5654
5755const stateEventTileTypes = {
58- 'm.room.encryption' : 'messages.EncryptionEvent' ,
59- 'm.room.canonical_alias' : 'messages.TextualEvent' ,
60- 'm.room.create' : 'messages.RoomCreate' ,
61- 'm.room.member' : 'messages.TextualEvent' ,
62- 'm.room.name' : 'messages.TextualEvent' ,
63- 'm.room.avatar' : 'messages.RoomAvatarEvent' ,
64- 'm.room.third_party_invite' : 'messages.TextualEvent' ,
65- 'm.room.history_visibility' : 'messages.TextualEvent' ,
66- 'm.room.topic' : 'messages.TextualEvent' ,
67- 'm.room.power_levels' : 'messages.TextualEvent' ,
68- 'm.room.pinned_events' : 'messages.TextualEvent' ,
69- 'm.room.server_acl' : 'messages.TextualEvent' ,
56+ [ EventType . RoomEncryption ] : 'messages.EncryptionEvent' ,
57+ [ EventType . RoomCanonicalAlias ] : 'messages.TextualEvent' ,
58+ [ EventType . RoomCreate ] : 'messages.RoomCreate' ,
59+ [ EventType . RoomMember ] : 'messages.TextualEvent' ,
60+ [ EventType . RoomName ] : 'messages.TextualEvent' ,
61+ [ EventType . RoomAvatar ] : 'messages.RoomAvatarEvent' ,
62+ [ EventType . RoomThirdPartyInvite ] : 'messages.TextualEvent' ,
63+ [ EventType . RoomHistoryVisibility ] : 'messages.TextualEvent' ,
64+ [ EventType . RoomTopic ] : 'messages.TextualEvent' ,
65+ [ EventType . RoomPowerLevels ] : 'messages.TextualEvent' ,
66+ [ EventType . RoomPinnedEvents ] : 'messages.TextualEvent' ,
67+ [ EventType . RoomServerAcl ] : 'messages.TextualEvent' ,
7068 // TODO: Enable support for m.widget event type (https://github.com/vector-im/element-web/issues/13111)
7169 'im.vector.modular.widgets' : 'messages.TextualEvent' ,
7270 [ WIDGET_LAYOUT_EVENT_TYPE ] : 'messages.TextualEvent' ,
73- 'm.room.tombstone' : 'messages.TextualEvent' ,
74- 'm.room.join_rules' : 'messages.TextualEvent' ,
75- 'm.room.guest_access' : 'messages.TextualEvent' ,
76- 'm.room.related_groups' : 'messages.TextualEvent' ,
71+ [ EventType . RoomTombstone ] : 'messages.TextualEvent' ,
72+ [ EventType . RoomJoinRules ] : 'messages.TextualEvent' ,
73+ [ EventType . RoomGuestAccess ] : 'messages.TextualEvent' ,
74+ 'm.room.related_groups' : 'messages.TextualEvent' , // legacy communities flair
7775} ;
7876
77+ const stateEventSingular = new Set ( [
78+ EventType . RoomEncryption ,
79+ EventType . RoomCanonicalAlias ,
80+ EventType . RoomCreate ,
81+ EventType . RoomName ,
82+ EventType . RoomAvatar ,
83+ EventType . RoomHistoryVisibility ,
84+ EventType . RoomTopic ,
85+ EventType . RoomPowerLevels ,
86+ EventType . RoomPinnedEvents ,
87+ EventType . RoomServerAcl ,
88+ WIDGET_LAYOUT_EVENT_TYPE ,
89+ EventType . RoomTombstone ,
90+ EventType . RoomJoinRules ,
91+ EventType . RoomGuestAccess ,
92+ 'm.room.related_groups' ,
93+ ] ) ;
94+
7995// Add all the Mjolnir stuff to the renderer
8096for ( const evType of ALL_RULE_TYPES ) {
8197 stateEventTileTypes [ evType ] = 'messages.TextualEvent' ;
@@ -132,7 +148,12 @@ export function getHandlerTile(ev) {
132148 }
133149 }
134150
135- return ev . isState ( ) ? stateEventTileTypes [ type ] : eventTileTypes [ type ] ;
151+ if ( ev . isState ( ) ) {
152+ if ( stateEventSingular . has ( type ) && ev . getStateKey ( ) !== "" ) return undefined ;
153+ return stateEventTileTypes [ type ] ;
154+ }
155+
156+ return eventTileTypes [ type ] ;
136157}
137158
138159const MAX_READ_AVATARS = 5 ;
0 commit comments