From 849102dd3b71aeb3bb53f395af0ddc278e589aeb Mon Sep 17 00:00:00 2001 From: otsmr Date: Sat, 17 Jan 2026 17:20:33 +0100 Subject: [PATCH] improve error messages for additional accounts --- .../generated/app_localizations.dart | 10 +++++-- .../generated/app_localizations_de.dart | 10 +++++-- .../generated/app_localizations_en.dart | 10 +++++-- .../generated/app_localizations_sv.dart | 10 +++++-- lib/src/localization/translations | 2 +- .../subscription/additional_users.view.dart | 27 ++++++++++++++++--- 6 files changed, 57 insertions(+), 12 deletions(-) diff --git a/lib/src/localization/generated/app_localizations.dart b/lib/src/localization/generated/app_localizations.dart index 2d06c99..31210bc 100644 --- a/lib/src/localization/generated/app_localizations.dart +++ b/lib/src/localization/generated/app_localizations.dart @@ -2887,8 +2887,14 @@ abstract class AppLocalizations { /// No description provided for @additionalUserAddError. /// /// In en, this message translates to: - /// **'Could not add additional user. Try again later.'** - String get additionalUserAddError; + /// **'{username} could not be added, please try again later.'** + String additionalUserAddError(Object username); + + /// No description provided for @additionalUserAddErrorNotInFreePlan. + /// + /// In en, this message translates to: + /// **'{username} is already on a paid plan and therefore could not be added.'** + String additionalUserAddErrorNotInFreePlan(Object username); /// No description provided for @additionalUserAddButton. /// diff --git a/lib/src/localization/generated/app_localizations_de.dart b/lib/src/localization/generated/app_localizations_de.dart index 03a4ebd..2543dd9 100644 --- a/lib/src/localization/generated/app_localizations_de.dart +++ b/lib/src/localization/generated/app_localizations_de.dart @@ -1601,8 +1601,14 @@ class AppLocalizationsDe extends AppLocalizations { String get privacyPolicy => 'Datenschutzerklärung'; @override - String get additionalUserAddError => - 'Es konnte kein zusätzlicher Nutzer hinzugefügt werden. Versuche es später noch einmal.'; + String additionalUserAddError(Object username) { + return '$username konnte nicht hinzugefügt werden, bitte versuche es später noch einmal.'; + } + + @override + String additionalUserAddErrorNotInFreePlan(Object username) { + return '$username hat bereits einen bezahlten Tarif und konnte daher nicht hinzugefügt werden.'; + } @override String additionalUserAddButton(Object limit, Object used) { diff --git a/lib/src/localization/generated/app_localizations_en.dart b/lib/src/localization/generated/app_localizations_en.dart index c18d4d2..42fe67c 100644 --- a/lib/src/localization/generated/app_localizations_en.dart +++ b/lib/src/localization/generated/app_localizations_en.dart @@ -1590,8 +1590,14 @@ class AppLocalizationsEn extends AppLocalizations { String get privacyPolicy => 'Privacy policy'; @override - String get additionalUserAddError => - 'Could not add additional user. Try again later.'; + String additionalUserAddError(Object username) { + return '$username could not be added, please try again later.'; + } + + @override + String additionalUserAddErrorNotInFreePlan(Object username) { + return '$username is already on a paid plan and therefore could not be added.'; + } @override String additionalUserAddButton(Object limit, Object used) { diff --git a/lib/src/localization/generated/app_localizations_sv.dart b/lib/src/localization/generated/app_localizations_sv.dart index 883c221..46d4d9a 100644 --- a/lib/src/localization/generated/app_localizations_sv.dart +++ b/lib/src/localization/generated/app_localizations_sv.dart @@ -1590,8 +1590,14 @@ class AppLocalizationsSv extends AppLocalizations { String get privacyPolicy => 'Privacy policy'; @override - String get additionalUserAddError => - 'Could not add additional user. Try again later.'; + String additionalUserAddError(Object username) { + return '$username could not be added, please try again later.'; + } + + @override + String additionalUserAddErrorNotInFreePlan(Object username) { + return '$username is already on a paid plan and therefore could not be added.'; + } @override String additionalUserAddButton(Object limit, Object used) { diff --git a/lib/src/localization/translations b/lib/src/localization/translations index 471fed3..c1dc14a 160000 --- a/lib/src/localization/translations +++ b/lib/src/localization/translations @@ -1 +1 @@ -Subproject commit 471fed328ff1bf9316e9b86456ecdd68f4cfabca +Subproject commit c1dc14a53ff2854389a50f4aaeb26946ff925367 diff --git a/lib/src/views/settings/subscription/additional_users.view.dart b/lib/src/views/settings/subscription/additional_users.view.dart index 6fd5374..67fbcad 100644 --- a/lib/src/views/settings/subscription/additional_users.view.dart +++ b/lib/src/views/settings/subscription/additional_users.view.dart @@ -72,9 +72,30 @@ class _AdditionalUsersViewState extends State { for (final selectedUserId in selectedUserIds) { final res = await apiService.addAdditionalUser(Int64(selectedUserId)); if (res.isError && mounted) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text(context.lang.additionalUserAddError)), - ); + final contact = + await twonlyDB.contactsDao.getContactById(selectedUserId); + if (contact != null && mounted) { + if (res.error == ErrorCode.UserIsNotInFreePlan) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + context.lang.additionalUserAddErrorNotInFreePlan( + getContactDisplayName(contact), + ), + ), + ), + ); + } else { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + context.lang + .additionalUserAddError(getContactDisplayName(contact)), + ), + ), + ); + } + } } } await initAsync(force: true);