@@ -20,7 +20,6 @@ import { IEventRelation, MatrixEvent } from "matrix-js-sdk/src/models/event";
20
20
import { Room } from "matrix-js-sdk/src/models/room" ;
21
21
import { RoomMember } from "matrix-js-sdk/src/models/room-member" ;
22
22
import { EventType , RelationType } from 'matrix-js-sdk/src/@types/event' ;
23
- import { RoomStateEvent } from "matrix-js-sdk/src/models/room-state" ;
24
23
import { Optional } from "matrix-events-sdk" ;
25
24
26
25
import { _t } from '../../../languageHandler' ;
@@ -81,8 +80,6 @@ interface IProps {
81
80
}
82
81
83
82
interface IState {
84
- tombstone : MatrixEvent ;
85
- canSendMessages : boolean ;
86
83
isComposerEmpty : boolean ;
87
84
haveRecording : boolean ;
88
85
recordingTimeLeftSeconds ?: number ;
@@ -114,8 +111,6 @@ export default class MessageComposer extends React.Component<IProps, IState> {
114
111
VoiceRecordingStore . instance . on ( UPDATE_EVENT , this . onVoiceStoreUpdate ) ;
115
112
116
113
this . state = {
117
- tombstone : this . getRoomTombstone ( ) ,
118
- canSendMessages : this . props . room . maySendMessage ( ) ,
119
114
isComposerEmpty : true ,
120
115
haveRecording : false ,
121
116
recordingTimeLeftSeconds : null , // when set to a number, shows a toast
@@ -154,7 +149,6 @@ export default class MessageComposer extends React.Component<IProps, IState> {
154
149
155
150
public componentDidMount ( ) {
156
151
this . dispatcherRef = dis . register ( this . onAction ) ;
157
- MatrixClientPeg . get ( ) . on ( RoomStateEvent . Events , this . onRoomStateEvents ) ;
158
152
this . waitForOwnMember ( ) ;
159
153
UIStore . instance . trackElementDimensions ( `MessageComposer${ this . instanceId } ` , this . ref . current ) ;
160
154
UIStore . instance . on ( `MessageComposer${ this . instanceId } ` , this . onResize ) ;
@@ -217,9 +211,6 @@ export default class MessageComposer extends React.Component<IProps, IState> {
217
211
}
218
212
219
213
public componentWillUnmount ( ) {
220
- if ( MatrixClientPeg . get ( ) ) {
221
- MatrixClientPeg . get ( ) . removeListener ( RoomStateEvent . Events , this . onRoomStateEvents ) ;
222
- }
223
214
VoiceRecordingStore . instance . off ( UPDATE_EVENT , this . onVoiceStoreUpdate ) ;
224
215
dis . unregister ( this . dispatcherRef ) ;
225
216
UIStore . instance . stopTrackingElementDimensions ( `MessageComposer${ this . instanceId } ` ) ;
@@ -229,33 +220,18 @@ export default class MessageComposer extends React.Component<IProps, IState> {
229
220
this . voiceRecording = null ;
230
221
}
231
222
232
- private onRoomStateEvents = ( ev : MatrixEvent ) => {
233
- if ( ev . getRoomId ( ) !== this . props . room . roomId ) return ;
234
-
235
- if ( ev . getType ( ) === EventType . RoomTombstone ) {
236
- this . setState ( { tombstone : this . getRoomTombstone ( ) } ) ;
237
- }
238
- if ( ev . getType ( ) === EventType . RoomPowerLevels ) {
239
- this . setState ( { canSendMessages : this . props . room . maySendMessage ( ) } ) ;
240
- }
241
- } ;
242
-
243
- private getRoomTombstone ( ) {
244
- return this . props . room . currentState . getStateEvents ( EventType . RoomTombstone , '' ) ;
245
- }
246
-
247
223
private onTombstoneClick = ( ev ) => {
248
224
ev . preventDefault ( ) ;
249
225
250
- const replacementRoomId = this . state . tombstone . getContent ( ) [ 'replacement_room' ] ;
226
+ const replacementRoomId = this . context . tombstone . getContent ( ) [ 'replacement_room' ] ;
251
227
const replacementRoom = MatrixClientPeg . get ( ) . getRoom ( replacementRoomId ) ;
252
228
let createEventId = null ;
253
229
if ( replacementRoom ) {
254
230
const createEvent = replacementRoom . currentState . getStateEvents ( EventType . RoomCreate , '' ) ;
255
231
if ( createEvent && createEvent . getId ( ) ) createEventId = createEvent . getId ( ) ;
256
232
}
257
233
258
- const viaServers = [ this . state . tombstone . getSender ( ) . split ( ':' ) . slice ( 1 ) . join ( ':' ) ] ;
234
+ const viaServers = [ this . context . tombstone . getSender ( ) . split ( ':' ) . slice ( 1 ) . join ( ':' ) ] ;
259
235
dis . dispatch < ViewRoomPayload > ( {
260
236
action : Action . ViewRoom ,
261
237
highlighted : true ,
@@ -374,7 +350,8 @@ export default class MessageComposer extends React.Component<IProps, IState> {
374
350
menuPosition = aboveLeftOf ( contentRect ) ;
375
351
}
376
352
377
- if ( ! this . state . tombstone && this . state . canSendMessages ) {
353
+ const canSendMessages = this . context . canSendMessages && ! this . context . tombstone ;
354
+ if ( canSendMessages ) {
378
355
controls . push (
379
356
< SendMessageComposer
380
357
ref = { this . messageComposerInput }
@@ -393,8 +370,8 @@ export default class MessageComposer extends React.Component<IProps, IState> {
393
370
key = "controls_voice_record"
394
371
ref = { this . voiceRecordingButton }
395
372
room = { this . props . room } /> ) ;
396
- } else if ( this . state . tombstone ) {
397
- const replacementRoomId = this . state . tombstone . getContent ( ) [ 'replacement_room' ] ;
373
+ } else if ( this . context . tombstone ) {
374
+ const replacementRoomId = this . context . tombstone . getContent ( ) [ 'replacement_room' ] ;
398
375
399
376
const continuesLink = replacementRoomId ? (
400
377
< a href = { makeRoomPermalink ( replacementRoomId ) }
@@ -467,7 +444,7 @@ export default class MessageComposer extends React.Component<IProps, IState> {
467
444
permalinkCreator = { this . props . permalinkCreator } />
468
445
< div className = "mx_MessageComposer_row" >
469
446
{ controls }
470
- { this . state . canSendMessages && < MessageComposerButtons
447
+ { canSendMessages && < MessageComposerButtons
471
448
addEmoji = { this . addEmoji }
472
449
haveRecording = { this . state . haveRecording }
473
450
isMenuOpen = { this . state . isMenuOpen }
0 commit comments