diff --git a/src/components/views/rooms/MessageComposer.js b/src/components/views/rooms/MessageComposer.js index 2fc35d80cc..f7a67c2189 100644 --- a/src/components/views/rooms/MessageComposer.js +++ b/src/components/views/rooms/MessageComposer.js @@ -349,6 +349,34 @@ export default class MessageComposer extends React.Component { const canSendMessages = !this.state.tombstone && this.props.room.maySendMessage(); + // TODO: Remove temporary logging for riot-web#7838 + // Note: we rip apart the power level event ourselves because we don't want to + // log too much data about it - just the bits we care about. Many of the variables + // logged here are to help figure out where in the stack the 'cannot post in room' + // warning is coming from. This means logging various numbers from the PL event to + // verify RoomState._maySendEventOfType is doing the right thing. + const room = this.props.room; + const plEvent = room.currentState.getStateEvents('m.room.power_levels', ''); + let plEventString = ""; + if (plEvent) { + const content = plEvent.getContent(); + if (!content) { + plEventString = ""; + } else { + const stringifyFalsey = (v) => v === null ? '' : (v === undefined ? '' : v); + const actualUserPl = stringifyFalsey(content.users ? content.users[room.myUserId] : ""); + const usersPl = stringifyFalsey(content.users_default); + const actualEventPl = stringifyFalsey(content.events ? content.events['m.room.message'] : ""); + const eventPl = stringifyFalsey(content.events_default); + plEventString = `actualUserPl=${actualUserPl} defaultUserPl=${usersPl} actualEventPl=${actualEventPl} defaultEventPl=${eventPl}`; + } + } + console.log( + `[riot-web#7838] renderComposer() hasTombstone=${!!this.state.tombstone} maySendMessage=${room.maySendMessage()}` + + ` myMembership=${room.getMyMembership()} maySendEvent=${room.currentState.maySendEvent('m.room.message', room.myUserId)}` + + ` myUserId=${room.myUserId} roomId=${room.roomId} hasPlEvent=${!!plEvent} powerLevels='${plEventString}'` + ); + if (canSendMessages) { // This also currently includes the call buttons. Really we should // check separately for whether we can call, but this is slightly @@ -425,6 +453,8 @@ export default class MessageComposer extends React.Component { ); } else { + // TODO: Remove temporary logging for riot-web#7838 + console.log("[riot-web#7838] Falling back to showing cannot post in room error"); controls.push(
{ _t('You do not have permission to post to this room') }