mirror of
				https://github.com/vector-im/element-web.git
				synced 2025-10-31 16:21:46 +01:00 
			
		
		
		
	Merge pull request #2126 from matrix-org/bwindels/fixllpeek
Fix showing peek preview while LL members are loading
This commit is contained in:
		
						commit
						6967bcb445
					
				| @ -480,7 +480,7 @@ function getMembershipCount(event, roomId) { | ||||
|         sendError(event, _t('This room is not recognised.')); | ||||
|         return; | ||||
|     } | ||||
|     const count = room.getJoinedMembers().length; | ||||
|     const count = room.getJoinedMemberCount(); | ||||
|     sendResponse(event, count); | ||||
| } | ||||
| 
 | ||||
| @ -497,12 +497,11 @@ function canSendEvent(event, roomId) { | ||||
|         sendError(event, _t('This room is not recognised.')); | ||||
|         return; | ||||
|     } | ||||
|     const me = client.credentials.userId; | ||||
|     const member = room.getMember(me); | ||||
|     if (!member || member.membership !== "join") { | ||||
|     if (room.getMyMembership() !== "join") { | ||||
|         sendError(event, _t('You are not in this room.')); | ||||
|         return; | ||||
|     } | ||||
|     const me = client.credentials.userId; | ||||
| 
 | ||||
|     let canSend = false; | ||||
|     if (isState) { | ||||
|  | ||||
| @ -72,7 +72,7 @@ ConferenceCall.prototype._getConferenceUserRoom = function() { | ||||
|     for (var i = 0; i < rooms.length; i++) { | ||||
|         var confUser = rooms[i].getMember(this.confUserId); | ||||
|         if (confUser && confUser.membership === "join" && | ||||
|                 rooms[i].getJoinedMembers().length === 2) { | ||||
|                 rooms[i].getJoinedMemberCount() === 2) { | ||||
|             confRoom = rooms[i]; | ||||
|             break; | ||||
|         } | ||||
|  | ||||
| @ -280,7 +280,7 @@ module.exports = React.createClass({ | ||||
|             const room = cli.getRoom(this.props.roomId); | ||||
|             let isUserInRoom; | ||||
|             if (room) { | ||||
|                 const numMembers = room.getJoinedMembers().length; | ||||
|                 const numMembers = room.getJoinedMemberCount(); | ||||
|                 membersTitle = _t('%(count)s Members', { count: numMembers }); | ||||
|                 membersBadge = <div title={membersTitle}>{ formatCount(numMembers) }</div>; | ||||
|                 isUserInRoom = room.hasMembershipState(this.context.matrixClient.credentials.userId, 'join'); | ||||
|  | ||||
| @ -310,7 +310,7 @@ module.exports = React.createClass({ | ||||
|                 }); | ||||
|             } else if (room) { | ||||
|                 //viewing a previously joined room, try to lazy load members
 | ||||
|                  | ||||
| 
 | ||||
|                 // Stop peeking because we have joined this room previously
 | ||||
|                 MatrixClientPeg.get().stopPeeking(); | ||||
|                 this.setState({isPeeking: false}); | ||||
| @ -363,7 +363,7 @@ module.exports = React.createClass({ | ||||
|         // XXX: EVIL HACK to autofocus inviting on empty rooms.
 | ||||
|         // We use the setTimeout to avoid racing with focus_composer.
 | ||||
|         if (this.state.room && | ||||
|             this.state.room.getJoinedMembers().length == 1 && | ||||
|             this.state.room.getJoinedMemberCount() == 1 && | ||||
|             this.state.room.getLiveTimeline() && | ||||
|             this.state.room.getLiveTimeline().getEvents() && | ||||
|             this.state.room.getLiveTimeline().getEvents().length <= 6) { | ||||
| @ -1507,9 +1507,8 @@ module.exports = React.createClass({ | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         const myUserId = MatrixClientPeg.get().credentials.userId; | ||||
|         const myMember = this.state.room.getMember(myUserId); | ||||
|         if (myMember && myMember.membership == 'invite') { | ||||
|         const myMembership = this.state.room.getMyMembership(); | ||||
|         if (myMembership == 'invite') { | ||||
|             if (this.state.joining || this.state.rejecting) { | ||||
|                 return ( | ||||
|                     <div className="mx_RoomView"> | ||||
| @ -1517,6 +1516,8 @@ module.exports = React.createClass({ | ||||
|                     </div> | ||||
|                 ); | ||||
|             } else { | ||||
|                 const myUserId = MatrixClientPeg.get().credentials.userId; | ||||
|                 const myMember = this.state.room.getMember(myUserId); | ||||
|                 const inviteEvent = myMember.events.member; | ||||
|                 var inviterName = inviteEvent.sender ? inviteEvent.sender.name : inviteEvent.getSender(); | ||||
| 
 | ||||
| @ -1600,7 +1601,7 @@ module.exports = React.createClass({ | ||||
|         } else if (this.state.showingPinned) { | ||||
|             hideCancel = true; // has own cancel
 | ||||
|             aux = <PinnedEventsPanel room={this.state.room} onCancelClick={this.onPinnedClick} />; | ||||
|         } else if (!myMember || myMember.membership !== "join") { | ||||
|         } else if (myMembership !== "join") { | ||||
|             // We do have a room object for this room, but we're not currently in it.
 | ||||
|             // We may have a 3rd party invite to it.
 | ||||
|             var inviterName = undefined; | ||||
| @ -1642,7 +1643,7 @@ module.exports = React.createClass({ | ||||
|         let messageComposer, searchInfo; | ||||
|         const canSpeak = ( | ||||
|             // joined and not showing search results
 | ||||
|             myMember && (myMember.membership == 'join') && !this.state.searchResults | ||||
|             myMembership == 'join' && !this.state.searchResults | ||||
|         ); | ||||
|         if (canSpeak) { | ||||
|             messageComposer = | ||||
| @ -1777,15 +1778,15 @@ module.exports = React.createClass({ | ||||
|                     oobData={this.props.oobData} | ||||
|                     editing={this.state.editingRoomSettings} | ||||
|                     saving={this.state.uploadingRoomSettings} | ||||
|                     inRoom={myMember && myMember.membership === 'join'} | ||||
|                     inRoom={myMembership === 'join'} | ||||
|                     collapsedRhs={this.props.collapsedRhs} | ||||
|                     onSearchClick={this.onSearchClick} | ||||
|                     onSettingsClick={this.onSettingsClick} | ||||
|                     onPinnedClick={this.onPinnedClick} | ||||
|                     onSaveClick={this.onSettingsSaveClick} | ||||
|                     onCancelClick={(aux && !hideCancel) ? this.onCancelClick : null} | ||||
|                     onForgetClick={(myMember && myMember.membership === "leave") ? this.onForgetClick : null} | ||||
|                     onLeaveClick={(myMember && myMember.membership === "join") ? this.onLeaveClick : null} | ||||
|                     onForgetClick={(myMembership === "leave") ? this.onForgetClick : null} | ||||
|                     onLeaveClick={(myMembership === "join") ? this.onLeaveClick : null} | ||||
|                 /> | ||||
|                 { auxPanel } | ||||
|                 <div className={fadableSectionClasses}> | ||||
|  | ||||
| @ -346,20 +346,18 @@ module.exports = React.createClass({ | ||||
|     }, | ||||
| 
 | ||||
|     render: function() { | ||||
|         const myMember = this.props.room.getMember( | ||||
|             MatrixClientPeg.get().credentials.userId, | ||||
|         ); | ||||
|         const myMembership = this.props.room.getMyMembership(); | ||||
| 
 | ||||
|         // Can't set notif level or tags on non-join rooms
 | ||||
|         if (myMember.membership !== 'join') { | ||||
|             return this._renderLeaveMenu(myMember.membership); | ||||
|         if (myMembership !== 'join') { | ||||
|             return this._renderLeaveMenu(myMembership); | ||||
|         } | ||||
| 
 | ||||
|         return ( | ||||
|             <div> | ||||
|                 { this._renderNotifMenu() } | ||||
|                 <hr className="mx_RoomTileContextMenu_separator" /> | ||||
|                 { this._renderLeaveMenu(myMember.membership) } | ||||
|                 { this._renderLeaveMenu(myMembership) } | ||||
|                 <hr className="mx_RoomTileContextMenu_separator" /> | ||||
|                 { this._renderRoomTagMenu() } | ||||
|             </div> | ||||
|  | ||||
| @ -794,15 +794,15 @@ module.exports = React.createClass({ | ||||
|         } | ||||
| 
 | ||||
|         let leaveButton = null; | ||||
|         const myMember = this.props.room.getMember(myUserId); | ||||
|         if (myMember) { | ||||
|             if (myMember.membership === "join") { | ||||
|         const myMemberShip = this.props.room.getMyMembership(); | ||||
|         if (myMemberShip) { | ||||
|             if (myMemberShip === "join") { | ||||
|                 leaveButton = ( | ||||
|                     <AccessibleButton className="mx_RoomSettings_leaveButton" onClick={this.onLeaveClick}> | ||||
|                         { _t('Leave room') } | ||||
|                     </AccessibleButton> | ||||
|                 ); | ||||
|             } else if (myMember.membership === "leave") { | ||||
|             } else if (myMemberShip === "leave") { | ||||
|                 leaveButton = ( | ||||
|                     <AccessibleButton className="mx_RoomSettings_leaveButton" onClick={this.onForgetClick}> | ||||
|                         { _t('Forget room') } | ||||
|  | ||||
| @ -256,6 +256,7 @@ export function mkStubRoom(roomId = null) { | ||||
|         getAccountData: () => null, | ||||
|         hasMembershipState: () => null, | ||||
|         getVersion: () => '1', | ||||
|         getMyMembership: () => "join", | ||||
|         currentState: { | ||||
|             getStateEvents: sinon.stub(), | ||||
|             mayClientSendStateEvent: sinon.stub().returns(true), | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user