Browse Source

Search UI improvements (#1506)

Vishnu Mohandas 1 year ago
parent
commit
519c15bfae

BIN
assets/map.png


+ 6 - 1
lib/generated/intl/messages_cs.dart

@@ -26,7 +26,12 @@ class MessageLookup extends MessageLookupByLibrary {
             MessageLookupByLibrary.simpleMessage("Add to hidden album"),
         "deleteConfirmDialogBody": MessageLookupByLibrary.simpleMessage(
             "This account is linked to other ente apps, if you use any.\\n\\nYour uploaded data, across all ente apps, will be scheduled for deletion, and your account will be permanently deleted."),
+        "fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
+        "modifyYourQueryOrTrySearchingFor":
+            MessageLookupByLibrary.simpleMessage(
+                "Modify your query, or try searching for"),
         "moveToHiddenAlbum":
-            MessageLookupByLibrary.simpleMessage("Move to hidden album")
+            MessageLookupByLibrary.simpleMessage("Move to hidden album"),
+        "yourMap": MessageLookupByLibrary.simpleMessage("Your map")
       };
 }

+ 6 - 1
lib/generated/intl/messages_de.dart

@@ -56,7 +56,7 @@ class MessageLookup extends MessageLookupByLibrary {
       "Bitte kontaktieren Sie uns über support@ente.io, um Ihr ${provider} Abo zu verwalten.";
 
   static String m11(count) =>
-      "${Intl.plural(count, one: 'Lösche 1 Element', other: 'Lösche ${count} Elemente')}";
+      "${Intl.plural(count, one: 'Lösche ${count} Element', other: 'Lösche ${count} Elemente')}";
 
   static String m12(currentlyDeleting, totalCount) =>
       "Lösche ${currentlyDeleting} / ${totalCount}";
@@ -681,6 +681,7 @@ class MessageLookup extends MessageLookupByLibrary {
             MessageLookupByLibrary.simpleMessage("Beschreibung hinzufügen …"),
         "fileSavedToGallery": MessageLookupByLibrary.simpleMessage(
             "Datei in Galerie gespeichert"),
+        "fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
         "filesBackedUpFromDevice": m19,
         "filesBackedUpInAlbum": m20,
         "filesDeleted":
@@ -860,6 +861,9 @@ class MessageLookup extends MessageLookupByLibrary {
         "mobileWebDesktop":
             MessageLookupByLibrary.simpleMessage("Mobil, Web, Desktop"),
         "moderateStrength": MessageLookupByLibrary.simpleMessage("Mittel"),
+        "modifyYourQueryOrTrySearchingFor":
+            MessageLookupByLibrary.simpleMessage(
+                "Modify your query, or try searching for"),
         "monthly": MessageLookupByLibrary.simpleMessage("Monatlich"),
         "moveItem": m30,
         "moveToAlbum":
@@ -1451,6 +1455,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "youHaveSuccessfullyFreedUp": m63,
         "yourAccountHasBeenDeleted": MessageLookupByLibrary.simpleMessage(
             "Dein Benutzerkonto wurde gelöscht"),
+        "yourMap": MessageLookupByLibrary.simpleMessage("Your map"),
         "yourPlanWasSuccessfullyDowngraded":
             MessageLookupByLibrary.simpleMessage(
                 "Ihr Tarif wurde erfolgreich heruntergestuft"),

+ 28 - 2
lib/generated/intl/messages_en.dart

@@ -137,6 +137,9 @@ class MessageLookup extends MessageLookupByLibrary {
 
   static String m41(endDate) => "Renews on ${endDate}";
 
+  static String m64(count) =>
+      "${Intl.plural(count, one: '${count} result found', other: '${count} results found')}";
+
   static String m42(count) => "${count} selected";
 
   static String m43(count, yourCount) =>
@@ -187,7 +190,7 @@ class MessageLookup extends MessageLookupByLibrary {
   static String m59(count) =>
       "${Intl.plural(count, zero: '', one: '1 day', other: '${count} days')}";
 
-  static String m64(endDate) => "Valid till ${endDate}";
+  static String m65(endDate) => "Valid till ${endDate}";
 
   static String m60(email) => "Verify ${email}";
 
@@ -220,6 +223,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "addLocation": MessageLookupByLibrary.simpleMessage("Add location"),
         "addLocationButton": MessageLookupByLibrary.simpleMessage("Add"),
         "addMore": MessageLookupByLibrary.simpleMessage("Add more"),
+        "addNew": MessageLookupByLibrary.simpleMessage("Add new"),
         "addOnPageSubtitle":
             MessageLookupByLibrary.simpleMessage("Details of add-ons"),
         "addOns": MessageLookupByLibrary.simpleMessage("Add-ons"),
@@ -230,6 +234,8 @@ class MessageLookup extends MessageLookupByLibrary {
         "addToHiddenAlbum":
             MessageLookupByLibrary.simpleMessage("Add to hidden album"),
         "addViewer": MessageLookupByLibrary.simpleMessage("Add viewer"),
+        "addYourPhotosNow":
+            MessageLookupByLibrary.simpleMessage("Add your photos now"),
         "addedAs": MessageLookupByLibrary.simpleMessage("Added as"),
         "addedBy": m1,
         "addedSuccessfullyTo": m2,
@@ -435,6 +441,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "contactSupport":
             MessageLookupByLibrary.simpleMessage("Contact support"),
         "contactToManageSubscription": m10,
+        "contents": MessageLookupByLibrary.simpleMessage("Contents"),
         "continueLabel": MessageLookupByLibrary.simpleMessage("Continue"),
         "continueOnFreeTrial":
             MessageLookupByLibrary.simpleMessage("Continue on free trial"),
@@ -634,6 +641,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "exportLogs": MessageLookupByLibrary.simpleMessage("Export logs"),
         "exportYourData":
             MessageLookupByLibrary.simpleMessage("Export your data"),
+        "faces": MessageLookupByLibrary.simpleMessage("Faces"),
         "failedToApplyCode":
             MessageLookupByLibrary.simpleMessage("Failed to apply code"),
         "failedToCancel":
@@ -664,6 +672,7 @@ class MessageLookup extends MessageLookupByLibrary {
             MessageLookupByLibrary.simpleMessage("Add a description..."),
         "fileSavedToGallery":
             MessageLookupByLibrary.simpleMessage("File saved to gallery"),
+        "fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
         "fileTypesAndNames":
             MessageLookupByLibrary.simpleMessage("File types and names"),
         "filesBackedUpFromDevice": m19,
@@ -778,6 +787,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "linkHasExpired":
             MessageLookupByLibrary.simpleMessage("Link has expired"),
         "linkNeverExpires": MessageLookupByLibrary.simpleMessage("Never"),
+        "livePhotos": MessageLookupByLibrary.simpleMessage("Live Photos"),
         "loadMessage1": MessageLookupByLibrary.simpleMessage(
             "You can share your subscription with your family"),
         "loadMessage2": MessageLookupByLibrary.simpleMessage(
@@ -839,6 +849,9 @@ class MessageLookup extends MessageLookupByLibrary {
         "mobileWebDesktop":
             MessageLookupByLibrary.simpleMessage("Mobile, Web, Desktop"),
         "moderateStrength": MessageLookupByLibrary.simpleMessage("Moderate"),
+        "modifyYourQueryOrTrySearchingFor":
+            MessageLookupByLibrary.simpleMessage(
+                "Modify your query, or try searching for"),
         "moments": MessageLookupByLibrary.simpleMessage("Moments"),
         "monthly": MessageLookupByLibrary.simpleMessage("Monthly"),
         "moveItem": m30,
@@ -927,6 +940,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "photoGridSize":
             MessageLookupByLibrary.simpleMessage("Photo grid size"),
         "photoSmallCase": MessageLookupByLibrary.simpleMessage("photo"),
+        "photos": MessageLookupByLibrary.simpleMessage("Photos"),
         "photosAddedByYouWillBeRemovedFromTheAlbum":
             MessageLookupByLibrary.simpleMessage(
                 "Photos added by you will be removed from the album"),
@@ -1098,12 +1112,22 @@ class MessageLookup extends MessageLookupByLibrary {
             MessageLookupByLibrary.simpleMessage("Find all photos of a person"),
         "searchFileTypesAndNamesEmptySection":
             MessageLookupByLibrary.simpleMessage("File types and names"),
+        "searchHint1":
+            MessageLookupByLibrary.simpleMessage("Fast, on-device search"),
+        "searchHint2":
+            MessageLookupByLibrary.simpleMessage("Photo dates, descriptions"),
+        "searchHint3": MessageLookupByLibrary.simpleMessage(
+            "Albums, file names, and types"),
+        "searchHint4": MessageLookupByLibrary.simpleMessage("Location"),
+        "searchHint5": MessageLookupByLibrary.simpleMessage(
+            "Coming soon: Photo contents, faces"),
         "searchHintText": MessageLookupByLibrary.simpleMessage(
             "Albums, months, days, years, ..."),
         "searchLocationEmptySection": MessageLookupByLibrary.simpleMessage(
             "Group photos that are taken within some radius of a photo"),
         "searchPeopleEmptySection": MessageLookupByLibrary.simpleMessage(
             "Invite people, and you\'ll see all photos shared by them here"),
+        "searchResultCount": m64,
         "security": MessageLookupByLibrary.simpleMessage("Security"),
         "selectAlbum": MessageLookupByLibrary.simpleMessage("Select album"),
         "selectAll": MessageLookupByLibrary.simpleMessage("Select all"),
@@ -1352,7 +1376,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "useSelectedPhoto":
             MessageLookupByLibrary.simpleMessage("Use selected photo"),
         "usedSpace": MessageLookupByLibrary.simpleMessage("Used space"),
-        "validTill": m64,
+        "validTill": m65,
         "verificationFailedPleaseTryAgain":
             MessageLookupByLibrary.simpleMessage(
                 "Verification failed, please try again"),
@@ -1368,6 +1392,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "verifyingRecoveryKey":
             MessageLookupByLibrary.simpleMessage("Verifying recovery key..."),
         "videoSmallCase": MessageLookupByLibrary.simpleMessage("video"),
+        "videos": MessageLookupByLibrary.simpleMessage("Videos"),
         "viewActiveSessions":
             MessageLookupByLibrary.simpleMessage("View active sessions"),
         "viewAddOnButton": MessageLookupByLibrary.simpleMessage("View add-ons"),
@@ -1422,6 +1447,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "youHaveSuccessfullyFreedUp": m63,
         "yourAccountHasBeenDeleted": MessageLookupByLibrary.simpleMessage(
             "Your account has been deleted"),
+        "yourMap": MessageLookupByLibrary.simpleMessage("Your map"),
         "yourPlanWasSuccessfullyDowngraded":
             MessageLookupByLibrary.simpleMessage(
                 "Your plan was successfully downgraded"),

+ 5 - 0
lib/generated/intl/messages_es.dart

@@ -621,6 +621,7 @@ class MessageLookup extends MessageLookupByLibrary {
             MessageLookupByLibrary.simpleMessage("Añadir una descripción..."),
         "fileSavedToGallery": MessageLookupByLibrary.simpleMessage(
             "Archivo guardado en la galería"),
+        "fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
         "filesBackedUpFromDevice": m19,
         "filesBackedUpInAlbum": m20,
         "filesDeleted":
@@ -787,6 +788,9 @@ class MessageLookup extends MessageLookupByLibrary {
         "mobileWebDesktop":
             MessageLookupByLibrary.simpleMessage("Celular, Web, Computadora"),
         "moderateStrength": MessageLookupByLibrary.simpleMessage("Moderada"),
+        "modifyYourQueryOrTrySearchingFor":
+            MessageLookupByLibrary.simpleMessage(
+                "Modify your query, or try searching for"),
         "monthly": MessageLookupByLibrary.simpleMessage("Mensual"),
         "moveItem": m30,
         "moveToAlbum": MessageLookupByLibrary.simpleMessage("Mover al álbum"),
@@ -1327,6 +1331,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "youHaveSuccessfullyFreedUp": m63,
         "yourAccountHasBeenDeleted":
             MessageLookupByLibrary.simpleMessage("Su cuenta ha sido eliminada"),
+        "yourMap": MessageLookupByLibrary.simpleMessage("Your map"),
         "yourPlanWasSuccessfullyDowngraded":
             MessageLookupByLibrary.simpleMessage(
                 "Tu plan ha sido degradado con éxito"),

+ 5 - 0
lib/generated/intl/messages_fr.dart

@@ -689,6 +689,7 @@ class MessageLookup extends MessageLookupByLibrary {
             MessageLookupByLibrary.simpleMessage("Ajouter une description..."),
         "fileSavedToGallery": MessageLookupByLibrary.simpleMessage(
             "Fichier enregistré dans la galerie"),
+        "fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
         "filesBackedUpFromDevice": m19,
         "filesBackedUpInAlbum": m20,
         "filesDeleted":
@@ -873,6 +874,9 @@ class MessageLookup extends MessageLookupByLibrary {
             MessageLookupByLibrary.simpleMessage("Mobile, Web, Ordinateur"),
         "moderateStrength":
             MessageLookupByLibrary.simpleMessage("Sécurité moyenne"),
+        "modifyYourQueryOrTrySearchingFor":
+            MessageLookupByLibrary.simpleMessage(
+                "Modify your query, or try searching for"),
         "monthly": MessageLookupByLibrary.simpleMessage("Mensuel"),
         "moveItem": m30,
         "moveToAlbum":
@@ -1477,6 +1481,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "youHaveSuccessfullyFreedUp": m63,
         "yourAccountHasBeenDeleted":
             MessageLookupByLibrary.simpleMessage("Votre compte a été supprimé"),
+        "yourMap": MessageLookupByLibrary.simpleMessage("Your map"),
         "yourPlanWasSuccessfullyDowngraded":
             MessageLookupByLibrary.simpleMessage(
                 "Votre plan a été rétrogradé avec succès"),

+ 6 - 2
lib/generated/intl/messages_it.dart

@@ -187,7 +187,7 @@ class MessageLookup extends MessageLookupByLibrary {
   static String m59(count) =>
       "${Intl.plural(count, zero: '', one: '1 giorno', other: '${count} giorni')}";
 
-  static String m64(endDate) => "Valido fino al ${endDate}";
+  static String m65(endDate) => "Valido fino al ${endDate}";
 
   static String m60(email) => "Verifica ${email}";
 
@@ -865,6 +865,9 @@ class MessageLookup extends MessageLookupByLibrary {
         "mobileWebDesktop":
             MessageLookupByLibrary.simpleMessage("Mobile, Web, Desktop"),
         "moderateStrength": MessageLookupByLibrary.simpleMessage("Mediocre"),
+        "modifyYourQueryOrTrySearchingFor":
+            MessageLookupByLibrary.simpleMessage(
+                "Modify your query, or try searching for"),
         "monthly": MessageLookupByLibrary.simpleMessage("Mensile"),
         "moveItem": m30,
         "moveToAlbum":
@@ -1387,7 +1390,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "useSelectedPhoto":
             MessageLookupByLibrary.simpleMessage("Usa la foto selezionata"),
         "usedSpace": MessageLookupByLibrary.simpleMessage("Spazio utilizzato"),
-        "validTill": m64,
+        "validTill": m65,
         "verificationFailedPleaseTryAgain":
             MessageLookupByLibrary.simpleMessage(
                 "Verifica fallita, per favore prova di nuovo"),
@@ -1459,6 +1462,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "youHaveSuccessfullyFreedUp": m63,
         "yourAccountHasBeenDeleted": MessageLookupByLibrary.simpleMessage(
             "Il tuo account è stato eliminato"),
+        "yourMap": MessageLookupByLibrary.simpleMessage("Your map"),
         "yourPlanWasSuccessfullyDowngraded":
             MessageLookupByLibrary.simpleMessage(
                 "Il tuo piano è stato aggiornato con successo"),

+ 6 - 1
lib/generated/intl/messages_ko.dart

@@ -26,7 +26,12 @@ class MessageLookup extends MessageLookupByLibrary {
             MessageLookupByLibrary.simpleMessage("Add to hidden album"),
         "deleteConfirmDialogBody": MessageLookupByLibrary.simpleMessage(
             "This account is linked to other ente apps, if you use any.\\n\\nYour uploaded data, across all ente apps, will be scheduled for deletion, and your account will be permanently deleted."),
+        "fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
+        "modifyYourQueryOrTrySearchingFor":
+            MessageLookupByLibrary.simpleMessage(
+                "Modify your query, or try searching for"),
         "moveToHiddenAlbum":
-            MessageLookupByLibrary.simpleMessage("Move to hidden album")
+            MessageLookupByLibrary.simpleMessage("Move to hidden album"),
+        "yourMap": MessageLookupByLibrary.simpleMessage("Your map")
       };
 }

+ 5 - 0
lib/generated/intl/messages_nl.dart

@@ -684,6 +684,7 @@ class MessageLookup extends MessageLookupByLibrary {
             "Voeg een beschrijving toe..."),
         "fileSavedToGallery": MessageLookupByLibrary.simpleMessage(
             "Bestand opgeslagen in galerij"),
+        "fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
         "filesBackedUpFromDevice": m19,
         "filesBackedUpInAlbum": m20,
         "filesDeleted":
@@ -859,6 +860,9 @@ class MessageLookup extends MessageLookupByLibrary {
         "mobileWebDesktop":
             MessageLookupByLibrary.simpleMessage("Mobiel, Web, Desktop"),
         "moderateStrength": MessageLookupByLibrary.simpleMessage("Matig"),
+        "modifyYourQueryOrTrySearchingFor":
+            MessageLookupByLibrary.simpleMessage(
+                "Modify your query, or try searching for"),
         "monthly": MessageLookupByLibrary.simpleMessage("Maandelijks"),
         "moveItem": m30,
         "moveToAlbum":
@@ -1444,6 +1448,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "youHaveSuccessfullyFreedUp": m63,
         "yourAccountHasBeenDeleted":
             MessageLookupByLibrary.simpleMessage("Je account is verwijderd"),
+        "yourMap": MessageLookupByLibrary.simpleMessage("Your map"),
         "yourPlanWasSuccessfullyDowngraded":
             MessageLookupByLibrary.simpleMessage(
                 "Uw abonnement is succesvol gedegradeerd"),

+ 6 - 1
lib/generated/intl/messages_no.dart

@@ -44,12 +44,17 @@ class MessageLookup extends MessageLookupByLibrary {
         "enterYourEmailAddress": MessageLookupByLibrary.simpleMessage(
             "Skriv inn e-postadressen din"),
         "feedback": MessageLookupByLibrary.simpleMessage("Tilbakemelding"),
+        "fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
         "invalidEmailAddress":
             MessageLookupByLibrary.simpleMessage("Ugyldig e-postadresse"),
         "kindlyHelpUsWithThisInformation": MessageLookupByLibrary.simpleMessage(
             "Vær vennlig og hjelp oss med denne informasjonen"),
+        "modifyYourQueryOrTrySearchingFor":
+            MessageLookupByLibrary.simpleMessage(
+                "Modify your query, or try searching for"),
         "moveToHiddenAlbum":
             MessageLookupByLibrary.simpleMessage("Move to hidden album"),
-        "verify": MessageLookupByLibrary.simpleMessage("Bekreft")
+        "verify": MessageLookupByLibrary.simpleMessage("Bekreft"),
+        "yourMap": MessageLookupByLibrary.simpleMessage("Your map")
       };
 }

+ 7 - 2
lib/generated/intl/messages_pl.dart

@@ -92,6 +92,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "enterYourRecoveryKey": MessageLookupByLibrary.simpleMessage(
             "Wprowadź swój klucz odzyskiwania"),
         "feedback": MessageLookupByLibrary.simpleMessage("Informacja zwrotna"),
+        "fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
         "forgotPassword":
             MessageLookupByLibrary.simpleMessage("Nie pamiętam hasła"),
         "generatingEncryptionKeys": MessageLookupByLibrary.simpleMessage(
@@ -109,6 +110,9 @@ class MessageLookup extends MessageLookupByLibrary {
             MessageLookupByLibrary.simpleMessage("Pomóż nam z tą informacją"),
         "logInLabel": MessageLookupByLibrary.simpleMessage("Zaloguj się"),
         "moderateStrength": MessageLookupByLibrary.simpleMessage("Umiarkowana"),
+        "modifyYourQueryOrTrySearchingFor":
+            MessageLookupByLibrary.simpleMessage(
+                "Modify your query, or try searching for"),
         "moveToHiddenAlbum":
             MessageLookupByLibrary.simpleMessage("Move to hidden album"),
         "noRecoveryKey":
@@ -180,7 +184,8 @@ class MessageLookup extends MessageLookupByLibrary {
             MessageLookupByLibrary.simpleMessage("Zweryfikuj hasło"),
         "weakStrength": MessageLookupByLibrary.simpleMessage("Słabe"),
         "welcomeBack": MessageLookupByLibrary.simpleMessage("Witaj ponownie!"),
-        "yourAccountHasBeenDeleted":
-            MessageLookupByLibrary.simpleMessage("Twoje konto zostało usunięte")
+        "yourAccountHasBeenDeleted": MessageLookupByLibrary.simpleMessage(
+            "Twoje konto zostało usunięte"),
+        "yourMap": MessageLookupByLibrary.simpleMessage("Your map")
       };
 }

+ 6 - 1
lib/generated/intl/messages_pt.dart

@@ -213,6 +213,7 @@ class MessageLookup extends MessageLookupByLibrary {
             "Não foi possível buscar informações do produto. Por favor, tente novamente mais tarde."),
         "faq": MessageLookupByLibrary.simpleMessage("Perguntas frequentes"),
         "feedback": MessageLookupByLibrary.simpleMessage("Opinião"),
+        "fileTypes": MessageLookupByLibrary.simpleMessage("File types"),
         "forgotPassword":
             MessageLookupByLibrary.simpleMessage("Esqueceu sua senha"),
         "freeStorageClaimed": MessageLookupByLibrary.simpleMessage(
@@ -259,6 +260,9 @@ class MessageLookup extends MessageLookupByLibrary {
             MessageLookupByLibrary.simpleMessage("Dispositivo perdido?"),
         "manage": MessageLookupByLibrary.simpleMessage("Gerenciar"),
         "moderateStrength": MessageLookupByLibrary.simpleMessage("Moderada"),
+        "modifyYourQueryOrTrySearchingFor":
+            MessageLookupByLibrary.simpleMessage(
+                "Modify your query, or try searching for"),
         "moveToHiddenAlbum":
             MessageLookupByLibrary.simpleMessage("Move to hidden album"),
         "noRecoveryKey": MessageLookupByLibrary.simpleMessage(
@@ -426,6 +430,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "youCanAtMaxDoubleYourStorage": MessageLookupByLibrary.simpleMessage(
             "* Você pode duplicar seu armazenamento no máximo"),
         "yourAccountHasBeenDeleted":
-            MessageLookupByLibrary.simpleMessage("Sua conta foi deletada")
+            MessageLookupByLibrary.simpleMessage("Sua conta foi deletada"),
+        "yourMap": MessageLookupByLibrary.simpleMessage("Your map")
       };
 }

+ 6 - 2
lib/generated/intl/messages_zh.dart

@@ -170,7 +170,7 @@ class MessageLookup extends MessageLookupByLibrary {
   static String m59(count) =>
       "${Intl.plural(count, zero: '', one: '1天', other: '${count} 天')}";
 
-  static String m64(endDate) => "有效期至 ${endDate}";
+  static String m65(endDate) => "有效期至 ${endDate}";
 
   static String m60(email) => "验证 ${email}";
 
@@ -709,6 +709,9 @@ class MessageLookup extends MessageLookupByLibrary {
         "mobileWebDesktop":
             MessageLookupByLibrary.simpleMessage("移动端, 网页端, 桌面端"),
         "moderateStrength": MessageLookupByLibrary.simpleMessage("中等"),
+        "modifyYourQueryOrTrySearchingFor":
+            MessageLookupByLibrary.simpleMessage(
+                "Modify your query, or try searching for"),
         "monthly": MessageLookupByLibrary.simpleMessage("每月"),
         "moveItem": m30,
         "moveToAlbum": MessageLookupByLibrary.simpleMessage("移动到相册"),
@@ -1117,7 +1120,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "useRecoveryKey": MessageLookupByLibrary.simpleMessage("使用恢复密钥"),
         "useSelectedPhoto": MessageLookupByLibrary.simpleMessage("使用所选照片"),
         "usedSpace": MessageLookupByLibrary.simpleMessage("已用空间"),
-        "validTill": m64,
+        "validTill": m65,
         "verificationFailedPleaseTryAgain":
             MessageLookupByLibrary.simpleMessage("验证失败,请重试"),
         "verificationId": MessageLookupByLibrary.simpleMessage("验证 ID"),
@@ -1175,6 +1178,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "youHaveSuccessfullyFreedUp": m63,
         "yourAccountHasBeenDeleted":
             MessageLookupByLibrary.simpleMessage("您的账户已删除"),
+        "yourMap": MessageLookupByLibrary.simpleMessage("Your map"),
         "yourPlanWasSuccessfullyDowngraded":
             MessageLookupByLibrary.simpleMessage("您的计划已成功降级"),
         "yourPlanWasSuccessfullyUpgraded":

+ 154 - 11
lib/generated/l10n.dart

@@ -6810,10 +6810,10 @@ class S {
   }
 
   /// `File types and names`
-  String get fileTypes {
+  String get fileTypesAndNames {
     return Intl.message(
-      'File types',
-      name: 'fileTypes',
+      'File types and names',
+      name: 'fileTypesAndNames',
       desc: '',
       args: [],
     );
@@ -7825,6 +7825,16 @@ class S {
     );
   }
 
+  /// `File types`
+  String get fileTypes {
+    return Intl.message(
+      'File types',
+      name: 'fileTypes',
+      desc: '',
+      args: [],
+    );
+  }
+
   /// `This account is linked to other ente apps, if you use any.\n\nYour uploaded data, across all ente apps, will be scheduled for deletion, and your account will be permanently deleted.`
   String get deleteConfirmDialogBody {
     return Intl.message(
@@ -7895,21 +7905,21 @@ class S {
     );
   }
 
-  /// `Black Friday Sale`
-  String get blackFridaySale {
+  /// `Modify your query, or try searching for`
+  String get modifyYourQueryOrTrySearchingFor {
     return Intl.message(
-      'Black Friday Sale',
-      name: 'blackFridaySale',
+      'Modify your query, or try searching for',
+      name: 'modifyYourQueryOrTrySearchingFor',
       desc: '',
       args: [],
     );
   }
 
-  /// `Modify your query, or try searching for`
-  String get modifyYourQueryOrTrySearchingFor {
+  /// `Black Friday Sale`
+  String get blackFridaySale {
     return Intl.message(
-      'Modify your query, or try searching for',
-      name: 'modifyYourQueryOrTrySearchingFor',
+      'Black Friday Sale',
+      name: 'blackFridaySale',
       desc: '',
       args: [],
     );
@@ -7924,6 +7934,139 @@ class S {
       args: [],
     );
   }
+
+  /// `Photos`
+  String get photos {
+    return Intl.message(
+      'Photos',
+      name: 'photos',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Videos`
+  String get videos {
+    return Intl.message(
+      'Videos',
+      name: 'videos',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Live Photos`
+  String get livePhotos {
+    return Intl.message(
+      'Live Photos',
+      name: 'livePhotos',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Fast, on-device search`
+  String get searchHint1 {
+    return Intl.message(
+      'Fast, on-device search',
+      name: 'searchHint1',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Photo dates, descriptions`
+  String get searchHint2 {
+    return Intl.message(
+      'Photo dates, descriptions',
+      name: 'searchHint2',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Albums, file names, and types`
+  String get searchHint3 {
+    return Intl.message(
+      'Albums, file names, and types',
+      name: 'searchHint3',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Location`
+  String get searchHint4 {
+    return Intl.message(
+      'Location',
+      name: 'searchHint4',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Coming soon: Photo contents, faces`
+  String get searchHint5 {
+    return Intl.message(
+      'Coming soon: Photo contents, faces',
+      name: 'searchHint5',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Add your photos now`
+  String get addYourPhotosNow {
+    return Intl.message(
+      'Add your photos now',
+      name: 'addYourPhotosNow',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `{count, plural, one{{count} result found} other{{count} results found}}`
+  String searchResultCount(int count) {
+    return Intl.plural(
+      count,
+      one: '$count result found',
+      other: '$count results found',
+      name: 'searchResultCount',
+      desc:
+          'Text to tell user how many results were found for their search query',
+      args: [count],
+    );
+  }
+
+  /// `Faces`
+  String get faces {
+    return Intl.message(
+      'Faces',
+      name: 'faces',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Contents`
+  String get contents {
+    return Intl.message(
+      'Contents',
+      name: 'contents',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Add new`
+  String get addNew {
+    return Intl.message(
+      'Add new',
+      name: 'addNew',
+      desc: 'Text to add a new item (location tag, album, caption etc)',
+      args: [],
+    );
+  }
 }
 
 class AppLocalizationDelegate extends LocalizationsDelegate<S> {

+ 26 - 1
lib/l10n/intl_en.arb

@@ -1124,5 +1124,30 @@
   "yourMap": "Your map",
   "modifyYourQueryOrTrySearchingFor": "Modify your query, or try searching for",
   "blackFridaySale": "Black Friday Sale",
-  "upto50OffUntil4thDec": "Upto 50% off, until 4th Dec."
+  "upto50OffUntil4thDec": "Upto 50% off, until 4th Dec.",
+  "photos": "Photos",
+  "videos": "Videos",
+  "livePhotos": "Live Photos",
+  "searchHint1": "Fast, on-device search",
+  "searchHint2": "Photo dates, descriptions",
+  "searchHint3": "Albums, file names, and types",
+  "searchHint4": "Location",
+  "searchHint5": "Coming soon: Photo contents, faces",
+  "addYourPhotosNow": "Add your photos now",
+  "searchResultCount": "{count, plural, one{{count} result found} other{{count} results found}}",
+  "@searchResultCount": {
+    "description": "Text to tell user how many results were found for their search query",
+    "placeholders": {
+      "count": {
+        "example": "1|2|3",
+        "type": "int"
+      }
+    }
+  },
+  "faces": "Faces",
+  "contents": "Contents",
+  "addNew": "Add new",
+  "@addNew": {
+    "description": "Text to add a new item (location tag, album, caption etc)"
+  }
 }

+ 6 - 4
lib/models/file/file_type.dart

@@ -1,4 +1,6 @@
+import "package:flutter/material.dart";
 import "package:photo_manager/photo_manager.dart";
+import "package:photos/l10n/l10n.dart";
 
 enum FileType {
   image,
@@ -54,14 +56,14 @@ FileType fileTypeFromAsset(AssetEntity asset) {
   return type;
 }
 
-String getHumanReadableString(FileType fileType) {
+String getHumanReadableString(BuildContext context, FileType fileType) {
   switch (fileType) {
     case FileType.image:
-      return "Image";
+      return context.l10n.photos;
     case FileType.video:
-      return "Video";
+      return context.l10n.videos;
     case FileType.livePhoto:
-      return "Live Photo";
+      return context.l10n.livePhotos;
     default:
       return fileType.name.toUpperCase();
   }

+ 15 - 13
lib/models/search/search_types.dart

@@ -50,9 +50,9 @@ extension SectionTypeExtensions on SectionType {
   String sectionTitle(BuildContext context) {
     switch (this) {
       case SectionType.face:
-        return "Faces";
+        return S.of(context).faces;
       case SectionType.content:
-        return "Contents";
+        return S.of(context).contents;
       case SectionType.moment:
         return S.of(context).moments;
       case SectionType.location:
@@ -136,21 +136,23 @@ extension SectionTypeExtensions on SectionType {
   String getCTAText(BuildContext context) {
     switch (this) {
       case SectionType.face:
+        // todo: later
         return "Setup";
       case SectionType.content:
+        // todo: later
         return "Add tags";
       case SectionType.moment:
-        return "Add new";
+        return S.of(context).addNew;
       case SectionType.location:
-        return "Add new";
+        return S.of(context).addNew;
       case SectionType.people:
-        return "Invite";
+        return S.of(context).invite;
       case SectionType.album:
-        return "Add new";
+        return S.of(context).addNew;
       case SectionType.fileTypesAndExtension:
         return "";
       case SectionType.fileCaption:
-        return "Add new";
+        return S.of(context).addNew;
     }
   }
 
@@ -230,10 +232,10 @@ extension SectionTypeExtensions on SectionType {
     }
   }
 
-  Future<List<SearchResult>> getData({int? limit, BuildContext? context}) {
-    if (this == SectionType.moment && context == null) {
-      AssertionError("context cannot be null for SectionType.moment");
-    }
+  Future<List<SearchResult>> getData(
+    BuildContext context, {
+    int? limit,
+  }) {
     switch (this) {
       case SectionType.face:
         return SearchService.instance.getAllLocationTags(limit);
@@ -242,7 +244,7 @@ extension SectionTypeExtensions on SectionType {
         return SearchService.instance.getAllLocationTags(limit);
 
       case SectionType.moment:
-        return SearchService.instance.getRandomMomentsSearchResults(context!);
+        return SearchService.instance.getRandomMomentsSearchResults(context);
 
       case SectionType.location:
         return SearchService.instance.getAllLocationTags(limit);
@@ -255,7 +257,7 @@ extension SectionTypeExtensions on SectionType {
 
       case SectionType.fileTypesAndExtension:
         return SearchService.instance
-            .getAllFileTypesAndExtensionsResults(limit);
+            .getAllFileTypesAndExtensionsResults(context, limit);
 
       case SectionType.fileCaption:
         return SearchService.instance.getAllDescriptionSearchResults(limit);

+ 20 - 6
lib/services/search_service.dart

@@ -287,12 +287,13 @@ class SearchService {
   }
 
   Future<List<GenericSearchResult>> getFileTypeResults(
+    BuildContext context,
     String query,
   ) async {
     final List<GenericSearchResult> searchResults = [];
     final List<EnteFile> allFiles = await getAllFiles();
     for (var fileType in FileType.values) {
-      final String fileTypeString = getHumanReadableString(fileType);
+      final String fileTypeString = getHumanReadableString(context, fileType);
       if (fileTypeString.toLowerCase().startsWith(query.toLowerCase())) {
         final matchedFiles =
             allFiles.where((e) => e.fileType == fileType).toList();
@@ -311,6 +312,7 @@ class SearchService {
   }
 
   Future<List<GenericSearchResult>> getAllFileTypesAndExtensionsResults(
+    BuildContext context,
     int? limit,
   ) async {
     final List<GenericSearchResult> searchResults = [];
@@ -340,13 +342,23 @@ class SearchService {
       }
 
       fileTypesAndMatchingFiles.forEach((key, value) {
-        searchResults
-            .add(GenericSearchResult(ResultType.fileType, key.name, value));
+        searchResults.add(
+          GenericSearchResult(
+            ResultType.fileType,
+            getHumanReadableString(context, key),
+            value,
+          ),
+        );
       });
 
       extensionsAndMatchingFiles.forEach((key, value) {
-        searchResults
-            .add(GenericSearchResult(ResultType.fileExtension, key, value));
+        searchResults.add(
+          GenericSearchResult(
+            ResultType.fileExtension,
+            key + "s",
+            value,
+          ),
+        );
       });
 
       if (limit != null) {
@@ -860,7 +872,9 @@ class SearchService {
         searchResults.add(
           GenericSearchResult(
             ResultType.shared,
-            key.name != null && key.name!.isNotEmpty ? key.name! : key.email,
+            key.name != null && key.name!.isNotEmpty
+                ? key.name!
+                : key.email.split("@")[0],
             value,
           ),
         );

+ 4 - 7
lib/states/all_sections_examples_state.dart

@@ -1,7 +1,6 @@
 import "dart:async";
 
 import "package:flutter/material.dart";
-import "package:flutter/scheduler.dart";
 import "package:logging/logging.dart";
 import "package:photos/core/constants.dart";
 import "package:photos/core/event_bus.dart";
@@ -37,13 +36,11 @@ class _AllSectionsExamplesProviderState
   @override
   void initState() {
     super.initState();
-    SchedulerBinding.instance.addPostFrameCallback((timeStamp) {
-      //add all common events for all search sections to reload to here.
-      _filesUpdatedEvent = Bus.instance.on<FilesUpdatedEvent>().listen((event) {
-        reloadAllSections();
-      });
+    //add all common events for all search sections to reload to here.
+    _filesUpdatedEvent = Bus.instance.on<FilesUpdatedEvent>().listen((event) {
       reloadAllSections();
     });
+    reloadAllSections();
   }
 
   void reloadAllSections() {
@@ -57,7 +54,7 @@ class _AllSectionsExamplesProviderState
             continue;
           }
           allSectionsExamples.add(
-            sectionType.getData(limit: searchSectionLimit, context: context),
+            sectionType.getData(context, limit: searchSectionLimit),
           );
         }
         allSectionsExamplesFuture =

+ 2 - 8
lib/ui/viewer/search/result/go_to_map_widget.dart

@@ -1,4 +1,3 @@
-import "package:flutter/cupertino.dart";
 import "package:flutter/material.dart";
 import "package:photos/generated/l10n.dart";
 import "package:photos/services/search_service.dart";
@@ -19,7 +18,6 @@ class GoToMapWidget extends StatelessWidget {
       width = 85.0 + ((textScaleFactor - 1.0) * 64);
     }
 
-    final colorScheme = getEnteColorScheme(context);
     return GestureDetector(
       onTap: () async {
         final bool result = await requestForMapEnable(context);
@@ -40,14 +38,10 @@ class GoToMapWidget extends StatelessWidget {
           child: Column(
             mainAxisSize: MainAxisSize.min,
             children: [
-              SizedBox(
+              Image.asset(
+                "assets/map.png",
                 width: 64,
                 height: 64,
-                child: Icon(
-                  CupertinoIcons.map_fill,
-                  color: colorScheme.strokeFaint,
-                  size: 48,
-                ),
               ),
               const SizedBox(
                 height: 10,

+ 3 - 7
lib/ui/viewer/search/result/search_section_all_page.dart

@@ -30,24 +30,20 @@ class _SearchSectionAllPageState extends State<SearchSectionAllPage> {
   @override
   void initState() {
     super.initState();
+    sectionData = widget.sectionType.getData(context);
+
     final streamsToListenTo = widget.sectionType.viewAllUpdateEvents();
     for (Stream<Event> stream in streamsToListenTo) {
       streamSubscriptions.add(
         stream.listen((event) async {
           setState(() {
-            sectionData = widget.sectionType.getData();
+            sectionData = widget.sectionType.getData(context);
           });
         }),
       );
     }
   }
 
-  @override
-  void didChangeDependencies() {
-    super.didChangeDependencies();
-    sectionData = widget.sectionType.getData(limit: null, context: context);
-  }
-
   @override
   void dispose() {
     for (var subscriptions in streamSubscriptions) {

+ 39 - 33
lib/ui/viewer/search/search_section.dart

@@ -48,8 +48,10 @@ class _SearchSectionState extends State<SearchSection> {
     for (Stream<Event> stream in streamsToListenTo) {
       streamSubscriptions.add(
         stream.listen((event) async {
-          _examples =
-              await widget.sectionType.getData(limit: searchSectionLimit);
+          _examples = await widget.sectionType.getData(
+            context,
+            limit: searchSectionLimit,
+          );
           setState(() {});
         }),
       );
@@ -73,47 +75,51 @@ class _SearchSectionState extends State<SearchSection> {
   @override
   Widget build(BuildContext context) {
     debugPrint("Building section for ${widget.sectionType.name}");
+    final shouldShowMore = _examples.length >= widget.limit - 1;
     final textTheme = getEnteTextTheme(context);
     return Padding(
       padding: const EdgeInsets.symmetric(vertical: 8),
       child: widget.examples.isNotEmpty
-          ? Column(
-              crossAxisAlignment: CrossAxisAlignment.start,
-              children: [
-                Row(
-                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
-                  children: [
-                    Padding(
-                      padding: const EdgeInsets.all(12),
-                      child: Text(
-                        widget.sectionType.sectionTitle(context),
-                        style: textTheme.largeBold,
-                      ),
+          ? GestureDetector(
+              behavior: HitTestBehavior.opaque,
+              onTap: () {
+                if (shouldShowMore) {
+                  routeToPage(
+                    context,
+                    SearchSectionAllPage(
+                      sectionType: widget.sectionType,
                     ),
-                    _examples.length < (widget.limit - 1)
-                        ? const SizedBox.shrink()
-                        : GestureDetector(
-                            onTap: () {
-                              routeToPage(
-                                context,
-                                SearchSectionAllPage(
-                                  sectionType: widget.sectionType,
-                                ),
-                              );
-                            },
-                            child: Padding(
+                  );
+                }
+              },
+              child: Column(
+                crossAxisAlignment: CrossAxisAlignment.start,
+                children: [
+                  Row(
+                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
+                    children: [
+                      Padding(
+                        padding: const EdgeInsets.all(12),
+                        child: Text(
+                          widget.sectionType.sectionTitle(context),
+                          style: textTheme.largeBold,
+                        ),
+                      ),
+                      shouldShowMore
+                          ? Padding(
                               padding: const EdgeInsets.all(12),
                               child: Icon(
                                 Icons.chevron_right_outlined,
                                 color: getEnteColorScheme(context).strokeMuted,
                               ),
-                            ),
-                          ),
-                  ],
-                ),
-                const SizedBox(height: 2),
-                SearchExampleRow(_examples, widget.sectionType),
-              ],
+                            )
+                          : const SizedBox.shrink(),
+                    ],
+                  ),
+                  const SizedBox(height: 2),
+                  SearchExampleRow(_examples, widget.sectionType),
+                ],
+              ),
             )
           : Padding(
               padding: const EdgeInsets.only(left: 16, right: 8),

+ 2 - 6
lib/ui/viewer/search/search_suggestions.dart

@@ -1,5 +1,6 @@
 import 'package:flutter/material.dart';
 import 'package:logging/logging.dart';
+import "package:photos/generated/l10n.dart";
 import 'package:photos/models/search/album_search_result.dart';
 import 'package:photos/models/search/generic_search_result.dart';
 import 'package:photos/models/search/search_result.dart';
@@ -21,12 +22,7 @@ class SearchSuggestionsWidget extends StatelessWidget {
   Widget build(BuildContext context) {
     late final String title;
     final resultsCount = results.length;
-    //todo: extract string
-    if (resultsCount == 1) {
-      title = "$resultsCount result found";
-    } else {
-      title = "$resultsCount results found";
-    }
+    title = S.of(context).searchResultCount(resultsCount);
     return Padding(
       padding: const EdgeInsets.fromLTRB(12, 32, 12, 0),
       child: Column(

+ 1 - 1
lib/ui/viewer/search/search_widget.dart

@@ -225,7 +225,7 @@ class SearchWidgetState extends State<SearchWidget> {
       allResults.addAll(holidayResults);
 
       final fileTypeSearchResults =
-          await _searchService.getFileTypeResults(query);
+          await _searchService.getFileTypeResults(context, query);
       allResults.addAll(fileTypeSearchResults);
 
       final captionAndDisplayNameResult =

+ 9 - 8
lib/ui/viewer/search/tab_empty_state.dart

@@ -1,4 +1,5 @@
 import "package:flutter/material.dart";
+import "package:photos/generated/l10n.dart";
 import "package:photos/theme/ente_theme.dart";
 import "package:photos/ui/components/buttons/button_widget.dart";
 import "package:photos/ui/components/empty_state_item_widget.dart";
@@ -19,25 +20,25 @@ class SearchTabEmptyState extends StatelessWidget {
           mainAxisAlignment: MainAxisAlignment.center,
           crossAxisAlignment: CrossAxisAlignment.start,
           children: [
-            Text("Fast, on-device search", style: textStyle.h3Bold),
+            Text(S.of(context).searchHint1, style: textStyle.h3Bold),
             const SizedBox(height: 24),
-            const EmptyStateItemWidget("Photo dates, descriptions"),
+            EmptyStateItemWidget(S.of(context).searchHint2),
             const SizedBox(height: 12),
-            const EmptyStateItemWidget("Albums, file names, and types"),
+            EmptyStateItemWidget(S.of(context).searchHint3),
             const SizedBox(height: 12),
-            const EmptyStateItemWidget("Location"),
+            EmptyStateItemWidget(S.of(context).searchHint4),
             const SizedBox(height: 12),
-            const EmptyStateItemWidget("Coming soon: Photo contents, faces"),
+            EmptyStateItemWidget(S.of(context).searchHint5),
             const SizedBox(height: 32),
             ButtonWidget(
               buttonType: ButtonType.trailingIconPrimary,
-              labelText: "Add your photos now",
+              labelText: S.of(context).addYourPhotosNow,
               icon: Icons.arrow_forward_outlined,
               onTap: () async {
                 routeToPage(
                   context,
-                  const BackupFolderSelectionPage(
-                    buttonText: "Backup",
+                  BackupFolderSelectionPage(
+                    buttonText: S.of(context).backup,
                   ),
                 );
               },