Browse Source

changes to holidays search service and type of object returned by it

ashilkn 2 years ago
parent
commit
eeb477598b

+ 8 - 1
lib/models/search/holiday_search_result.dart

@@ -1,8 +1,15 @@
 import 'package:photos/models/search/search_results.dart';
 
 class HolidaySearchResult extends SearchResult {
+  final HolidayData holidayData;
+  final List<List<int>>
+      durationsOFHoliday; //use a method to generate values for this and pass it on to get the files in that duraiton.
+  HolidaySearchResult(this.holidayData, this.durationsOFHoliday);
+}
+
+class HolidayData {
   final String name;
   final int month;
   final int day;
-  HolidaySearchResult(this.name, this.month, this.day);
+  const HolidayData(this.name, this.month, this.day);
 }

+ 28 - 10
lib/services/search_service.dart

@@ -13,6 +13,7 @@ import 'package:photos/models/search/holiday_search_result.dart';
 import 'package:photos/models/search/location_api_response.dart';
 import 'package:photos/models/search/location_search_result.dart';
 import 'package:photos/services/collections_service.dart';
+import 'package:photos/utils/date_time_util.dart';
 
 class SearchService {
   Future<List<File>> _cachedFilesFuture;
@@ -21,11 +22,11 @@ class SearchService {
   final _logger = Logger((SearchService).toString());
   final _collectionService = CollectionsService.instance;
   static const _maximumResultsLimit = 20;
-  static final List<HolidaySearchResult> holidays = [
-    HolidaySearchResult('Christmas', 11, 25),
-    HolidaySearchResult('Christmas Eve', 11, 24),
-    HolidaySearchResult('New Year', 0, 1),
-    HolidaySearchResult('New Year Eve', 11, 31),
+  static const List<HolidayData> holidays = [
+    HolidayData('Christmas', 11, 25),
+    HolidayData('Christmas Eve', 11, 24),
+    HolidayData('New Year', 0, 1),
+    HolidayData('New Year Eve', 11, 31),
   ];
 
   SearchService._privateConstructor();
@@ -147,13 +148,14 @@ class SearchService {
   }
 
   Future<List<File>> getYearSearchResults(int year) async {
-    final yearInMicroseconds = DateTime.utc(year).microsecondsSinceEpoch;
-    final nextYearInMicroseconds =
+    final yearInMicrosecondsSinceEpoch =
+        DateTime.utc(year).microsecondsSinceEpoch;
+    final nextYearInMicrosecondsSinceEpoch =
         DateTime.utc(year + 1).microsecondsSinceEpoch;
     final yearSearchResults =
         await FilesDB.instance.getFilesCreatedWithinDurations(
       [
-        [yearInMicroseconds, nextYearInMicroseconds]
+        [yearInMicrosecondsSinceEpoch, nextYearInMicrosecondsSinceEpoch]
       ],
       null,
     );
@@ -163,14 +165,30 @@ class SearchService {
   List<HolidaySearchResult> getHolidaySearchResults(String query) {
     final nonCaseSensitiveRegexForQuery = RegExp(query, caseSensitive: false);
     final List<HolidaySearchResult> holidaySearchResult = [];
-    for (HolidaySearchResult holiday in holidays) {
+    for (HolidayData holiday in holidays) {
       if (holiday.name.contains(nonCaseSensitiveRegexForQuery)) {
-        holidaySearchResult.add(holiday);
+        holidaySearchResult.add(
+          HolidaySearchResult(
+            holiday,
+            _getDurationsOfHolidays(holiday.day, holiday.month),
+          ),
+        );
       }
     }
     return holidaySearchResult;
   }
 
+  List<List<int>> _getDurationsOfHolidays(int day, int month) {
+    List<List<int>> durationsOfHolidays = [];
+    for (int year = 1970; year < currentYear; year++) {
+      durationsOfHolidays.add([
+        DateTime.utc(year, month, day).microsecondsSinceEpoch,
+        DateTime.utc(year, month, day + 1).microsecondsSinceEpoch,
+      ]);
+    }
+    return durationsOfHolidays;
+  }
+
   bool _isValidLocation(Location location) {
     return location != null &&
         location.latitude != null &&

+ 5 - 1
lib/ui/viewer/search/search_suggestions.dart

@@ -62,7 +62,11 @@ class SearchSuggestionsWidget extends StatelessWidget {
                   return FileSearchResultWidget(result);
                 } else if (result is YearSearchResult) {
                   return YearSearchResultWidget(result);
-                } else {
+                }
+                //  else if (result is HolidaySearchResult) {
+                //   return HolidaySearchResultWidget(result);
+                // }
+                else {
                   Logger('SearchSuggestionsWidget')
                       .info("Invalid/Unsupported value");
                   return const SizedBox.shrink();

+ 2 - 0
lib/utils/date_time_util.dart

@@ -41,6 +41,8 @@ Map<int, String> _days = {
   7: "Sun",
 };
 
+final currentYear = int.parse(DateTime.now().year.toString());
+
 //Jun 2022
 String getMonthAndYear(DateTime dateTime) {
   return _months[dateTime.month] + " " + dateTime.year.toString();