Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/packages / features / Authentication / ResetFlow / Forms / ResetPasswordByEmailOrPhoneForm.js
Size: Mime:
import * as tslib_1 from "tslib";
import React from 'react';
import { isFunction } from 'exotic';
import { observer } from 'xmobx/mobx-react';
import { oneRouter } from '@skava/router';
import { FormState, ObserverForm } from '@skava/packages/ui/forms';
import { isValidTelephone } from '@skava/packages/ui/forms';
import { ContinueButton } from '@skava/packages/ui';
import { isErrorLikeResponse } from '@skava/is-error-like-response';
import { toastMessage } from '@skava/packages/core/notifications';
import { errorContainer } from '@skava/packages/core/notifications';
import { sessionContainer } from '@skava/packages/core/auth/session/container';
import { userContainer } from '@skava/packages/core/auth/user';
import { wording, errorKeyWords } from '../fixture';
import { toStatus } from '../state/deps';
class ResetPasswordByEmailOrPhone extends FormState {
    constructor() {
        super(...arguments);
        this.name = 'ResetPasswordByEmailOrPhone';
        this.inputsList = [
            {
                identity: 'email',
                type: 'text',
                value: '',
                className: 'reset-password-email-address',
                name: 'email',
                labelText: wording.email,
                maxLength: 50,
                wrapperClassName: 'reset-password-email-address-wrapper',
                validationType: 'emailOrPhone',
                errorMessageFor: 'emailAndPhone',
                qa: 'qa-reset-email-textbox',
                ariaLabel: wording.enterEmail,
            },
        ];
    }
}
const resetPasswordByEmailOrPhone = new ResetPasswordByEmailOrPhone();
function isErrorLikeResponseForUser(response) {
    const status = toStatus(response).toLowerCase();
    const findErrorResponse = (key) => {
        if (status.includes(key)) {
            return true;
        }
        else {
            return false;
        }
    };
    const result = errorKeyWords.find(findErrorResponse) || isErrorLikeResponse(response);
    return !!result;
}
const fields = ['email'];
let CreateNewPasswordForm = class CreateNewPasswordForm extends ObserverForm {
    constructor() {
        super(...arguments);
        this.shouldResetFormOnUnmount = true;
        this.fromResponseToToastMessage = (response) => {
            const status = toStatus(response).toLowerCase();
            const message = isErrorLikeResponseForUser(response) ? status : toastMessage.unregisteredAccount;
            return message;
        };
        this.updateToastMessageWith = (response) => {
            const errorMessage = this.fromResponseToToastMessage(response);
            const error = {
                errorMessage,
            };
            errorContainer.setError(error);
        };
        // @see https://bitbucket.org/skava-admin/reference-store/pull-requests/2043/dev/diff?w=1#Lsrc/views/widgets/Authentication/ResetFlow/wr/ResetPasswordByEmailOrPhone.tsxF92
        //
        // since mail setup is not done, resetParam is providedin the response of reset by email API
        // with the resetParam received, navigation to reset password page is done in the method navigateToResetPassword()
        this.navigateToResetPassword = (response) => {
            const resetParam = response.resetParam;
            if (resetParam) {
                // @todo  https://bitbucket.org/skava-admin/reference-store/pull-requests/2043/dev/diff?w=1#Lsrc/views/widgets/Authentication/ResetFlow/wr/ResetPasswordByEmailOrPhone.tsxT100
                oneRouter.forceUpdate('/signin');
            }
        };
        this.makeResetCall = async (serialized) => {
            let response = {};
            if (isValidTelephone(serialized.email)) {
                const isResetCode = true;
                response = await sessionContainer.resetPasswordThroughSms(serialized);
                this.updateToastMessageWith(response);
                if (isFunction(this.props.onResetSubmit)) {
                    this.props.onResetSubmit(isResetCode, serialized);
                }
            }
            else {
                const { email } = serialized;
                const resetByEmailParams = {
                    email,
                };
                response = await sessionContainer.resetPasswordThroughEmail(resetByEmailParams);
                this.updateToastMessageWith(response);
            }
            this.navigateToResetPassword(response);
        };
        this.handleSubmit = (event) => {
            // event.persist()
            event.preventDefault();
            if (this.validateForm()) {
                const serialized = this.state.toSerialized();
                console.warn(serialized);
                this.makeResetCall(serialized);
                // this.props.onSecurityCode(serialized);
            }
            else {
                console.warn('Form has invalid inputs!');
            }
        };
    }
    getFields(inputState, item) {
        const { userinfo } = userContainer;
        if (inputState.identity === item && inputState.value !== userinfo[item]) {
            inputState.setValue(userinfo[item]);
            this.forceUpdate();
        }
    }
    onPrefil(inputState) {
        const preFilledFields = fields.map(this.getFields.bind(this, inputState));
    }
    render() {
        return (React.createElement(this.Form, { setRef: this.state.setFormReference, "data-qa": "qa-email-container" },
            this.renderInputList(),
            React.createElement(ContinueButton, { className: "reset-continue-button", onClick: this.handleSubmit, text: wording.sendResetLink, qa: "qa-reset-password-button" })));
    }
};
CreateNewPasswordForm.defaultProps = {
    state: resetPasswordByEmailOrPhone,
};
CreateNewPasswordForm = tslib_1.__decorate([
    observer
], CreateNewPasswordForm);
export { CreateNewPasswordForm };
export default CreateNewPasswordForm;
//# sourceMappingURL=ResetPasswordByEmailOrPhoneForm.js.map