From 38f3de75d42748a31e472e7759ec3b59c5a51410 Mon Sep 17 00:00:00 2001 From: ChuyB Date: Fri, 4 Oct 2024 14:36:39 -0400 Subject: [PATCH] =?UTF-8?q?A=C3=B1ade=20sugerencias=20de=20nombres=20de=20?= =?UTF-8?q?usuario=20al=20registrar=20un=20nuevo=20usuario?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/src/client/register.js | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/public/src/client/register.js b/public/src/client/register.js index d8144d2..2ac6345 100644 --- a/public/src/client/register.js +++ b/public/src/client/register.js @@ -131,11 +131,12 @@ define('forum/register', [ Promise.allSettled([ api.head(`/users/bySlug/${userslug}`, {}), api.head(`/groups/${username}`, {}), - ]).then((results) => { + ]).then(async (results) => { if (results.every(obj => obj.status === 'rejected')) { showSuccess(usernameInput, username_notify, successIcon); } else { - showError(usernameInput, username_notify, '[[error:username-taken]]'); + const suggestion = await findUsernameSuggestion(username); + showError(usernameInput, username_notify, '[[error:username-taken]]. Maybe try ' + suggestion); } callback(); @@ -143,6 +144,28 @@ define('forum/register', [ } } + async function findUsernameSuggestion(username){ + let suggestion; + let number = 123; + while(true) { + suggestion = username + number + const suggestionslug = slugify(suggestion); + const result = await Promise.allSettled([ + api.head(`/users/bySlug/${suggestionslug}`, {}), + api.head(`/groups/${suggestion}`, {}), + ]) + + if (result.every(obj => obj.status === 'rejected')) { + break; + } else { + const endNumber = (number % 10) + 1; + number = (number * 10) + endNumber; + } + } + + return suggestion; + } + function validatePassword(password, password_confirm) { const passwordInput = $('#password'); const password_notify = $('#password-notify'); @@ -215,4 +238,4 @@ define('forum/register', [ } return Register; -}); +}); \ No newline at end of file