You've already forked matrix-react-sdk
mirror of
https://github.com/matrix-org/matrix-react-sdk.git
synced 2025-11-05 23:10:41 +03:00
Fix email invites address-match checking
Riot was always saying the email address that the invite was sent
to was not associated with your account.
Two fixes here:
1. We mounted RoomPreviewBar with no invitedEmail prop and then
changed the prop later, but RoomPreviewBar only checked for it
on mount. Make sure we re-check when the props change.
2. Pass oobData through RoomPreviewBar because we need to pass it
to the RoomAvatar for 3pid invites.
https://github.com/vector-im/riot-web/issues/9816
This commit is contained in:
@@ -1551,6 +1551,7 @@ module.exports = React.createClass({
|
|||||||
joining={this.state.joining}
|
joining={this.state.joining}
|
||||||
inviterName={inviterName}
|
inviterName={inviterName}
|
||||||
invitedEmail={invitedEmail}
|
invitedEmail={invitedEmail}
|
||||||
|
oobData={this.props.oobData}
|
||||||
room={this.state.room}
|
room={this.state.room}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -1681,6 +1682,7 @@ module.exports = React.createClass({
|
|||||||
joining={this.state.joining}
|
joining={this.state.joining}
|
||||||
inviterName={inviterName}
|
inviterName={inviterName}
|
||||||
invitedEmail={invitedEmail}
|
invitedEmail={invitedEmail}
|
||||||
|
oobData={this.props.oobData}
|
||||||
canPreview={this.state.canPeek}
|
canPreview={this.state.canPeek}
|
||||||
room={this.state.room}
|
room={this.state.room}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -54,6 +54,9 @@ module.exports = React.createClass({
|
|||||||
// If invited by 3rd party invite, the email address the invite was sent to
|
// If invited by 3rd party invite, the email address the invite was sent to
|
||||||
invitedEmail: PropTypes.string,
|
invitedEmail: PropTypes.string,
|
||||||
|
|
||||||
|
// For third party invites, information passed about the room out-of-band
|
||||||
|
oobData: PropTypes.object,
|
||||||
|
|
||||||
// A standard client/server API error object. If supplied, indicates that the
|
// A standard client/server API error object. If supplied, indicates that the
|
||||||
// caller was unable to fetch details about the room for the given reason.
|
// caller was unable to fetch details about the room for the given reason.
|
||||||
error: PropTypes.object,
|
error: PropTypes.object,
|
||||||
@@ -87,6 +90,16 @@ module.exports = React.createClass({
|
|||||||
},
|
},
|
||||||
|
|
||||||
componentWillMount: function() {
|
componentWillMount: function() {
|
||||||
|
this._checkInvitedEmail();
|
||||||
|
},
|
||||||
|
|
||||||
|
componentDidUpdate: function(prevProps, prevState) {
|
||||||
|
if (this.props.invitedEmail !== prevProps.invitedEmail || this.props.inviterName !== prevProps.inviterName) {
|
||||||
|
this._checkInvitedEmail();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_checkInvitedEmail: function() {
|
||||||
// If this is an invite and we've been told what email
|
// If this is an invite and we've been told what email
|
||||||
// address was invited, fetch the user's list of Threepids
|
// address was invited, fetch the user's list of Threepids
|
||||||
// so we can check them against the one that was invited
|
// so we can check them against the one that was invited
|
||||||
@@ -335,7 +348,7 @@ module.exports = React.createClass({
|
|||||||
}
|
}
|
||||||
case MessageCase.Invite: {
|
case MessageCase.Invite: {
|
||||||
const RoomAvatar = sdk.getComponent("views.avatars.RoomAvatar");
|
const RoomAvatar = sdk.getComponent("views.avatars.RoomAvatar");
|
||||||
const avatar = <RoomAvatar room={this.props.room} />;
|
const avatar = <RoomAvatar room={this.props.room} oobData={this.props.oobData} />;
|
||||||
|
|
||||||
const inviteMember = this._getInviteMember();
|
const inviteMember = this._getInviteMember();
|
||||||
let inviterElement;
|
let inviterElement;
|
||||||
|
|||||||
Reference in New Issue
Block a user