diff --git a/public/language/en-US/error.json b/public/language/en-US/error.json index f12e15c..5b36809 100644 --- a/public/language/en-US/error.json +++ b/public/language/en-US/error.json @@ -31,7 +31,7 @@ "invalid-path": "Invalid path", "folder-exists": "Folder exists", "invalid-pagination-value": "Invalid pagination value, must be at least %1 and at most %2", - "username-taken": "Username taken", + "username-taken": "The username is already taken. Try octocat_ci3715.", "email-taken": "Email address is already taken.", "email-nochange": "The email entered is the same as the email already on file.", "email-invited": "Email was already invited", diff --git a/public/language/es/error.json b/public/language/es/error.json index c9a2e45..5f5d0fa 100644 --- a/public/language/es/error.json +++ b/public/language/es/error.json @@ -31,7 +31,7 @@ "invalid-path": "Invalid path", "folder-exists": "Folder exists", "invalid-pagination-value": "Número de página inválido, debe estar entre %1 y %2", - "username-taken": "Nombre de usuario ocupado", + "username-taken": "Nombre de usuario ya en uso. Pruebe utilizando octocat_ci3715.", "email-taken": "Email address is already taken.", "email-nochange": "The email entered is the same as the email already on file.", "email-invited": "Email was already invited", diff --git a/public/src/client/register.js b/public/src/client/register.js index d8144d2..790af2c 100644 --- a/public/src/client/register.js +++ b/public/src/client/register.js @@ -114,6 +114,21 @@ define('forum/register', [ $('#username').trigger('focus'); }; + function checkUsernameNotTaken(username, callback){ + + const username_notify = $('#username-notify'); + username_notify.text(''); + const usernameInput = $('#username'); + const userslug = slugify(username); + + Promise.allSettled([ + api.head(`/users/bySlug/${userslug}`, {}), + api.head(`/groups/${username}`, {}), + ]).then((results) => { + return (results.every(obj => obj.status === 'rejected')) + }); + } + function validateUsername(username, callback) { callback = callback || function () {}; @@ -128,18 +143,33 @@ define('forum/register', [ } else if (!utils.isUserNameValid(username) || !userslug) { showError(usernameInput, username_notify, '[[error:invalid-username]]'); } else { - Promise.allSettled([ - api.head(`/users/bySlug/${userslug}`, {}), - api.head(`/groups/${username}`, {}), - ]).then((results) => { - if (results.every(obj => obj.status === 'rejected')) { + + if (checkUsernameNotTaken(username, callback)) { showSuccess(usernameInput, username_notify, successIcon); } else { - showError(usernameInput, username_notify, '[[error:username-taken]]'); + + let usernameSuffix = 0; + let exampleUsername = username.concat(usernameSuffix.toString(),'_ci3715'); + + //placeholder para el codigo que revisaria que el nuevo username generado + // no este ya tomado tambien, y pueda calcularse otro si ese es el caso + //(ahorita esto genera un loop infinito, y yo no c hacer llamadas al backend por ahora) + /* + while(!checkUsernameNotTaken(exampleUsername, callback)){ + exampleUsername = username.concat(usernameSuffix.toString(),'_ci3715'); + usernameSuffix ++; + } + */ + + //showError(usernameInput, username_notify, '[[error:username-taken]]'); + // aqui hay que agregar un link con los error.json en los idiomas correspondientes que use lo que se calculo + //para los mensajes de error + showError(usernameInput, username_notify, `${username}?, really?!, why not ${exampleUsername} instead?`); } callback(); - }); + + } }