Skip to content

Commit 1337a4c

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 21c58d4 commit 1337a4c

25 files changed

Lines changed: 492 additions & 16 deletions

lib/l10n/app_en.arb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,8 @@
264264
"appSettings_languageUk": "Українська",
265265
"appSettings_enableMessageTracing": "Enable Message Tracing",
266266
"appSettings_enableMessageTracingSubtitle": "Show detailed routing and timing metadata for messages",
267+
"appSettings_enableFavoritesSection": "Separate Favorites Section",
268+
"appSettings_enableFavoritesSectionSubtitle": "Show separate favorites section at top of contacts",
267269
"appSettings_notifications": "Notifications",
268270
"appSettings_enableNotifications": "Enable Notifications",
269271
"appSettings_enableNotificationsSubtitle": "Receive notifications for messages and adverts",
@@ -2147,6 +2149,8 @@
21472149
"contacts_zeroHopContactAdvertFailed": "Failed to send contact.",
21482150
"contacts_contactAdvertCopied": "Advert copied to Clipboard.",
21492151
"contacts_contactAdvertCopyFailed": "Copying advert to Clipboard failed.",
2152+
"contacts_sectionFavorites": "Favorites",
2153+
"contacts_sectionAll": "All Contacts",
21502154
"notification_activityTitle": "MeshCore Activity",
21512155
"notification_messagesCount": "{count} {count, plural, =1{message} other{messages}}",
21522156
"@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:
@@ -6688,6 +6700,18 @@ abstract class AppLocalizations {
66886700
/// **'Copying advert to Clipboard failed.'**
66896701
String get contacts_contactAdvertCopyFailed;
66906702

6703+
/// No description provided for @contacts_sectionFavorites.
6704+
///
6705+
/// In en, this message translates to:
6706+
/// **'Favorites'**
6707+
String get contacts_sectionFavorites;
6708+
6709+
/// No description provided for @contacts_sectionAll.
6710+
///
6711+
/// In en, this message translates to:
6712+
/// **'All Contacts'**
6713+
String get contacts_sectionAll;
6714+
66916715
/// No description provided for @notification_activityTitle.
66926716
///
66936717
/// 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
@@ -674,6 +674,13 @@ class AppLocalizationsBg extends AppLocalizations {
674674
String get appSettings_enableMessageTracingSubtitle =>
675675
'Показване на подробни метаданни за маршрутизация и синхронизация за съобщения';
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 => 'Уведомления';
679686

@@ -3879,6 +3886,12 @@ class AppLocalizationsBg extends AppLocalizations {
38793886
String get contacts_contactAdvertCopyFailed =>
38803887
'Копирането на обявата в клипборда не успя.';
38813888

3889+
@override
3890+
String get contacts_sectionFavorites => 'Favorites';
3891+
3892+
@override
3893+
String get contacts_sectionAll => 'All Contacts';
3894+
38823895
@override
38833896
String get notification_activityTitle => 'Активност на MeshCore';
38843897

lib/l10n/app_localizations_de.dart

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

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

@@ -3893,6 +3900,12 @@ class AppLocalizationsDe extends AppLocalizations {
38933900
String get contacts_contactAdvertCopyFailed =>
38943901
'Kopieren der Ankündigung in die Zwischenablage fehlgeschlagen.';
38953902

3903+
@override
3904+
String get contacts_sectionFavorites => 'Favorites';
3905+
3906+
@override
3907+
String get contacts_sectionAll => 'All Contacts';
3908+
38963909
@override
38973910
String get notification_activityTitle => 'MeshCore Aktivität';
38983911

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

@@ -3811,6 +3818,12 @@ class AppLocalizationsEn extends AppLocalizations {
38113818
String get contacts_contactAdvertCopyFailed =>
38123819
'Copying advert to Clipboard failed.';
38133820

3821+
@override
3822+
String get contacts_sectionFavorites => 'Favorites';
3823+
3824+
@override
3825+
String get contacts_sectionAll => 'All Contacts';
3826+
38143827
@override
38153828
String get notification_activityTitle => 'MeshCore Activity';
38163829

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

@@ -3879,6 +3886,12 @@ class AppLocalizationsEs extends AppLocalizations {
38793886
String get contacts_contactAdvertCopyFailed =>
38803887
'Copiar anuncio al Portapapeles ha fallado.';
38813888

3889+
@override
3890+
String get contacts_sectionFavorites => 'Favorites';
3891+
3892+
@override
3893+
String get contacts_sectionAll => 'All Contacts';
3894+
38823895
@override
38833896
String get notification_activityTitle => 'Actividad de MeshCore';
38843897

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

@@ -3905,6 +3912,12 @@ class AppLocalizationsFr extends AppLocalizations {
39053912
String get contacts_contactAdvertCopyFailed =>
39063913
'La copie de l\'annonce vers le presse-papiers a échoué.';
39073914

3915+
@override
3916+
String get contacts_sectionFavorites => 'Favorites';
3917+
3918+
@override
3919+
String get contacts_sectionAll => 'All Contacts';
3920+
39083921
@override
39093922
String get notification_activityTitle => 'Activité MeshCore';
39103923

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

@@ -3897,6 +3904,12 @@ class AppLocalizationsHu extends AppLocalizations {
38973904
String get contacts_contactAdvertCopyFailed =>
38983905
'Az hirdetés másolása a vágólapra sikertelen.';
38993906

3907+
@override
3908+
String get contacts_sectionFavorites => 'Favorites';
3909+
3910+
@override
3911+
String get contacts_sectionAll => 'All Contacts';
3912+
39003913
@override
39013914
String get notification_activityTitle => 'MeshCore tevékenységek';
39023915

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

@@ -3886,6 +3893,12 @@ class AppLocalizationsIt extends AppLocalizations {
38863893
String get contacts_contactAdvertCopyFailed =>
38873894
'Copia dell\'annuncio nella Clipboard non riuscita.';
38883895

3896+
@override
3897+
String get contacts_sectionFavorites => 'Favorites';
3898+
3899+
@override
3900+
String get contacts_sectionAll => 'All Contacts';
3901+
38893902
@override
38903903
String get notification_activityTitle => 'Attività MeshCore';
38913904

lib/l10n/app_localizations_ja.dart

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

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

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

3688+
@override
3689+
String get contacts_sectionFavorites => 'Favorites';
3690+
3691+
@override
3692+
String get contacts_sectionAll => 'All Contacts';
3693+
36813694
@override
36823695
String get notification_activityTitle => 'メッシュコアの活動';
36833696

0 commit comments

Comments
 (0)