From 0b38383aabdb2185cadb039ec41845431ebd8499 Mon Sep 17 00:00:00 2001 From: Achintha Isuru Date: Sat, 31 Jan 2026 20:46:34 -0500 Subject: [PATCH] feat: Add DateTimeUtils for converting UTC to device local time and update imports --- apps/mobile/packages/core/lib/core.dart | 1 + .../core/lib/src/utils/date_time_utils.dart | 7 ++++++ .../shifts_repository_impl.dart | 25 ++++++++++++++----- .../widgets/tabs/find_shifts_tab.dart | 5 ++-- 4 files changed, 29 insertions(+), 9 deletions(-) create mode 100644 apps/mobile/packages/core/lib/src/utils/date_time_utils.dart diff --git a/apps/mobile/packages/core/lib/core.dart b/apps/mobile/packages/core/lib/core.dart index f46af624..c6536ad4 100644 --- a/apps/mobile/packages/core/lib/core.dart +++ b/apps/mobile/packages/core/lib/core.dart @@ -2,3 +2,4 @@ library core; export 'src/domain/arguments/usecase_argument.dart'; export 'src/domain/usecases/usecase.dart'; +export 'src/utils/date_time_utils.dart'; diff --git a/apps/mobile/packages/core/lib/src/utils/date_time_utils.dart b/apps/mobile/packages/core/lib/src/utils/date_time_utils.dart new file mode 100644 index 00000000..1d142b33 --- /dev/null +++ b/apps/mobile/packages/core/lib/src/utils/date_time_utils.dart @@ -0,0 +1,7 @@ + +class DateTimeUtils { + /// Converts a [DateTime] (assumed UTC if not specified) to the device's local time. + static DateTime toDeviceTime(DateTime date) { + return date.toLocal(); + } +} diff --git a/apps/mobile/packages/features/staff/shifts/lib/src/data/repositories_impl/shifts_repository_impl.dart b/apps/mobile/packages/features/staff/shifts/lib/src/data/repositories_impl/shifts_repository_impl.dart index 6f76b2a7..564d2848 100644 --- a/apps/mobile/packages/features/staff/shifts/lib/src/data/repositories_impl/shifts_repository_impl.dart +++ b/apps/mobile/packages/features/staff/shifts/lib/src/data/repositories_impl/shifts_repository_impl.dart @@ -4,6 +4,7 @@ import 'package:krow_domain/krow_domain.dart'; import 'package:intl/intl.dart'; import 'package:firebase_auth/firebase_auth.dart'; import 'package:firebase_data_connect/firebase_data_connect.dart'; +import 'package:krow_core/core.dart'; import '../../domain/repositories/shifts_repository_interface.dart'; class ShiftsRepositoryImpl implements ShiftsRepositoryInterface { @@ -51,15 +52,27 @@ class ShiftsRepositoryImpl implements ShiftsRepositoryInterface { DateTime? _toDateTime(dynamic t) { if (t == null) return null; - try { - return DateTime.tryParse(t.toJson() as String); - } catch (_) { + DateTime? dt; + if (t is Timestamp) { + dt = t.toDateTime(); + } else if (t is String) { + dt = DateTime.tryParse(t); + } else { try { - return DateTime.tryParse(t.toString()); - } catch (e) { - return null; + dt = DateTime.tryParse(t.toJson() as String); + } catch (_) { + try { + dt = DateTime.tryParse(t.toString()); + } catch (e) { + dt = null; + } } } + + if (dt != null) { + return DateTimeUtils.toDeviceTime(dt); + } + return null; } @override diff --git a/apps/mobile/packages/features/staff/shifts/lib/src/presentation/widgets/tabs/find_shifts_tab.dart b/apps/mobile/packages/features/staff/shifts/lib/src/presentation/widgets/tabs/find_shifts_tab.dart index 6524b050..648e9a85 100644 --- a/apps/mobile/packages/features/staff/shifts/lib/src/presentation/widgets/tabs/find_shifts_tab.dart +++ b/apps/mobile/packages/features/staff/shifts/lib/src/presentation/widgets/tabs/find_shifts_tab.dart @@ -1,8 +1,7 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_modular/flutter_modular.dart'; import 'package:design_system/design_system.dart'; +import 'package:flutter/material.dart'; import 'package:krow_domain/krow_domain.dart'; -import '../../navigation/shifts_navigator.dart'; + import '../../styles/shifts_styles.dart'; import '../my_shift_card.dart'; import '../shared/empty_state_view.dart';