diff --git a/src/components/structures/MatrixChat.js b/src/components/structures/MatrixChat.js index ac328f8387..56cf81b985 100644 --- a/src/components/structures/MatrixChat.js +++ b/src/components/structures/MatrixChat.js @@ -2,6 +2,7 @@ Copyright 2015, 2016 OpenMarket Ltd Copyright 2017 Vector Creations Ltd Copyright 2017-2019 New Vector Ltd +Copyright 2019 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -435,9 +436,15 @@ export default React.createClass({ break; case 'start_registration': // This starts the full registration flow + if (payload.screenAfterLogin) { + this._screenAfterLogin = payload.screenAfterLogin; + } this._startRegistration(payload.params || {}); break; case 'start_login': + if (payload.screenAfterLogin) { + this._screenAfterLogin = payload.screenAfterLogin; + } this.setStateForNewView({ view: VIEWS.LOGIN, }); diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js index d91a600582..cda3f60fce 100644 --- a/src/components/structures/RoomView.js +++ b/src/components/structures/RoomView.js @@ -2,6 +2,7 @@ Copyright 2015, 2016 OpenMarket Ltd Copyright 2017 Vector Creations Ltd Copyright 2018, 2019 New Vector Ltd +Copyright 2019 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -1552,6 +1553,7 @@ module.exports = React.createClass({ inviterName={inviterName} invitedEmail={invitedEmail} oobData={this.props.oobData} + signUrl={this.props.thirdPartyInvite ? this.props.thirdPartyInvite.inviteSignUrl : null} room={this.state.room} /> diff --git a/src/components/views/rooms/RoomPreviewBar.js b/src/components/views/rooms/RoomPreviewBar.js index cadd9a1c55..cbc44d0933 100644 --- a/src/components/views/rooms/RoomPreviewBar.js +++ b/src/components/views/rooms/RoomPreviewBar.js @@ -1,6 +1,7 @@ /* Copyright 2015, 2016 OpenMarket Ltd Copyright 2017 Vector Creations Ltd +Copyright 2019 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -57,6 +58,9 @@ module.exports = React.createClass({ // For third party invites, information passed about the room out-of-band oobData: PropTypes.object, + // For third party invites, a URL for a 3pid invite signing service + signUrl: PropTypes.string, + // 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. error: PropTypes.object, @@ -228,12 +232,25 @@ module.exports = React.createClass({ return memberContent.membership === "invite" && memberContent.is_direct; }, + _makeScreenAfterLogin() { + return { + screen: 'room', + params: { + email: this.props.invitedEmail, + signurl: this.props.signUrl, + room_name: this.props.oobData.room_name, + room_avatar_url: this.props.oobData.avatarUrl, + inviter_name: this.props.oobData.inviterName, + } + }; + }, + onLoginClick: function() { - dis.dispatch({ action: 'start_login' }); + dis.dispatch({ action: 'start_login', screenAfterLogin: this._makeScreenAfterLogin() }); }, onRegisterClick: function() { - dis.dispatch({ action: 'start_registration' }); + dis.dispatch({ action: 'start_registration', screenAfterLogin: this._makeScreenAfterLogin() }); }, render: function() {