From 922a5f0f26cc7a4356bdb5a4b17e75458242090a Mon Sep 17 00:00:00 2001 From: otsmr Date: Sun, 26 Apr 2026 11:31:25 +0200 Subject: [PATCH] some small UI fixes --- .../localization/generated/app_localizations.dart | 14 ++++++++++---- .../generated/app_localizations_de.dart | 13 +++++++++---- .../generated/app_localizations_en.dart | 13 +++++++++---- .../generated/app_localizations_sv.dart | 13 +++++++++---- .../visual/components/verification_badge.comp.dart | 6 +++++- lib/src/visual/views/contact/contact.view.dart | 4 +++- lib/src/visual/views/settings/help/faq.view.dart | 8 ++++++-- .../help/faq/verification_bade_faq.view.dart | 5 ++--- 8 files changed, 53 insertions(+), 23 deletions(-) diff --git a/lib/src/localization/generated/app_localizations.dart b/lib/src/localization/generated/app_localizations.dart index 032918b8..d84ed265 100644 --- a/lib/src/localization/generated/app_localizations.dart +++ b/lib/src/localization/generated/app_localizations.dart @@ -976,6 +976,12 @@ abstract class AppLocalizations { /// **'User verified'** String get userVerifiedTitle; + /// No description provided for @contactVerifiedBy. + /// + /// In en, this message translates to: + /// **'Verified by {username}'** + String contactVerifiedBy(Object username); + /// No description provided for @verificationTypeQrScanned. /// /// In en, this message translates to: @@ -3067,25 +3073,25 @@ abstract class AppLocalizations { /// No description provided for @verificationBadgeGeneralDesc. /// /// In en, this message translates to: - /// **'The green checkmark gives you the certainty that you are messaging the right person.'** + /// **'The checkmark gives you the certainty that you are messaging the right person. Scan the contact\'s QR code to verify it.'** String get verificationBadgeGeneralDesc; /// No description provided for @verificationBadgeGreenDesc. /// /// In en, this message translates to: - /// **'Contact that you have personally verified via QR code. This also verified their public key.'** + /// **'A contact you have personally verified.'** String get verificationBadgeGreenDesc; /// No description provided for @verificationBadgeYellowDesc. /// /// In en, this message translates to: - /// **'(Coming soon) Contact whose QR code was scanned by one of your personally verified contacts.'** + /// **'A contact who has been verified by at least one of your contacts.'** String get verificationBadgeYellowDesc; /// No description provided for @verificationBadgeRedDesc. /// /// In en, this message translates to: - /// **'Unknown contact whose identity has not yet been verified.'** + /// **'A contact whose identity has not yet been verified.'** String get verificationBadgeRedDesc; /// No description provided for @chatEntryFlameRestored. diff --git a/lib/src/localization/generated/app_localizations_de.dart b/lib/src/localization/generated/app_localizations_de.dart index b236421f..4199501e 100644 --- a/lib/src/localization/generated/app_localizations_de.dart +++ b/lib/src/localization/generated/app_localizations_de.dart @@ -485,6 +485,11 @@ class AppLocalizationsDe extends AppLocalizations { @override String get userVerifiedTitle => 'Benutzer verifiziert'; + @override + String contactVerifiedBy(Object username) { + return 'Verifiziert von $username'; + } + @override String get verificationTypeQrScanned => 'Du hast den QR-Code gescannt.'; @@ -1712,19 +1717,19 @@ class AppLocalizationsDe extends AppLocalizations { @override String get verificationBadgeGeneralDesc => - 'Der grüne Haken gibt dir die Sicherheit, dass du mit der richtigen Person schreibst.'; + 'Der Haken gibt dir die Sicherheit, dass du mit der richtigen Person schreibst. Scanne einen Kontakt, um diesen zu verifizieren.'; @override String get verificationBadgeGreenDesc => - 'Kontakt, den du durch den QR-Code persönlich verifiziert hast. Dadurch wurde auch deren öffentlicher Schlüssel überprüft.'; + 'Ein Kontakt, den du persönlich verifiziert hast.'; @override String get verificationBadgeYellowDesc => - '(Coming soon) Kontakt, dessen QR-Code von einem deiner persönlich verifizierten Kontakte gescannt wurde.'; + 'Ein Kontakt, der von mind. einem deiner Kontakte verifiziert wurde.'; @override String get verificationBadgeRedDesc => - 'Unbekannter Kontakt, dessen Identität bisher nicht verifiziert wurde.'; + 'Ein Kontakt, dessen Identität noch nicht überprüft wurde.'; @override String chatEntryFlameRestored(Object count) { diff --git a/lib/src/localization/generated/app_localizations_en.dart b/lib/src/localization/generated/app_localizations_en.dart index 006dc7af..33f4a9e9 100644 --- a/lib/src/localization/generated/app_localizations_en.dart +++ b/lib/src/localization/generated/app_localizations_en.dart @@ -480,6 +480,11 @@ class AppLocalizationsEn extends AppLocalizations { @override String get userVerifiedTitle => 'User verified'; + @override + String contactVerifiedBy(Object username) { + return 'Verified by $username'; + } + @override String get verificationTypeQrScanned => 'You scanned their QR code.'; @@ -1700,19 +1705,19 @@ class AppLocalizationsEn extends AppLocalizations { @override String get verificationBadgeGeneralDesc => - 'The green checkmark gives you the certainty that you are messaging the right person.'; + 'The checkmark gives you the certainty that you are messaging the right person. Scan the contact\'s QR code to verify it.'; @override String get verificationBadgeGreenDesc => - 'Contact that you have personally verified via QR code. This also verified their public key.'; + 'A contact you have personally verified.'; @override String get verificationBadgeYellowDesc => - '(Coming soon) Contact whose QR code was scanned by one of your personally verified contacts.'; + 'A contact who has been verified by at least one of your contacts.'; @override String get verificationBadgeRedDesc => - 'Unknown contact whose identity has not yet been verified.'; + 'A contact whose identity has not yet been verified.'; @override String chatEntryFlameRestored(Object count) { diff --git a/lib/src/localization/generated/app_localizations_sv.dart b/lib/src/localization/generated/app_localizations_sv.dart index aaad51cd..fc9cce99 100644 --- a/lib/src/localization/generated/app_localizations_sv.dart +++ b/lib/src/localization/generated/app_localizations_sv.dart @@ -480,6 +480,11 @@ class AppLocalizationsSv extends AppLocalizations { @override String get userVerifiedTitle => 'User verified'; + @override + String contactVerifiedBy(Object username) { + return 'Verified by $username'; + } + @override String get verificationTypeQrScanned => 'You scanned their QR code.'; @@ -1700,19 +1705,19 @@ class AppLocalizationsSv extends AppLocalizations { @override String get verificationBadgeGeneralDesc => - 'The green checkmark gives you the certainty that you are messaging the right person.'; + 'The checkmark gives you the certainty that you are messaging the right person. Scan the contact\'s QR code to verify it.'; @override String get verificationBadgeGreenDesc => - 'Contact that you have personally verified via QR code. This also verified their public key.'; + 'A contact you have personally verified.'; @override String get verificationBadgeYellowDesc => - '(Coming soon) Contact whose QR code was scanned by one of your personally verified contacts.'; + 'A contact who has been verified by at least one of your contacts.'; @override String get verificationBadgeRedDesc => - 'Unknown contact whose identity has not yet been verified.'; + 'A contact whose identity has not yet been verified.'; @override String chatEntryFlameRestored(Object count) { diff --git a/lib/src/visual/components/verification_badge.comp.dart b/lib/src/visual/components/verification_badge.comp.dart index 2971b2bf..0d50513c 100644 --- a/lib/src/visual/components/verification_badge.comp.dart +++ b/lib/src/visual/components/verification_badge.comp.dart @@ -89,7 +89,11 @@ class _VerificationBadgeCompState extends State { @override Widget build(BuildContext context) { - if (!_isVerified && widget.showOnlyIfVerified) return Container(); + if (!_isVerified && + !_isVerifiedByTransferredTrust && + widget.showOnlyIfVerified) { + return Container(); + } return GestureDetector( onTap: (!widget.clickable) ? null diff --git a/lib/src/visual/views/contact/contact.view.dart b/lib/src/visual/views/contact/contact.view.dart index 0a6f51a2..6fe9e83b 100644 --- a/lib/src/visual/views/contact/contact.view.dart +++ b/lib/src/visual/views/contact/contact.view.dart @@ -288,7 +288,9 @@ class _ContactViewState extends State { (tt) => ListTile( dense: true, title: Text( - 'Verifiziert von ${getContactDisplayName(tt.$1)}', + context.lang.contactVerifiedBy( + getContactDisplayName(tt.$1), + ), ), trailing: Text( DateFormat.yMd( diff --git a/lib/src/visual/views/settings/help/faq.view.dart b/lib/src/visual/views/settings/help/faq.view.dart index c746dbea..0c358e49 100644 --- a/lib/src/visual/views/settings/help/faq.view.dart +++ b/lib/src/visual/views/settings/help/faq.view.dart @@ -19,7 +19,6 @@ class FaqView extends StatefulWidget { class _FaqViewState extends State { Map? _faqData; - String? _locale; late String domain; bool _noInternet = false; @@ -84,7 +83,12 @@ class _FaqViewState extends State { ); } - final faq = _faqData![_locale ?? 'en'] as Map; + final locale = Localizations.localeOf(context).languageCode; + var faq = _faqData!['en'] as Map; + if (_faqData!.containsKey(locale)) { + faq = _faqData![locale] as Map; + } + final sortedCategories = faq.entries.toList() ..sort((a, b) { final aPriority = (a.value['meta']['priority'] as num? ?? 0).toInt(); diff --git a/lib/src/visual/views/settings/help/faq/verification_bade_faq.view.dart b/lib/src/visual/views/settings/help/faq/verification_bade_faq.view.dart index 51e30935..06428216 100644 --- a/lib/src/visual/views/settings/help/faq/verification_bade_faq.view.dart +++ b/lib/src/visual/views/settings/help/faq/verification_bade_faq.view.dart @@ -6,7 +6,7 @@ import 'package:twonly/src/utils/misc.dart'; import 'package:twonly/src/visual/elements/better_list_title.element.dart'; import 'package:twonly/src/visual/elements/svg_icon.element.dart'; -const colorVerificationBadgeYellow = Color(0xffffa500); +const colorVerificationBadgeYellow = Color.fromARGB(255, 0, 182, 238); class VerificationBadeFaqView extends StatefulWidget { const VerificationBadeFaqView({super.key}); @@ -48,7 +48,6 @@ class _VerificationBadeFaqViewState extends State { description: context.lang.verificationBadgeRedDesc, ), const SizedBox(height: 20), - const SizedBox(height: 20), BetterListTile( leading: const FaIcon(FontAwesomeIcons.camera), text: context.lang.scanOtherProfile, @@ -66,7 +65,7 @@ class _VerificationBadeFaqViewState extends State { Widget _buildItem({required Widget icon, required String description}) { return Padding( - padding: const EdgeInsets.symmetric(vertical: 40), + padding: const EdgeInsets.symmetric(vertical: 25), child: Row( children: [ icon,