From 4ca315c41bb9a459adccd93e9ccecbb890896fab Mon Sep 17 00:00:00 2001 From: Ben Date: Mon, 2 Feb 2026 17:45:54 +0000 Subject: [PATCH 1/2] Add automatic username suggestion with suffix when username is taken --- public/src/client/register.js | 36 +++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/public/src/client/register.js b/public/src/client/register.js index f989901e7b..4a319c729e 100644 --- a/public/src/client/register.js +++ b/public/src/client/register.js @@ -96,15 +96,30 @@ define('forum/register', [ } }, error: function (data) { - translator.translate(data.responseText, config.defaultLang, function (translated) { - if (data.status === 403 && data.responseText === 'Forbidden') { - window.location.href = config.relative_path + '/register?error=csrf-invalid'; - } else { - errorEl.find('p').text(translated); + let errorMessage = data.responseText; + + // Check if username-taken error + if (errorMessage === '[[error:username-taken]]') { + const username = $('#username').val(); + const suffix = 'suffix'; + const suggestedUsername = username + suffix; + + translator.translate(errorMessage, config.defaultLang, function (translatedError) { + errorEl.find('p').text(translatedError + '. Maybe try "' + suggestedUsername + '" instead.'); errorEl.removeClass('hidden'); registerBtn.removeClass('disabled'); - } - }); + }); + } else { + translator.translate(errorMessage, config.defaultLang, function (translated) { + if (data.status === 403 && data.responseText === 'Forbidden') { + window.location.href = config.relative_path + '/register?error=csrf-invalid'; + } else { + errorEl.find('p').text(translated); + errorEl.removeClass('hidden'); + registerBtn.removeClass('disabled'); + } + }); + } }, }); }); @@ -135,7 +150,12 @@ define('forum/register', [ if (results.every(obj => obj.status === 'rejected')) { showSuccess(usernameInput, username_notify, successIcon); } else { - showError(usernameInput, username_notify, '[[error:username-taken]]'); + // Username is taken - show error with suggestion + const suffix = 'suffix'; + const suggestedUsername = username + suffix; + translator.translate('[[error:username-taken]]', function (translatedError) { + showError(usernameInput, username_notify, translatedError + '. Maybe try "' + suggestedUsername + '" instead.'); + }); } callback(); From 0279d6f419319b7b163df0d0212b32d8bcf395cc Mon Sep 17 00:00:00 2001 From: bendnema Date: Mon, 2 Feb 2026 18:22:22 +0000 Subject: [PATCH 2/2] Changes to improve coverage --- public/src/client/register.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/public/src/client/register.js b/public/src/client/register.js index 4a319c729e..4ca7e4df14 100644 --- a/public/src/client/register.js +++ b/public/src/client/register.js @@ -96,9 +96,7 @@ define('forum/register', [ } }, error: function (data) { - let errorMessage = data.responseText; - - // Check if username-taken error + const errorMessage = data.responseText; if (errorMessage === '[[error:username-taken]]') { const username = $('#username').val(); const suffix = 'suffix';