Skip to content

Commit 8b09d1a

Browse files
committed
Pin favorited contacts to top of contacts list
Adds a configurable setting to group favorited contacts under a Favorites header, with remaining contacts under All Contacts. Includes l10n strings and falls back to existing behavior when no favorites exist.
1 parent f1d93bd commit 8b09d1a

25 files changed

Lines changed: 454 additions & 32 deletions

lib/l10n/app_en.arb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,8 @@
265265
"appSettings_languageUk": "Українська",
266266
"appSettings_enableMessageTracing": "Enable Message Tracing",
267267
"appSettings_enableMessageTracingSubtitle": "Show detailed routing and timing metadata for messages",
268+
"appSettings_enableFavoritesSection": "Separate Favorites Section",
269+
"appSettings_enableFavoritesSectionSubtitle": "Show separate favorites section at top of contacts",
268270
"appSettings_notifications": "Notifications",
269271
"appSettings_enableNotifications": "Enable Notifications",
270272
"appSettings_enableNotificationsSubtitle": "Receive notifications for messages and adverts",
@@ -1986,6 +1988,8 @@
19861988
"contacts_zeroHopContactAdvertFailed": "Failed to send contact.",
19871989
"contacts_contactAdvertCopied": "Advert copied to Clipboard.",
19881990
"contacts_contactAdvertCopyFailed": "Copying advert to Clipboard failed.",
1991+
"contacts_sectionFavorites": "Favorites",
1992+
"contacts_sectionAll": "All Contacts",
19891993
"notification_activityTitle": "MeshCore Activity",
19901994
"notification_messagesCount": "{count} {count, plural, =1{message} other{messages}}",
19911995
"@notification_messagesCount": {

lib/l10n/app_localizations.dart

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1336,6 +1336,18 @@ abstract class AppLocalizations {
13361336
/// **'Show detailed routing and timing metadata for messages'**
13371337
String get appSettings_enableMessageTracingSubtitle;
13381338

1339+
/// No description provided for @appSettings_enableFavoritesSection.
1340+
///
1341+
/// In en, this message translates to:
1342+
/// **'Separate Favorites Section'**
1343+
String get appSettings_enableFavoritesSection;
1344+
1345+
/// No description provided for @appSettings_enableFavoritesSectionSubtitle.
1346+
///
1347+
/// In en, this message translates to:
1348+
/// **'Show separate favorites section at top of contacts'**
1349+
String get appSettings_enableFavoritesSectionSubtitle;
1350+
13391351
/// No description provided for @appSettings_notifications.
13401352
///
13411353
/// In en, this message translates to:
@@ -5926,6 +5938,18 @@ abstract class AppLocalizations {
59265938
/// **'Copying advert to Clipboard failed.'**
59275939
String get contacts_contactAdvertCopyFailed;
59285940

5941+
/// No description provided for @contacts_sectionFavorites.
5942+
///
5943+
/// In en, this message translates to:
5944+
/// **'Favorites'**
5945+
String get contacts_sectionFavorites;
5946+
5947+
/// No description provided for @contacts_sectionAll.
5948+
///
5949+
/// In en, this message translates to:
5950+
/// **'All Contacts'**
5951+
String get contacts_sectionAll;
5952+
59295953
/// No description provided for @notification_activityTitle.
59305954
///
59315955
/// In en, this message translates to:

lib/l10n/app_localizations_bg.dart

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -673,6 +673,13 @@ class AppLocalizationsBg extends AppLocalizations {
673673
String get appSettings_enableMessageTracingSubtitle =>
674674
'Показване на подробни метаданни за маршрутизация и синхронизация за съобщения';
675675

676+
@override
677+
String get appSettings_enableFavoritesSection => 'Separate Favorites Section';
678+
679+
@override
680+
String get appSettings_enableFavoritesSectionSubtitle =>
681+
'Show separate favorites section at top of contacts';
682+
676683
@override
677684
String get appSettings_notifications => 'Уведомления';
678685

@@ -3403,6 +3410,12 @@ class AppLocalizationsBg extends AppLocalizations {
34033410
String get contacts_contactAdvertCopyFailed =>
34043411
'Копирането на обявата в клипборда не успя.';
34053412

3413+
@override
3414+
String get contacts_sectionFavorites => 'Favorites';
3415+
3416+
@override
3417+
String get contacts_sectionAll => 'All Contacts';
3418+
34063419
@override
34073420
String get notification_activityTitle => 'Активност на MeshCore';
34083421

lib/l10n/app_localizations_de.dart

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,13 @@ class AppLocalizationsDe extends AppLocalizations {
668668
String get appSettings_enableMessageTracingSubtitle =>
669669
'Detaillierte Routing- und Timing-Metadaten für Nachrichten anzeigen';
670670

671+
@override
672+
String get appSettings_enableFavoritesSection => 'Separate Favorites Section';
673+
674+
@override
675+
String get appSettings_enableFavoritesSectionSubtitle =>
676+
'Show separate favorites section at top of contacts';
677+
671678
@override
672679
String get appSettings_notifications => 'Benachrichtigungen';
673680

@@ -3411,6 +3418,12 @@ class AppLocalizationsDe extends AppLocalizations {
34113418
String get contacts_contactAdvertCopyFailed =>
34123419
'Kopieren der Ankündigung in die Zwischenablage fehlgeschlagen.';
34133420

3421+
@override
3422+
String get contacts_sectionFavorites => 'Favorites';
3423+
3424+
@override
3425+
String get contacts_sectionAll => 'All Contacts';
3426+
34143427
@override
34153428
String get notification_activityTitle => 'MeshCore Aktivität';
34163429

lib/l10n/app_localizations_en.dart

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -658,6 +658,13 @@ class AppLocalizationsEn extends AppLocalizations {
658658
String get appSettings_enableMessageTracingSubtitle =>
659659
'Show detailed routing and timing metadata for messages';
660660

661+
@override
662+
String get appSettings_enableFavoritesSection => 'Separate Favorites Section';
663+
664+
@override
665+
String get appSettings_enableFavoritesSectionSubtitle =>
666+
'Show separate favorites section at top of contacts';
667+
661668
@override
662669
String get appSettings_notifications => 'Notifications';
663670

@@ -3344,6 +3351,12 @@ class AppLocalizationsEn extends AppLocalizations {
33443351
String get contacts_contactAdvertCopyFailed =>
33453352
'Copying advert to Clipboard failed.';
33463353

3354+
@override
3355+
String get contacts_sectionFavorites => 'Favorites';
3356+
3357+
@override
3358+
String get contacts_sectionAll => 'All Contacts';
3359+
33473360
@override
33483361
String get notification_activityTitle => 'MeshCore Activity';
33493362

lib/l10n/app_localizations_es.dart

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -670,6 +670,13 @@ class AppLocalizationsEs extends AppLocalizations {
670670
String get appSettings_enableMessageTracingSubtitle =>
671671
'Mostrar metadatos detallados de enrutamiento y tiempo para los mensajes';
672672

673+
@override
674+
String get appSettings_enableFavoritesSection => 'Separate Favorites Section';
675+
676+
@override
677+
String get appSettings_enableFavoritesSectionSubtitle =>
678+
'Show separate favorites section at top of contacts';
679+
673680
@override
674681
String get appSettings_notifications => 'Notificaciones';
675682

@@ -3403,6 +3410,12 @@ class AppLocalizationsEs extends AppLocalizations {
34033410
String get contacts_contactAdvertCopyFailed =>
34043411
'Copiar anuncio al Portapapeles ha fallado.';
34053412

3413+
@override
3414+
String get contacts_sectionFavorites => 'Favorites';
3415+
3416+
@override
3417+
String get contacts_sectionAll => 'All Contacts';
3418+
34063419
@override
34073420
String get notification_activityTitle => 'Actividad de MeshCore';
34083421

lib/l10n/app_localizations_fr.dart

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -674,6 +674,13 @@ class AppLocalizationsFr extends AppLocalizations {
674674
String get appSettings_enableMessageTracingSubtitle =>
675675
'Afficher les métadonnées détaillées de routage et de synchronisation des messages';
676676

677+
@override
678+
String get appSettings_enableFavoritesSection => 'Separate Favorites Section';
679+
680+
@override
681+
String get appSettings_enableFavoritesSectionSubtitle =>
682+
'Show separate favorites section at top of contacts';
683+
677684
@override
678685
String get appSettings_notifications => 'Notifications';
679686

@@ -3424,6 +3431,12 @@ class AppLocalizationsFr extends AppLocalizations {
34243431
String get contacts_contactAdvertCopyFailed =>
34253432
'La copie de l\'annonce vers le presse-papiers a échoué.';
34263433

3434+
@override
3435+
String get contacts_sectionFavorites => 'Favorites';
3436+
3437+
@override
3438+
String get contacts_sectionAll => 'All Contacts';
3439+
34273440
@override
34283441
String get notification_activityTitle => 'Activité MeshCore';
34293442

lib/l10n/app_localizations_hu.dart

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -674,6 +674,13 @@ class AppLocalizationsHu extends AppLocalizations {
674674
String get appSettings_enableMessageTracingSubtitle =>
675675
'Adja meg a üzenetek részletes útvonal- és időzítési adatokat.';
676676

677+
@override
678+
String get appSettings_enableFavoritesSection => 'Separate Favorites Section';
679+
680+
@override
681+
String get appSettings_enableFavoritesSectionSubtitle =>
682+
'Show separate favorites section at top of contacts';
683+
677684
@override
678685
String get appSettings_notifications => 'Értesítések';
679686

@@ -3420,6 +3427,12 @@ class AppLocalizationsHu extends AppLocalizations {
34203427
String get contacts_contactAdvertCopyFailed =>
34213428
'Az hirdetés másolása a vágólapra sikertelen.';
34223429

3430+
@override
3431+
String get contacts_sectionFavorites => 'Favorites';
3432+
3433+
@override
3434+
String get contacts_sectionAll => 'All Contacts';
3435+
34233436
@override
34243437
String get notification_activityTitle => 'MeshCore tevékenységek';
34253438

lib/l10n/app_localizations_it.dart

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -672,6 +672,13 @@ class AppLocalizationsIt extends AppLocalizations {
672672
String get appSettings_enableMessageTracingSubtitle =>
673673
'Mostra metadati dettagliati su instradamento e tempi per i messaggi';
674674

675+
@override
676+
String get appSettings_enableFavoritesSection => 'Separate Favorites Section';
677+
678+
@override
679+
String get appSettings_enableFavoritesSectionSubtitle =>
680+
'Show separate favorites section at top of contacts';
681+
675682
@override
676683
String get appSettings_notifications => 'Notifiche';
677684

@@ -3408,6 +3415,12 @@ class AppLocalizationsIt extends AppLocalizations {
34083415
String get contacts_contactAdvertCopyFailed =>
34093416
'Copia dell\'annuncio nella Clipboard non riuscita.';
34103417

3418+
@override
3419+
String get contacts_sectionFavorites => 'Favorites';
3420+
3421+
@override
3422+
String get contacts_sectionAll => 'All Contacts';
3423+
34113424
@override
34123425
String get notification_activityTitle => 'Attività MeshCore';
34133426

lib/l10n/app_localizations_ja.dart

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -643,6 +643,13 @@ class AppLocalizationsJa extends AppLocalizations {
643643
String get appSettings_enableMessageTracingSubtitle =>
644644
'メッセージに関する詳細な経路およびタイミングに関するメタデータを表示する';
645645

646+
@override
647+
String get appSettings_enableFavoritesSection => 'Separate Favorites Section';
648+
649+
@override
650+
String get appSettings_enableFavoritesSectionSubtitle =>
651+
'Show separate favorites section at top of contacts';
652+
646653
@override
647654
String get appSettings_notifications => '通知';
648655

@@ -3252,6 +3259,12 @@ class AppLocalizationsJa extends AppLocalizations {
32523259
@override
32533260
String get contacts_contactAdvertCopyFailed => '広告のコピーがクリップボードにコピーできませんでした。';
32543261

3262+
@override
3263+
String get contacts_sectionFavorites => 'Favorites';
3264+
3265+
@override
3266+
String get contacts_sectionAll => 'All Contacts';
3267+
32553268
@override
32563269
String get notification_activityTitle => 'メッシュコアの活動';
32573270

0 commit comments

Comments
 (0)