Przeglądaj źródła

l10n: Fix gallery date format (#1066)

Neeraj Gupta 2 lat temu
rodzic
commit
b8d7eaf2e3

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

@@ -412,6 +412,8 @@ class MessageLookup extends MessageLookupByLibrary {
         "custom": MessageLookupByLibrary.simpleMessage("Custom"),
         "custom": MessageLookupByLibrary.simpleMessage("Custom"),
         "customRadius": MessageLookupByLibrary.simpleMessage("Custom radius"),
         "customRadius": MessageLookupByLibrary.simpleMessage("Custom radius"),
         "darkTheme": MessageLookupByLibrary.simpleMessage("Dark"),
         "darkTheme": MessageLookupByLibrary.simpleMessage("Dark"),
+        "dayToday": MessageLookupByLibrary.simpleMessage("Today"),
+        "dayYesterday": MessageLookupByLibrary.simpleMessage("Yesterday"),
         "decrypting": MessageLookupByLibrary.simpleMessage("Decrypting..."),
         "decrypting": MessageLookupByLibrary.simpleMessage("Decrypting..."),
         "decryptingVideo":
         "decryptingVideo":
             MessageLookupByLibrary.simpleMessage("Decrypting video..."),
             MessageLookupByLibrary.simpleMessage("Decrypting video..."),

+ 20 - 0
lib/generated/l10n.dart

@@ -6812,6 +6812,26 @@ class S {
       args: [],
       args: [],
     );
     );
   }
   }
+
+  /// `Today`
+  String get dayToday {
+    return Intl.message(
+      'Today',
+      name: 'dayToday',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Yesterday`
+  String get dayYesterday {
+    return Intl.message(
+      'Yesterday',
+      name: 'dayYesterday',
+      desc: '',
+      args: [],
+    );
+  }
 }
 }
 
 
 class AppLocalizationDelegate extends LocalizationsDelegate<S> {
 class AppLocalizationDelegate extends LocalizationsDelegate<S> {

+ 3 - 1
lib/l10n/intl_en.arb

@@ -948,5 +948,7 @@
   "distanceInKMUnit": "km",
   "distanceInKMUnit": "km",
   "@distanceInKMUnit": {
   "@distanceInKMUnit": {
     "description": "Unit for distance in km"
     "description": "Unit for distance in km"
-  }
+  },
+  "dayToday": "Today",
+  "dayYesterday": "Yesterday"
 }
 }

+ 7 - 6
lib/ui/huge_listview/lazy_loading_gallery.dart

@@ -20,8 +20,8 @@ import 'package:photos/theme/ente_theme.dart';
 import 'package:photos/ui/huge_listview/place_holder_widget.dart';
 import 'package:photos/ui/huge_listview/place_holder_widget.dart';
 import 'package:photos/ui/viewer/file/detail_page.dart';
 import 'package:photos/ui/viewer/file/detail_page.dart';
 import 'package:photos/ui/viewer/file/thumbnail_widget.dart';
 import 'package:photos/ui/viewer/file/thumbnail_widget.dart';
+import "package:photos/ui/viewer/gallery/component/day_widget.dart";
 import 'package:photos/ui/viewer/gallery/gallery.dart';
 import 'package:photos/ui/viewer/gallery/gallery.dart';
-import 'package:photos/utils/date_time_util.dart';
 import 'package:photos/utils/file_util.dart';
 import 'package:photos/utils/file_util.dart';
 import 'package:photos/utils/navigation_util.dart';
 import 'package:photos/utils/navigation_util.dart';
 import 'package:visibility_detector/visibility_detector.dart';
 import 'package:visibility_detector/visibility_detector.dart';
@@ -113,7 +113,9 @@ class _LazyLoadingGalleryState extends State<LazyLoadingGallery> {
         _logger.info(
         _logger.info(
           filesUpdatedThisDay.length.toString() +
           filesUpdatedThisDay.length.toString() +
               " files were updated due to ${event.reason} on " +
               " files were updated due to ${event.reason} on " +
-              getDayTitle(galleryDate.microsecondsSinceEpoch),
+              DateTime.fromMicrosecondsSinceEpoch(
+                galleryDate.microsecondsSinceEpoch,
+              ).toIso8601String(),
         );
         );
       }
       }
       if (event.type == EventType.addedOrUpdated) {
       if (event.type == EventType.addedOrUpdated) {
@@ -195,10 +197,9 @@ class _LazyLoadingGalleryState extends State<LazyLoadingGallery> {
           mainAxisAlignment: MainAxisAlignment.spaceBetween,
           mainAxisAlignment: MainAxisAlignment.spaceBetween,
           children: [
           children: [
             if (widget.areFilesCollatedByDay)
             if (widget.areFilesCollatedByDay)
-              getDayWidget(
-                context,
-                _files[0].creationTime!,
-                widget.photoGirdSize,
+              DayWidget(
+                timestamp: _files[0].creationTime!,
+                gridSize: widget.photoGirdSize,
               ),
               ),
             widget.limitSelectionToOne
             widget.limitSelectionToOne
                 ? const SizedBox.shrink()
                 ? const SizedBox.shrink()

+ 4 - 2
lib/ui/payment/subscription_common_widgets.dart

@@ -1,4 +1,5 @@
 import 'package:flutter/material.dart';
 import 'package:flutter/material.dart';
+import "package:intl/intl.dart";
 import 'package:photos/ente_theme_data.dart';
 import 'package:photos/ente_theme_data.dart';
 import "package:photos/generated/l10n.dart";
 import "package:photos/generated/l10n.dart";
 import 'package:photos/models/subscription.dart';
 import 'package:photos/models/subscription.dart';
@@ -7,7 +8,6 @@ import "package:photos/ui/components/captioned_text_widget.dart";
 import "package:photos/ui/components/menu_item_widget/menu_item_widget.dart";
 import "package:photos/ui/components/menu_item_widget/menu_item_widget.dart";
 import 'package:photos/ui/payment/billing_questions_widget.dart';
 import 'package:photos/ui/payment/billing_questions_widget.dart';
 import 'package:photos/utils/data_util.dart';
 import 'package:photos/utils/data_util.dart';
-import 'package:photos/utils/date_time_util.dart';
 
 
 class SubscriptionHeaderWidget extends StatefulWidget {
 class SubscriptionHeaderWidget extends StatefulWidget {
   final bool? isOnboarding;
   final bool? isOnboarding;
@@ -94,9 +94,11 @@ class ValidityWidget extends StatelessWidget {
     if (currentSubscription == null) {
     if (currentSubscription == null) {
       return const SizedBox.shrink();
       return const SizedBox.shrink();
     }
     }
-    final endDate = getDateAndMonthAndYear(
+    final endDate =
+        DateFormat.yMMMd(Localizations.localeOf(context).languageCode).format(
       DateTime.fromMicrosecondsSinceEpoch(currentSubscription!.expiryTime),
       DateTime.fromMicrosecondsSinceEpoch(currentSubscription!.expiryTime),
     );
     );
+
     var message = S.of(context).renewsOn(endDate);
     var message = S.of(context).renewsOn(endDate);
     if (currentSubscription!.productID == freeProductID) {
     if (currentSubscription!.productID == freeProductID) {
       message = S.of(context).freeTrialValidTill(endDate);
       message = S.of(context).freeTrialValidTill(endDate);

+ 3 - 3
lib/ui/viewer/file_details/backed_up_time_item_widget.dart

@@ -1,4 +1,5 @@
 import "package:flutter/material.dart";
 import "package:flutter/material.dart";
+import "package:intl/intl.dart";
 import "package:photos/models/file.dart";
 import "package:photos/models/file.dart";
 import "package:photos/theme/ente_theme.dart";
 import "package:photos/theme/ente_theme.dart";
 import "package:photos/ui/components/info_item_widget.dart";
 import "package:photos/ui/components/info_item_widget.dart";
@@ -15,9 +16,8 @@ class BackedUpTimeItemWidget extends StatelessWidget {
     return InfoItemWidget(
     return InfoItemWidget(
       key: const ValueKey("Backedup date"),
       key: const ValueKey("Backedup date"),
       leadingIcon: Icons.backup_outlined,
       leadingIcon: Icons.backup_outlined,
-      title: getFullDate(
-        DateTime.fromMicrosecondsSinceEpoch(file.updationTime!),
-      ),
+      title: DateFormat.yMMMEd(Localizations.localeOf(context).languageCode)
+          .format(dateTimeForUpdationTime),
       subtitleSection: Future.value([
       subtitleSection: Future.value([
         Text(
         Text(
           getTimeIn12hrFormat(dateTimeForUpdationTime) +
           getTimeIn12hrFormat(dateTimeForUpdationTime) +

+ 4 - 3
lib/ui/viewer/file_details/creation_time_item_widget.dart

@@ -1,5 +1,6 @@
 import "package:flutter/material.dart";
 import "package:flutter/material.dart";
 import "package:flutter_datetime_picker/flutter_datetime_picker.dart";
 import "package:flutter_datetime_picker/flutter_datetime_picker.dart";
+import "package:intl/intl.dart";
 import "package:photos/ente_theme_data.dart";
 import "package:photos/ente_theme_data.dart";
 import "package:photos/models/file.dart";
 import "package:photos/models/file.dart";
 import "package:photos/theme/ente_theme.dart";
 import "package:photos/theme/ente_theme.dart";
@@ -24,9 +25,9 @@ class _CreationTimeItemState extends State<CreationTimeItem> {
     return InfoItemWidget(
     return InfoItemWidget(
       key: const ValueKey("Creation time"),
       key: const ValueKey("Creation time"),
       leadingIcon: Icons.calendar_today_outlined,
       leadingIcon: Icons.calendar_today_outlined,
-      title: getFullDate(
-        DateTime.fromMicrosecondsSinceEpoch(widget.file.creationTime!),
-      ),
+      title: DateFormat.yMMMEd(Localizations.localeOf(context).languageCode)
+          .format(
+              DateTime.fromMicrosecondsSinceEpoch(widget.file.creationTime!)),
       subtitleSection: Future.value([
       subtitleSection: Future.value([
         Text(
         Text(
           getTimeIn12hrFormat(dateTime) + "  " + dateTime.timeZoneName,
           getTimeIn12hrFormat(dateTime) + "  " + dateTime.timeZoneName,

+ 63 - 0
lib/ui/viewer/gallery/component/day_widget.dart

@@ -0,0 +1,63 @@
+import "package:flutter/cupertino.dart";
+import "package:intl/intl.dart";
+import 'package:photos/core/constants.dart';
+import "package:photos/generated/l10n.dart";
+import "package:photos/theme/ente_theme.dart";
+
+class DayWidget extends StatelessWidget {
+  final int timestamp;
+  final int gridSize;
+
+  const DayWidget({
+    super.key,
+    required this.timestamp,
+    required this.gridSize,
+  });
+
+  @override
+  Widget build(BuildContext context) {
+    final colorScheme = getEnteColorScheme(context);
+    final textTheme = getEnteTextTheme(context);
+    final textStyle =
+        gridSize < photoGridSizeMax ? textTheme.body : textTheme.small;
+    final double horizontalPadding = gridSize < photoGridSizeMax ? 12.0 : 8.0;
+    final double verticalPadding = gridSize < photoGridSizeMax ? 12.0 : 14.0;
+    final String dayTitle = _getDayTitle(context, timestamp);
+    return Padding(
+      padding: EdgeInsets.symmetric(
+        horizontal: horizontalPadding,
+        vertical: verticalPadding,
+      ),
+      child: Container(
+        alignment: Alignment.centerLeft,
+        child: Text(
+          dayTitle,
+          style: (dayTitle == S.of(context).dayToday)
+              ? textStyle
+              : textStyle.copyWith(color: colorScheme.textMuted),
+        ),
+      ),
+    );
+  }
+
+  String _getDayTitle(BuildContext context, int timestamp) {
+    final date = DateTime.fromMicrosecondsSinceEpoch(timestamp);
+    final now = DateTime.now();
+
+    if (date.year == now.year && date.month == now.month) {
+      if (date.day == now.day) {
+        return S.of(context).dayToday;
+      } else if (date.day == now.day - 1) {
+        return S.of(context).dayYesterday;
+      }
+    }
+
+    if (date.year != DateTime.now().year) {
+      return DateFormat.yMMMEd(Localizations.localeOf(context).languageCode)
+          .format(date);
+    } else {
+      return DateFormat.MMMEd(Localizations.localeOf(context).languageCode)
+          .format(date);
+    }
+  }
+}

+ 0 - 77
lib/utils/date_time_util.dart

@@ -1,8 +1,5 @@
 import 'package:flutter/foundation.dart';
 import 'package:flutter/foundation.dart';
-import 'package:flutter/material.dart';
 import 'package:intl/intl.dart';
 import 'package:intl/intl.dart';
-import 'package:photos/core/constants.dart';
-import 'package:photos/theme/ente_theme.dart';
 
 
 const Set<int> monthWith31Days = {1, 3, 5, 7, 8, 10, 12};
 const Set<int> monthWith31Days = {1, 3, 5, 7, 8, 10, 12};
 const Set<int> monthWith30Days = {4, 6, 9, 11};
 const Set<int> monthWith30Days = {4, 6, 9, 11};
@@ -68,24 +65,6 @@ bool areFromSameDay(int firstCreationTime, int secondCreationTime) {
       firstDate.day == secondDate.day;
       firstDate.day == secondDate.day;
 }
 }
 
 
-//Thu, 30 Jun
-String getDayAndMonth(DateTime dateTime) {
-  return _days[dateTime.weekday]! +
-      ", " +
-      dateTime.day.toString() +
-      " " +
-      _months[dateTime.month]!;
-}
-
-//30 Jun, 2022
-String getDateAndMonthAndYear(DateTime dateTime) {
-  return dateTime.day.toString() +
-      " " +
-      _months[dateTime.month]! +
-      ", " +
-      dateTime.year.toString();
-}
-
 // Create link default names:
 // Create link default names:
 // Same day: "Dec 19, 2022"
 // Same day: "Dec 19, 2022"
 // Same month: "Dec 19 - 22, 2022"
 // Same month: "Dec 19 - 22, 2022"
@@ -166,16 +145,6 @@ String getFormattedDate(DateTime dateTime) {
       getAbbreviationOfYear(dateTime);
       getAbbreviationOfYear(dateTime);
 }
 }
 
 
-String getFullDate(DateTime dateTime) {
-  return getDay(dateTime) +
-      ", " +
-      getMonth(dateTime) +
-      " " +
-      dateTime.day.toString() +
-      " " +
-      dateTime.year.toString();
-}
-
 String daysLeft(int futureTime) {
 String daysLeft(int futureTime) {
   final int daysLeft = ((futureTime - DateTime.now().microsecondsSinceEpoch) /
   final int daysLeft = ((futureTime - DateTime.now().microsecondsSinceEpoch) /
           Duration.microsecondsPerDay)
           Duration.microsecondsPerDay)
@@ -233,52 +202,6 @@ bool isLeapYear(DateTime dateTime) {
   }
   }
 }
 }
 
 
-Widget getDayWidget(
-  BuildContext context,
-  int timestamp,
-  int photoGridSize,
-) {
-  final colorScheme = getEnteColorScheme(context);
-  final textTheme = getEnteTextTheme(context);
-  final textStyle =
-      photoGridSize < photoGridSizeMax ? textTheme.body : textTheme.small;
-  final double horizontalPadding =
-      photoGridSize < photoGridSizeMax ? 12.0 : 8.0;
-  final double verticalPadding = photoGridSize < photoGridSizeMax ? 12.0 : 14.0;
-  return Padding(
-    padding: EdgeInsets.symmetric(
-      horizontal: horizontalPadding,
-      vertical: verticalPadding,
-    ),
-    child: Container(
-      alignment: Alignment.centerLeft,
-      child: Text(
-        getDayTitle(timestamp),
-        style: (getDayTitle(timestamp) == "Today")
-            ? textStyle
-            : textStyle.copyWith(color: colorScheme.textMuted),
-      ),
-    ),
-  );
-}
-
-String getDayTitle(int timestamp) {
-  final date = DateTime.fromMicrosecondsSinceEpoch(timestamp);
-  final now = DateTime.now();
-  var title = getDayAndMonth(date);
-  if (date.year == now.year && date.month == now.month) {
-    if (date.day == now.day) {
-      title = "Today";
-    } else if (date.day == now.day - 1) {
-      title = "Yesterday";
-    }
-  }
-  if (date.year != DateTime.now().year) {
-    title += " " + date.year.toString();
-  }
-  return title;
-}
-
 String secondsToHHMMSS(int value) {
 String secondsToHHMMSS(int value) {
   int h, m, s;
   int h, m, s;
   h = value ~/ 3600;
   h = value ~/ 3600;