Pass a new prop 'startingQueryParams' to pluck out the email from the URL

This is preferable to doing the way other QPs are passed (secret, etc) because
the link in the email wants to look like "#/room/<room_id_or_alias>" for guest
read-access (only bouncing you to /login if that room is not readable by guests).
This is hard to do in the current arch because we don't preserve QPs on /room
paths, and we do conditional executions depending on if it is a room ID or
alias. Rather than threading through the email in each section and creating
a fragile mess, just pass the *starting* set of query parameters through to
MatrixChat which can then do the Right Thing when the time comes.
This commit is contained in:
Kegan Dougal 2015-12-17 14:56:55 +00:00
parent 1eeb732625
commit 32bd9d155c
2 changed files with 13 additions and 3 deletions

View File

@ -41,7 +41,8 @@ module.exports = React.createClass({
config: React.PropTypes.object.isRequired,
ConferenceHandler: React.PropTypes.any,
onNewScreen: React.PropTypes.func,
registrationUrl: React.PropTypes.string
registrationUrl: React.PropTypes.string,
startingQueryParams: React.PropTypes.object
},
PageTypes: {
@ -75,6 +76,12 @@ module.exports = React.createClass({
return s;
},
getDefaultProps: function() {
return {
startingQueryParams: {}
};
},
componentDidMount: function() {
this.dispatcherRef = dis.register(this.onAction);
if (this.state.logged_in) {
@ -540,9 +547,9 @@ module.exports = React.createClass({
}
},
notifyNewScreen: function(screen) {
notifyNewScreen: function(screen, queryParamString) {
if (this.props.onNewScreen) {
this.props.onNewScreen(screen);
this.props.onNewScreen(screen, queryParamString);
}
},
@ -706,6 +713,7 @@ module.exports = React.createClass({
clientSecret={this.state.register_client_secret}
sessionId={this.state.register_session_id}
idSid={this.state.register_id_sid}
email={this.props.startingQueryParams.email}
hsUrl={this.props.config.default_hs_url}
isUrl={this.props.config.default_is_url}
registrationUrl={this.props.registrationUrl}

View File

@ -39,6 +39,7 @@ module.exports = React.createClass({
idSid: React.PropTypes.string,
hsUrl: React.PropTypes.string,
isUrl: React.PropTypes.string,
email: React.PropTypes.string,
// registration shouldn't know or care how login is done.
onLoginClick: React.PropTypes.func.isRequired
},
@ -185,6 +186,7 @@ module.exports = React.createClass({
registerStep = (
<RegistrationForm
showEmail={true}
defaultEmail={this.props.email}
minPasswordLength={MIN_PASSWORD_LENGTH}
onError={this.onFormValidationFailed}
onRegisterClick={this.onFormSubmit} />