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
7 changed files with 25 additions and 26 deletions
|
@ -480,7 +480,7 @@ function getMembershipCount(event, roomId) {
|
||||||
sendError(event, _t('This room is not recognised.'));
|
sendError(event, _t('This room is not recognised.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const count = room.getJoinedMembers().length;
|
const count = room.getJoinedMemberCount();
|
||||||
sendResponse(event, count);
|
sendResponse(event, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -497,12 +497,11 @@ function canSendEvent(event, roomId) {
|
||||||
sendError(event, _t('This room is not recognised.'));
|
sendError(event, _t('This room is not recognised.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const me = client.credentials.userId;
|
if (room.getMyMembership() !== "join") {
|
||||||
const member = room.getMember(me);
|
|
||||||
if (!member || member.membership !== "join") {
|
|
||||||
sendError(event, _t('You are not in this room.'));
|
sendError(event, _t('You are not in this room.'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
const me = client.credentials.userId;
|
||||||
|
|
||||||
let canSend = false;
|
let canSend = false;
|
||||||
if (isState) {
|
if (isState) {
|
||||||
|
|
|
@ -72,7 +72,7 @@ ConferenceCall.prototype._getConferenceUserRoom = function() {
|
||||||
for (var i = 0; i < rooms.length; i++) {
|
for (var i = 0; i < rooms.length; i++) {
|
||||||
var confUser = rooms[i].getMember(this.confUserId);
|
var confUser = rooms[i].getMember(this.confUserId);
|
||||||
if (confUser && confUser.membership === "join" &&
|
if (confUser && confUser.membership === "join" &&
|
||||||
rooms[i].getJoinedMembers().length === 2) {
|
rooms[i].getJoinedMemberCount() === 2) {
|
||||||
confRoom = rooms[i];
|
confRoom = rooms[i];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -280,7 +280,7 @@ module.exports = React.createClass({
|
||||||
const room = cli.getRoom(this.props.roomId);
|
const room = cli.getRoom(this.props.roomId);
|
||||||
let isUserInRoom;
|
let isUserInRoom;
|
||||||
if (room) {
|
if (room) {
|
||||||
const numMembers = room.getJoinedMembers().length;
|
const numMembers = room.getJoinedMemberCount();
|
||||||
membersTitle = _t('%(count)s Members', { count: numMembers });
|
membersTitle = _t('%(count)s Members', { count: numMembers });
|
||||||
membersBadge = <div title={membersTitle}>{ formatCount(numMembers) }</div>;
|
membersBadge = <div title={membersTitle}>{ formatCount(numMembers) }</div>;
|
||||||
isUserInRoom = room.hasMembershipState(this.context.matrixClient.credentials.userId, 'join');
|
isUserInRoom = room.hasMembershipState(this.context.matrixClient.credentials.userId, 'join');
|
||||||
|
|
|
@ -363,7 +363,7 @@ module.exports = React.createClass({
|
||||||
// XXX: EVIL HACK to autofocus inviting on empty rooms.
|
// XXX: EVIL HACK to autofocus inviting on empty rooms.
|
||||||
// We use the setTimeout to avoid racing with focus_composer.
|
// We use the setTimeout to avoid racing with focus_composer.
|
||||||
if (this.state.room &&
|
if (this.state.room &&
|
||||||
this.state.room.getJoinedMembers().length == 1 &&
|
this.state.room.getJoinedMemberCount() == 1 &&
|
||||||
this.state.room.getLiveTimeline() &&
|
this.state.room.getLiveTimeline() &&
|
||||||
this.state.room.getLiveTimeline().getEvents() &&
|
this.state.room.getLiveTimeline().getEvents() &&
|
||||||
this.state.room.getLiveTimeline().getEvents().length <= 6) {
|
this.state.room.getLiveTimeline().getEvents().length <= 6) {
|
||||||
|
@ -1507,9 +1507,8 @@ module.exports = React.createClass({
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const myUserId = MatrixClientPeg.get().credentials.userId;
|
const myMembership = this.state.room.getMyMembership();
|
||||||
const myMember = this.state.room.getMember(myUserId);
|
if (myMembership == 'invite') {
|
||||||
if (myMember && myMember.membership == 'invite') {
|
|
||||||
if (this.state.joining || this.state.rejecting) {
|
if (this.state.joining || this.state.rejecting) {
|
||||||
return (
|
return (
|
||||||
<div className="mx_RoomView">
|
<div className="mx_RoomView">
|
||||||
|
@ -1517,6 +1516,8 @@ module.exports = React.createClass({
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
|
const myUserId = MatrixClientPeg.get().credentials.userId;
|
||||||
|
const myMember = this.state.room.getMember(myUserId);
|
||||||
const inviteEvent = myMember.events.member;
|
const inviteEvent = myMember.events.member;
|
||||||
var inviterName = inviteEvent.sender ? inviteEvent.sender.name : inviteEvent.getSender();
|
var inviterName = inviteEvent.sender ? inviteEvent.sender.name : inviteEvent.getSender();
|
||||||
|
|
||||||
|
@ -1600,7 +1601,7 @@ module.exports = React.createClass({
|
||||||
} else if (this.state.showingPinned) {
|
} else if (this.state.showingPinned) {
|
||||||
hideCancel = true; // has own cancel
|
hideCancel = true; // has own cancel
|
||||||
aux = <PinnedEventsPanel room={this.state.room} onCancelClick={this.onPinnedClick} />;
|
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 do have a room object for this room, but we're not currently in it.
|
||||||
// We may have a 3rd party invite to it.
|
// We may have a 3rd party invite to it.
|
||||||
var inviterName = undefined;
|
var inviterName = undefined;
|
||||||
|
@ -1642,7 +1643,7 @@ module.exports = React.createClass({
|
||||||
let messageComposer, searchInfo;
|
let messageComposer, searchInfo;
|
||||||
const canSpeak = (
|
const canSpeak = (
|
||||||
// joined and not showing search results
|
// joined and not showing search results
|
||||||
myMember && (myMember.membership == 'join') && !this.state.searchResults
|
myMembership == 'join' && !this.state.searchResults
|
||||||
);
|
);
|
||||||
if (canSpeak) {
|
if (canSpeak) {
|
||||||
messageComposer =
|
messageComposer =
|
||||||
|
@ -1777,15 +1778,15 @@ module.exports = React.createClass({
|
||||||
oobData={this.props.oobData}
|
oobData={this.props.oobData}
|
||||||
editing={this.state.editingRoomSettings}
|
editing={this.state.editingRoomSettings}
|
||||||
saving={this.state.uploadingRoomSettings}
|
saving={this.state.uploadingRoomSettings}
|
||||||
inRoom={myMember && myMember.membership === 'join'}
|
inRoom={myMembership === 'join'}
|
||||||
collapsedRhs={this.props.collapsedRhs}
|
collapsedRhs={this.props.collapsedRhs}
|
||||||
onSearchClick={this.onSearchClick}
|
onSearchClick={this.onSearchClick}
|
||||||
onSettingsClick={this.onSettingsClick}
|
onSettingsClick={this.onSettingsClick}
|
||||||
onPinnedClick={this.onPinnedClick}
|
onPinnedClick={this.onPinnedClick}
|
||||||
onSaveClick={this.onSettingsSaveClick}
|
onSaveClick={this.onSettingsSaveClick}
|
||||||
onCancelClick={(aux && !hideCancel) ? this.onCancelClick : null}
|
onCancelClick={(aux && !hideCancel) ? this.onCancelClick : null}
|
||||||
onForgetClick={(myMember && myMember.membership === "leave") ? this.onForgetClick : null}
|
onForgetClick={(myMembership === "leave") ? this.onForgetClick : null}
|
||||||
onLeaveClick={(myMember && myMember.membership === "join") ? this.onLeaveClick : null}
|
onLeaveClick={(myMembership === "join") ? this.onLeaveClick : null}
|
||||||
/>
|
/>
|
||||||
{ auxPanel }
|
{ auxPanel }
|
||||||
<div className={fadableSectionClasses}>
|
<div className={fadableSectionClasses}>
|
||||||
|
|
|
@ -346,20 +346,18 @@ module.exports = React.createClass({
|
||||||
},
|
},
|
||||||
|
|
||||||
render: function() {
|
render: function() {
|
||||||
const myMember = this.props.room.getMember(
|
const myMembership = this.props.room.getMyMembership();
|
||||||
MatrixClientPeg.get().credentials.userId,
|
|
||||||
);
|
|
||||||
|
|
||||||
// Can't set notif level or tags on non-join rooms
|
// Can't set notif level or tags on non-join rooms
|
||||||
if (myMember.membership !== 'join') {
|
if (myMembership !== 'join') {
|
||||||
return this._renderLeaveMenu(myMember.membership);
|
return this._renderLeaveMenu(myMembership);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
{ this._renderNotifMenu() }
|
{ this._renderNotifMenu() }
|
||||||
<hr className="mx_RoomTileContextMenu_separator" />
|
<hr className="mx_RoomTileContextMenu_separator" />
|
||||||
{ this._renderLeaveMenu(myMember.membership) }
|
{ this._renderLeaveMenu(myMembership) }
|
||||||
<hr className="mx_RoomTileContextMenu_separator" />
|
<hr className="mx_RoomTileContextMenu_separator" />
|
||||||
{ this._renderRoomTagMenu() }
|
{ this._renderRoomTagMenu() }
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -794,15 +794,15 @@ module.exports = React.createClass({
|
||||||
}
|
}
|
||||||
|
|
||||||
let leaveButton = null;
|
let leaveButton = null;
|
||||||
const myMember = this.props.room.getMember(myUserId);
|
const myMemberShip = this.props.room.getMyMembership();
|
||||||
if (myMember) {
|
if (myMemberShip) {
|
||||||
if (myMember.membership === "join") {
|
if (myMemberShip === "join") {
|
||||||
leaveButton = (
|
leaveButton = (
|
||||||
<AccessibleButton className="mx_RoomSettings_leaveButton" onClick={this.onLeaveClick}>
|
<AccessibleButton className="mx_RoomSettings_leaveButton" onClick={this.onLeaveClick}>
|
||||||
{ _t('Leave room') }
|
{ _t('Leave room') }
|
||||||
</AccessibleButton>
|
</AccessibleButton>
|
||||||
);
|
);
|
||||||
} else if (myMember.membership === "leave") {
|
} else if (myMemberShip === "leave") {
|
||||||
leaveButton = (
|
leaveButton = (
|
||||||
<AccessibleButton className="mx_RoomSettings_leaveButton" onClick={this.onForgetClick}>
|
<AccessibleButton className="mx_RoomSettings_leaveButton" onClick={this.onForgetClick}>
|
||||||
{ _t('Forget room') }
|
{ _t('Forget room') }
|
||||||
|
|
|
@ -256,6 +256,7 @@ export function mkStubRoom(roomId = null) {
|
||||||
getAccountData: () => null,
|
getAccountData: () => null,
|
||||||
hasMembershipState: () => null,
|
hasMembershipState: () => null,
|
||||||
getVersion: () => '1',
|
getVersion: () => '1',
|
||||||
|
getMyMembership: () => "join",
|
||||||
currentState: {
|
currentState: {
|
||||||
getStateEvents: sinon.stub(),
|
getStateEvents: sinon.stub(),
|
||||||
mayClientSendStateEvent: sinon.stub().returns(true),
|
mayClientSendStateEvent: sinon.stub().returns(true),
|
||||||
|
|
Loading…
Reference in a new issue