Merge pull request #3829 from Cadair/login_group
Add a Login button to startAnyRegistrationFlow
This commit is contained in:
commit
60e26db729
5 changed files with 38 additions and 14 deletions
|
@ -39,6 +39,8 @@ export const SAFE_LOCALPART_REGEX = /^[a-z0-9=_\-./]+$/;
|
||||||
* If true, goes to the home page if the user cancels the action
|
* If true, goes to the home page if the user cancels the action
|
||||||
* @param {bool} options.go_welcome_on_cancel
|
* @param {bool} options.go_welcome_on_cancel
|
||||||
* If true, goes to the welcome page if the user cancels the action
|
* If true, goes to the welcome page if the user cancels the action
|
||||||
|
* @param {bool} options.screen_after
|
||||||
|
* If present the screen to redirect to after a successful login or register.
|
||||||
*/
|
*/
|
||||||
export async function startAnyRegistrationFlow(options) {
|
export async function startAnyRegistrationFlow(options) {
|
||||||
if (options === undefined) options = {};
|
if (options === undefined) options = {};
|
||||||
|
@ -66,13 +68,21 @@ export async function startAnyRegistrationFlow(options) {
|
||||||
// });
|
// });
|
||||||
//} else {
|
//} else {
|
||||||
const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog");
|
const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog");
|
||||||
Modal.createTrackedDialog('Registration required', '', QuestionDialog, {
|
const modal = Modal.createTrackedDialog('Registration required', '', QuestionDialog, {
|
||||||
title: _t("Registration Required"),
|
hasCancelButton: true,
|
||||||
description: _t("You need to register to do this. Would you like to register now?"),
|
quitOnly: true,
|
||||||
button: _t("Register"),
|
title: _t("Sign In or Create Account"),
|
||||||
|
description: _t("Use your account or create a new one to continue."),
|
||||||
|
button: _t("Create Account"),
|
||||||
|
extraButtons: [
|
||||||
|
<button key="start_login" onClick={() => {
|
||||||
|
modal.close();
|
||||||
|
dis.dispatch({action: 'start_login', screenAfterLogin: options.screen_after});
|
||||||
|
}}>{ _t('Sign In') }</button>,
|
||||||
|
],
|
||||||
onFinished: (proceed) => {
|
onFinished: (proceed) => {
|
||||||
if (proceed) {
|
if (proceed) {
|
||||||
dis.dispatch({action: 'start_registration'});
|
dis.dispatch({action: 'start_registration', screenAfterLogin: options.screen_after});
|
||||||
} else if (options.go_home_on_cancel) {
|
} else if (options.go_home_on_cancel) {
|
||||||
dis.dispatch({action: 'view_home_page'});
|
dis.dispatch({action: 'view_home_page'});
|
||||||
} else if (options.go_welcome_on_cancel) {
|
} else if (options.go_welcome_on_cancel) {
|
||||||
|
@ -101,4 +111,3 @@ export async function startAnyRegistrationFlow(options) {
|
||||||
// }
|
// }
|
||||||
// throw new Error("Register request succeeded when it should have returned 401!");
|
// throw new Error("Register request succeeded when it should have returned 401!");
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
|
@ -481,7 +481,7 @@ export default createReactClass({
|
||||||
group_id: groupId,
|
group_id: groupId,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
dis.dispatch({action: 'require_registration'});
|
dis.dispatch({action: 'require_registration', screen_after: {screen: `group/${groupId}`}});
|
||||||
willDoOnboarding = true;
|
willDoOnboarding = true;
|
||||||
}
|
}
|
||||||
if (stateKey === GroupStore.STATE_KEY.Summary) {
|
if (stateKey === GroupStore.STATE_KEY.Summary) {
|
||||||
|
@ -726,7 +726,7 @@ export default createReactClass({
|
||||||
|
|
||||||
_onJoinClick: async function() {
|
_onJoinClick: async function() {
|
||||||
if (this._matrixClient.isGuest()) {
|
if (this._matrixClient.isGuest()) {
|
||||||
dis.dispatch({action: 'require_registration'});
|
dis.dispatch({action: 'require_registration', screen_after: {screen: `group/${this.props.groupId}`}});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1008,6 +1008,10 @@ export default createReactClass({
|
||||||
// needs to be reset so that they can revisit /user/.. // (and trigger
|
// needs to be reset so that they can revisit /user/.. // (and trigger
|
||||||
// `_chatCreateOrReuse` again)
|
// `_chatCreateOrReuse` again)
|
||||||
go_welcome_on_cancel: true,
|
go_welcome_on_cancel: true,
|
||||||
|
screen_after: {
|
||||||
|
screen: `user/${this.props.config.welcomeUserId}`,
|
||||||
|
params: { action: 'chat' },
|
||||||
|
},
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1177,7 +1181,15 @@ export default createReactClass({
|
||||||
_onLoggedIn: async function() {
|
_onLoggedIn: async function() {
|
||||||
ThemeController.isLogin = false;
|
ThemeController.isLogin = false;
|
||||||
this.setStateForNewView({ view: VIEWS.LOGGED_IN });
|
this.setStateForNewView({ view: VIEWS.LOGGED_IN });
|
||||||
if (MatrixClientPeg.currentUserIsJustRegistered()) {
|
// If a specific screen is set to be shown after login, show that above
|
||||||
|
// all else, as it probably means the user clicked on something already.
|
||||||
|
if (this._screenAfterLogin && this._screenAfterLogin.screen) {
|
||||||
|
this.showScreen(
|
||||||
|
this._screenAfterLogin.screen,
|
||||||
|
this._screenAfterLogin.params,
|
||||||
|
);
|
||||||
|
this._screenAfterLogin = null;
|
||||||
|
} else if (MatrixClientPeg.currentUserIsJustRegistered()) {
|
||||||
MatrixClientPeg.setJustRegisteredUserId(null);
|
MatrixClientPeg.setJustRegisteredUserId(null);
|
||||||
|
|
||||||
if (this.props.config.welcomeUserId && getCurrentLanguage().startsWith("en")) {
|
if (this.props.config.welcomeUserId && getCurrentLanguage().startsWith("en")) {
|
||||||
|
|
|
@ -32,6 +32,7 @@ export default createReactClass({
|
||||||
focus: PropTypes.bool,
|
focus: PropTypes.bool,
|
||||||
onFinished: PropTypes.func.isRequired,
|
onFinished: PropTypes.func.isRequired,
|
||||||
headerImage: PropTypes.string,
|
headerImage: PropTypes.string,
|
||||||
|
quitOnly: PropTypes.bool, // quitOnly doesn't show the cancel button just the quit [x].
|
||||||
},
|
},
|
||||||
|
|
||||||
getDefaultProps: function() {
|
getDefaultProps: function() {
|
||||||
|
@ -42,6 +43,7 @@ export default createReactClass({
|
||||||
focus: true,
|
focus: true,
|
||||||
hasCancelButton: true,
|
hasCancelButton: true,
|
||||||
danger: false,
|
danger: false,
|
||||||
|
quitOnly: false,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -73,7 +75,7 @@ export default createReactClass({
|
||||||
<DialogButtons primaryButton={this.props.button || _t('OK')}
|
<DialogButtons primaryButton={this.props.button || _t('OK')}
|
||||||
primaryButtonClass={primaryButtonClass}
|
primaryButtonClass={primaryButtonClass}
|
||||||
cancelButton={this.props.cancelButton}
|
cancelButton={this.props.cancelButton}
|
||||||
hasCancel={this.props.hasCancelButton}
|
hasCancel={this.props.hasCancelButton && !this.props.quitOnly}
|
||||||
onPrimaryButtonClick={this.onOk}
|
onPrimaryButtonClick={this.onOk}
|
||||||
focus={this.props.focus}
|
focus={this.props.focus}
|
||||||
onCancel={this.onCancel}
|
onCancel={this.onCancel}
|
||||||
|
|
|
@ -123,9 +123,10 @@
|
||||||
"Unable to enable Notifications": "Unable to enable Notifications",
|
"Unable to enable Notifications": "Unable to enable Notifications",
|
||||||
"This email address was not found": "This email address was not found",
|
"This email address was not found": "This email address was not found",
|
||||||
"Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Your email address does not appear to be associated with a Matrix ID on this Homeserver.",
|
"Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Your email address does not appear to be associated with a Matrix ID on this Homeserver.",
|
||||||
"Registration Required": "Registration Required",
|
"Sign In or Create Account": "Sign In or Create Account",
|
||||||
"You need to register to do this. Would you like to register now?": "You need to register to do this. Would you like to register now?",
|
"Use your account or create a new one to continue.": "Use your account or create a new one to continue.",
|
||||||
"Register": "Register",
|
"Create Account": "Create Account",
|
||||||
|
"Sign In": "Sign In",
|
||||||
"Default": "Default",
|
"Default": "Default",
|
||||||
"Restricted": "Restricted",
|
"Restricted": "Restricted",
|
||||||
"Moderator": "Moderator",
|
"Moderator": "Moderator",
|
||||||
|
@ -1066,7 +1067,6 @@
|
||||||
"Rejecting invite …": "Rejecting invite …",
|
"Rejecting invite …": "Rejecting invite …",
|
||||||
"Join the conversation with an account": "Join the conversation with an account",
|
"Join the conversation with an account": "Join the conversation with an account",
|
||||||
"Sign Up": "Sign Up",
|
"Sign Up": "Sign Up",
|
||||||
"Sign In": "Sign In",
|
|
||||||
"Loading room preview": "Loading room preview",
|
"Loading room preview": "Loading room preview",
|
||||||
"You were kicked from %(roomName)s by %(memberName)s": "You were kicked from %(roomName)s by %(memberName)s",
|
"You were kicked from %(roomName)s by %(memberName)s": "You were kicked from %(roomName)s by %(memberName)s",
|
||||||
"Reason: %(reason)s": "Reason: %(reason)s",
|
"Reason: %(reason)s": "Reason: %(reason)s",
|
||||||
|
@ -1804,6 +1804,7 @@
|
||||||
"Phone (optional)": "Phone (optional)",
|
"Phone (optional)": "Phone (optional)",
|
||||||
"Create your Matrix account on %(serverName)s": "Create your Matrix account on %(serverName)s",
|
"Create your Matrix account on %(serverName)s": "Create your Matrix account on %(serverName)s",
|
||||||
"Create your Matrix account on <underlinedServerName />": "Create your Matrix account on <underlinedServerName />",
|
"Create your Matrix account on <underlinedServerName />": "Create your Matrix account on <underlinedServerName />",
|
||||||
|
"Register": "Register",
|
||||||
"Set an email for account recovery. Use email or phone to optionally be discoverable by existing contacts.": "Set an email for account recovery. Use email or phone to optionally be discoverable by existing contacts.",
|
"Set an email for account recovery. Use email or phone to optionally be discoverable by existing contacts.": "Set an email for account recovery. Use email or phone to optionally be discoverable by existing contacts.",
|
||||||
"Set an email for account recovery. Use email to optionally be discoverable by existing contacts.": "Set an email for account recovery. Use email to optionally be discoverable by existing contacts.",
|
"Set an email for account recovery. Use email to optionally be discoverable by existing contacts.": "Set an email for account recovery. Use email to optionally be discoverable by existing contacts.",
|
||||||
"Enter your custom homeserver URL <a>What does this mean?</a>": "Enter your custom homeserver URL <a>What does this mean?</a>",
|
"Enter your custom homeserver URL <a>What does this mean?</a>": "Enter your custom homeserver URL <a>What does this mean?</a>",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue