UNPKG

reldens

Version:
91 lines (84 loc) 3.53 kB
/** * * Reldens - RegistrationFormHandler * * Manages the player registration form for creating new accounts. Handles form submission, * password confirmation validation, terms and conditions acceptance, and initiates the game * session for newly registered players. * */ const { ErrorsBlockHandler } = require('./errors-block-handler'); const { GameConst } = require('../../constants'); /** * @typedef {import('../game-manager').GameManager} GameManager */ class RegistrationFormHandler { /** * @param {GameManager} gameManager */ constructor(gameManager) { this.gameManager = gameManager; this.gameDom = this.gameManager.gameDom; this.form = gameManager.gameDom.getElement(GameConst.SELECTORS.REGISTER_FORM); } /** * @returns {boolean} */ activateRegistration() { if(!this.form){ return false; } if(!this.gameManager.config.get('client/general/users/allowRegistration')){ this.form.classList.add('hidden'); return true; } ErrorsBlockHandler.reset(this.form); let selectors = GameConst.SELECTORS; let acceptTermsCheckbox = this.gameDom.getElement(selectors.TERMS.ACCEPT); let termsContainer = this.gameDom.getElement(selectors.TERMS.BOX); this.form.addEventListener('submit', (e) => { e.preventDefault(); if(!this.form.checkValidity()){ return false; } let password = this.gameDom.getElement(selectors.REGISTRATION.PASSWORD).value; let rePassword = this.gameDom.getElement(selectors.REGISTRATION.RE_PASSWORD).value; let responseErrorBlock = this.form.querySelector(selectors.RESPONSE_ERROR); if(password !== rePassword && responseErrorBlock){ // @TODO - BETA - Execute translations before the game engine starts. /* responseErrorBlock.innerHTML = this.gameManager.services.translator.t( 'game.passwordConfirmationNotMatch' ); */ responseErrorBlock.innerHTML = 'Password and confirmation does not match.'; return false; } if(!acceptTermsCheckbox.checked && responseErrorBlock){ // @TODO - BETA - Execute translations before the game engine starts. /* responseErrorBlock.innerHTML = this.gameManager.services.translator.t( 'game.pleaseReadTermsAndConditions' ); */ responseErrorBlock.innerHTML = 'Please read and accept the terms and conditions and continue.'; return false; } termsContainer?.classList.add(GameConst.CLASSES.HIDDEN); this.form.querySelector(selectors.LOADING_CONTAINER).classList.remove(GameConst.CLASSES.HIDDEN); let formData = { formId: this.form.id, email: this.gameDom.getElement(selectors.REGISTRATION.EMAIL).value, username: this.gameDom.getElement(selectors.REGISTRATION.USERNAME).value, password: password, rePassword: rePassword }; this.gameManager.startGame(formData, true); }); return true; } } module.exports.RegistrationFormHandler = RegistrationFormHandler;