improve ui/ux when FAM send 422 on register with phone number #LINQT-2458

This commit is contained in:
Gaelle Braud 2026-04-15 13:45:02 +02:00
parent 19dc968113
commit fae55c0e09
5 changed files with 32 additions and 2 deletions

View file

@ -86,6 +86,14 @@ void RegisterPage::registerNewAccount(const QString &username,
accountManager = nullptr; accountManager = nullptr;
} }
}); });
connect(accountManager, &AccountManager::phoneNumberValidationNotAvailable, this,
[this, accountManager]() mutable {
App::postCoreAsync([this]() { emit phoneNumberValidationNotAvailable(); });
if (accountManager) {
accountManager->deleteLater();
accountManager = nullptr;
}
});
connect(accountManager, &AccountManager::tokenConversionSucceed, this, connect(accountManager, &AccountManager::tokenConversionSucceed, this,
[this, accountManager, address](QString convertedToken) { [this, accountManager, address](QString convertedToken) {
App::postCoreAsync([this, convertedToken, address]() { App::postCoreAsync([this, convertedToken, address]() {

View file

@ -53,6 +53,7 @@ signals:
const QString &sipIdentityAddress); const QString &sipIdentityAddress);
void registerNewAccountFailed(const QString &error); void registerNewAccountFailed(const QString &error);
void errorInField(const QString &field, const QString &error); void errorInField(const QString &field, const QString &error);
void phoneNumberValidationNotAvailable();
void tokenConversionSucceed(); void tokenConversionSucceed();
void linkingNewAccountWithCodeSucceed(); void linkingNewAccountWithCodeSucceed();
void linkingNewAccountWithCodeFailed(const QString &error); void linkingNewAccountWithCodeFailed(const QString &error);

View file

@ -311,7 +311,9 @@ void AccountManager::registerNewAccount(const QString &username,
} else if (request->getType() == } else if (request->getType() ==
linphone::AccountManagerServicesRequest::Type::SendPhoneNumberLinkingCodeBySms) { linphone::AccountManagerServicesRequest::Type::SendPhoneNumberLinkingCodeBySms) {
lInfo() << "[AccountManager] error sending code to phone number" << errorMessage; lInfo() << "[AccountManager] error sending code to phone number" << errorMessage;
if (parameterErrors) { if (statusCode == 422) {
emit phoneNumberValidationNotAvailable();
} else if (parameterErrors) {
for (const std::string &key : parameterErrors->getKeys()) { for (const std::string &key : parameterErrors->getKeys()) {
emit errorInField(Utils::coreStringToAppString(key), emit errorInField(Utils::coreStringToAppString(key),
Utils::coreStringToAppString(errorMessage)); Utils::coreStringToAppString(errorMessage));

View file

@ -66,6 +66,7 @@ signals:
void errorInField(const QString &field, const QString &error); void errorInField(const QString &field, const QString &error);
void linkingNewAccountWithCodeSucceed(); void linkingNewAccountWithCodeSucceed();
void linkingNewAccountWithCodeFailed(const QString &error); void linkingNewAccountWithCodeFailed(const QString &error);
void phoneNumberValidationNotAvailable();
private: private:
std::shared_ptr<AccountModel> mAccountModel; std::shared_ptr<AccountModel> mAccountModel;

View file

@ -15,6 +15,21 @@ LoginLayout {
readonly property string phoneNumber: phoneNumberInput.phoneNumber readonly property string phoneNumber: phoneNumberInput.phoneNumber
readonly property string email: emailInput.text readonly property string email: emailInput.text
Dialog {
id: phoneNumberNotAvailableDialog
//: Phone number validation not available
title: qsTr("phone_number_validation_not_available_title")
//: Phone number validation is not available, please use email account creation process
text: qsTr("phone_number_validation_not_available_text")
//: Register with an email
firstButtonText: qsTr("register_with_email_button")
onAccepted: {
bar.setCurrentIndex(1)
close()
}
onRejected: close()
}
Connections { Connections {
target: RegisterPageCpp target: RegisterPageCpp
function onErrorInField(field, errorMessage) { function onErrorInField(field, errorMessage) {
@ -29,6 +44,9 @@ LoginLayout {
console.log("register failed", errorMessage) console.log("register failed", errorMessage)
otherErrorText.setText(errorMessage) otherErrorText.setText(errorMessage)
} }
function onPhoneNumberValidationNotAvailable() {
phoneNumberNotAvailableDialog.open()
}
} }
titleContent: [ titleContent: [
@ -99,8 +117,8 @@ LoginLayout {
spacing: Utils.getSizeWithScreenRatio(50) spacing: Utils.getSizeWithScreenRatio(50)
TabBar { TabBar {
Layout.fillWidth: true
id: bar id: bar
Layout.fillWidth: true
spacing: Utils.getSizeWithScreenRatio(40) spacing: Utils.getSizeWithScreenRatio(40)
Layout.rightMargin: Math.max(Utils.getSizeWithScreenRatio(5), Utils.getSizeWithScreenRatio(127 - ((127/(DefaultStyle.defaultWidth - mainWindow.minimumWidth))*(DefaultStyle.defaultWidth-mainWindow.width)))) Layout.rightMargin: Math.max(Utils.getSizeWithScreenRatio(5), Utils.getSizeWithScreenRatio(127 - ((127/(DefaultStyle.defaultWidth - mainWindow.minimumWidth))*(DefaultStyle.defaultWidth-mainWindow.width))))
// "S'inscrire avec un numéro de téléphone" // "S'inscrire avec un numéro de téléphone"