Skip to content

Commit a6104aa

Browse files
committed
msglist: Support basic keyword search
Fixes #252. For timeliness, tests are left as a followup: #1667
1 parent ac7be16 commit a6104aa

27 files changed

+426
-17
lines changed

assets/l10n/app_en.arb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,10 @@
534534
"@emptyMessageList": {
535535
"description": "Placeholder for some message-list pages when there are no messages."
536536
},
537+
"emptyMessageListSearch": "No search results.",
538+
"@emptyMessageListSearch": {
539+
"description": "Placeholder for the 'Search' page when there are no messages."
540+
},
537541
"messageListGroupYouWithYourself": "Messages with yourself",
538542
"@messageListGroupYouWithYourself": {
539543
"description": "Message list recipient header for a DM group that only includes yourself."
@@ -793,6 +797,18 @@
793797
"@userRoleUnknown": {
794798
"description": "Label for UserRole.unknown"
795799
},
800+
"searchMessagesPageTitle": "Search",
801+
"@searchMessagesPageTitle": {
802+
"description": "Page title for the 'Search' message view."
803+
},
804+
"searchMessagesHintText": "Search",
805+
"@searchMessagesHintText": {
806+
"description": "Hint text for the message search text field."
807+
},
808+
"searchMessagesClearButtonTooltip": "Clear",
809+
"@searchMessagesClearButtonTooltip": {
810+
"description": "Tooltip for the 'x' button in the search text field."
811+
},
796812
"inboxPageTitle": "Inbox",
797813
"@inboxPageTitle": {
798814
"description": "Title for the page with unreads."

lib/api/model/narrow.dart

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,20 @@ class ApiNarrowPmWith extends ApiNarrowDm {
173173
ApiNarrowPmWith._(super.operand, {super.negated});
174174
}
175175

176+
/// An [ApiNarrowElement] with the 'search' operator.
177+
class ApiNarrowSearch extends ApiNarrowElement {
178+
@override String get operator => 'search';
179+
180+
@override final String operand;
181+
182+
ApiNarrowSearch(this.operand, {super.negated});
183+
184+
factory ApiNarrowSearch.fromJson(Map<String, dynamic> json) => ApiNarrowSearch(
185+
json['operand'] as String,
186+
negated: json['negated'] as bool? ?? false,
187+
);
188+
}
189+
176190
class ApiNarrowIs extends ApiNarrowElement {
177191
@override String get operator => 'is';
178192

lib/generated/l10n/zulip_localizations.dart

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -851,6 +851,12 @@ abstract class ZulipLocalizations {
851851
/// **'There are no messages here.'**
852852
String get emptyMessageList;
853853

854+
/// Placeholder for the 'Search' page when there are no messages.
855+
///
856+
/// In en, this message translates to:
857+
/// **'No search results.'**
858+
String get emptyMessageListSearch;
859+
854860
/// Message list recipient header for a DM group that only includes yourself.
855861
///
856862
/// In en, this message translates to:
@@ -1203,6 +1209,24 @@ abstract class ZulipLocalizations {
12031209
/// **'Unknown'**
12041210
String get userRoleUnknown;
12051211

1212+
/// Page title for the 'Search' message view.
1213+
///
1214+
/// In en, this message translates to:
1215+
/// **'Search'**
1216+
String get searchMessagesPageTitle;
1217+
1218+
/// Hint text for the message search text field.
1219+
///
1220+
/// In en, this message translates to:
1221+
/// **'Search'**
1222+
String get searchMessagesHintText;
1223+
1224+
/// Tooltip for the 'x' button in the search text field.
1225+
///
1226+
/// In en, this message translates to:
1227+
/// **'Clear'**
1228+
String get searchMessagesClearButtonTooltip;
1229+
12061230
/// Title for the page with unreads.
12071231
///
12081232
/// In en, this message translates to:

lib/generated/l10n/zulip_localizations_ar.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,9 @@ class ZulipLocalizationsAr extends ZulipLocalizations {
437437
@override
438438
String get emptyMessageList => 'There are no messages here.';
439439

440+
@override
441+
String get emptyMessageListSearch => 'No search results.';
442+
440443
@override
441444
String get messageListGroupYouWithYourself => 'Messages with yourself';
442445

@@ -650,6 +653,15 @@ class ZulipLocalizationsAr extends ZulipLocalizations {
650653
@override
651654
String get userRoleUnknown => 'Unknown';
652655

656+
@override
657+
String get searchMessagesPageTitle => 'Search';
658+
659+
@override
660+
String get searchMessagesHintText => 'Search';
661+
662+
@override
663+
String get searchMessagesClearButtonTooltip => 'Clear';
664+
653665
@override
654666
String get inboxPageTitle => 'Inbox';
655667

lib/generated/l10n/zulip_localizations_de.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,9 @@ class ZulipLocalizationsDe extends ZulipLocalizations {
452452
@override
453453
String get emptyMessageList => 'There are no messages here.';
454454

455+
@override
456+
String get emptyMessageListSearch => 'No search results.';
457+
455458
@override
456459
String get messageListGroupYouWithYourself => 'Nachrichten mit dir selbst';
457460

@@ -671,6 +674,15 @@ class ZulipLocalizationsDe extends ZulipLocalizations {
671674
@override
672675
String get userRoleUnknown => 'Unbekannt';
673676

677+
@override
678+
String get searchMessagesPageTitle => 'Search';
679+
680+
@override
681+
String get searchMessagesHintText => 'Search';
682+
683+
@override
684+
String get searchMessagesClearButtonTooltip => 'Clear';
685+
674686
@override
675687
String get inboxPageTitle => 'Eingang';
676688

lib/generated/l10n/zulip_localizations_en.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,9 @@ class ZulipLocalizationsEn extends ZulipLocalizations {
437437
@override
438438
String get emptyMessageList => 'There are no messages here.';
439439

440+
@override
441+
String get emptyMessageListSearch => 'No search results.';
442+
440443
@override
441444
String get messageListGroupYouWithYourself => 'Messages with yourself';
442445

@@ -650,6 +653,15 @@ class ZulipLocalizationsEn extends ZulipLocalizations {
650653
@override
651654
String get userRoleUnknown => 'Unknown';
652655

656+
@override
657+
String get searchMessagesPageTitle => 'Search';
658+
659+
@override
660+
String get searchMessagesHintText => 'Search';
661+
662+
@override
663+
String get searchMessagesClearButtonTooltip => 'Clear';
664+
653665
@override
654666
String get inboxPageTitle => 'Inbox';
655667

lib/generated/l10n/zulip_localizations_it.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,9 @@ class ZulipLocalizationsIt extends ZulipLocalizations {
448448
@override
449449
String get emptyMessageList => 'There are no messages here.';
450450

451+
@override
452+
String get emptyMessageListSearch => 'No search results.';
453+
451454
@override
452455
String get messageListGroupYouWithYourself => 'Messaggi con te stesso';
453456

@@ -665,6 +668,15 @@ class ZulipLocalizationsIt extends ZulipLocalizations {
665668
@override
666669
String get userRoleUnknown => 'Sconosciuto';
667670

671+
@override
672+
String get searchMessagesPageTitle => 'Search';
673+
674+
@override
675+
String get searchMessagesHintText => 'Search';
676+
677+
@override
678+
String get searchMessagesClearButtonTooltip => 'Clear';
679+
668680
@override
669681
String get inboxPageTitle => 'Inbox';
670682

lib/generated/l10n/zulip_localizations_ja.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,9 @@ class ZulipLocalizationsJa extends ZulipLocalizations {
437437
@override
438438
String get emptyMessageList => 'There are no messages here.';
439439

440+
@override
441+
String get emptyMessageListSearch => 'No search results.';
442+
440443
@override
441444
String get messageListGroupYouWithYourself => 'Messages with yourself';
442445

@@ -650,6 +653,15 @@ class ZulipLocalizationsJa extends ZulipLocalizations {
650653
@override
651654
String get userRoleUnknown => '不明';
652655

656+
@override
657+
String get searchMessagesPageTitle => 'Search';
658+
659+
@override
660+
String get searchMessagesHintText => 'Search';
661+
662+
@override
663+
String get searchMessagesClearButtonTooltip => 'Clear';
664+
653665
@override
654666
String get inboxPageTitle => 'Inbox';
655667

lib/generated/l10n/zulip_localizations_nb.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,9 @@ class ZulipLocalizationsNb extends ZulipLocalizations {
437437
@override
438438
String get emptyMessageList => 'There are no messages here.';
439439

440+
@override
441+
String get emptyMessageListSearch => 'No search results.';
442+
440443
@override
441444
String get messageListGroupYouWithYourself => 'Messages with yourself';
442445

@@ -650,6 +653,15 @@ class ZulipLocalizationsNb extends ZulipLocalizations {
650653
@override
651654
String get userRoleUnknown => 'Unknown';
652655

656+
@override
657+
String get searchMessagesPageTitle => 'Search';
658+
659+
@override
660+
String get searchMessagesHintText => 'Search';
661+
662+
@override
663+
String get searchMessagesClearButtonTooltip => 'Clear';
664+
653665
@override
654666
String get inboxPageTitle => 'Inbox';
655667

lib/generated/l10n/zulip_localizations_pl.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,9 @@ class ZulipLocalizationsPl extends ZulipLocalizations {
446446
@override
447447
String get emptyMessageList => 'There are no messages here.';
448448

449+
@override
450+
String get emptyMessageListSearch => 'No search results.';
451+
449452
@override
450453
String get messageListGroupYouWithYourself => 'Zapiski na własne konto';
451454

@@ -661,6 +664,15 @@ class ZulipLocalizationsPl extends ZulipLocalizations {
661664
@override
662665
String get userRoleUnknown => 'Nieznany';
663666

667+
@override
668+
String get searchMessagesPageTitle => 'Search';
669+
670+
@override
671+
String get searchMessagesHintText => 'Search';
672+
673+
@override
674+
String get searchMessagesClearButtonTooltip => 'Clear';
675+
664676
@override
665677
String get inboxPageTitle => 'Odebrane';
666678

0 commit comments

Comments
 (0)