75 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
/*
 | 
						|
Copyright 2018 New Vector Ltd
 | 
						|
 | 
						|
Licensed under the Apache License, Version 2.0 (the "License");
 | 
						|
you may not use this file except in compliance with the License.
 | 
						|
You may obtain a copy of the License at
 | 
						|
 | 
						|
    http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
 | 
						|
Unless required by applicable law or agreed to in writing, software
 | 
						|
distributed under the License is distributed on an "AS IS" BASIS,
 | 
						|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
See the License for the specific language governing permissions and
 | 
						|
limitations under the License.
 | 
						|
*/
 | 
						|
 | 
						|
/**
 | 
						|
 * Utility code for registering with a homeserver
 | 
						|
 * Note that this is currently *not* used by the actual
 | 
						|
 * registration code.
 | 
						|
 */
 | 
						|
 | 
						|
import dis from './dispatcher/dispatcher';
 | 
						|
import * as sdk from './index';
 | 
						|
import Modal from './Modal';
 | 
						|
import { _t } from './languageHandler';
 | 
						|
 | 
						|
// Regex for what a "safe" or "Matrix-looking" localpart would be.
 | 
						|
// TODO: Update as needed for https://github.com/matrix-org/matrix-doc/issues/1514
 | 
						|
export const SAFE_LOCALPART_REGEX = /^[a-z0-9=_\-./]+$/;
 | 
						|
 | 
						|
/**
 | 
						|
 * Starts either the ILAG or full registration flow, depending
 | 
						|
 * on what the HS supports
 | 
						|
 *
 | 
						|
 * @param {object} options
 | 
						|
 * @param {bool} options.go_home_on_cancel
 | 
						|
 *     If true, goes to the home page if the user cancels the action
 | 
						|
 * @param {bool} options.go_welcome_on_cancel
 | 
						|
 *     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) {
 | 
						|
    if (options === undefined) options = {};
 | 
						|
    const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog");
 | 
						|
    const modal = Modal.createTrackedDialog('Registration required', '', QuestionDialog, {
 | 
						|
        hasCancelButton: true,
 | 
						|
        quitOnly: true,
 | 
						|
        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) => {
 | 
						|
            if (proceed) {
 | 
						|
                dis.dispatch({ action: 'start_registration', screenAfterLogin: options.screen_after });
 | 
						|
            } else if (options.go_home_on_cancel) {
 | 
						|
                dis.dispatch({ action: 'view_home_page' });
 | 
						|
            } else if (options.go_welcome_on_cancel) {
 | 
						|
                dis.dispatch({ action: 'view_welcome_page' });
 | 
						|
            }
 | 
						|
        },
 | 
						|
    });
 | 
						|
}
 |