feat: Add DateTimeUtils for converting UTC to device local time and update imports

This commit is contained in:
Achintha Isuru
2026-01-31 20:46:34 -05:00
parent c6128c2332
commit 0b38383aab
4 changed files with 29 additions and 9 deletions

View File

@@ -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';

View File

@@ -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();
}
}

View File

@@ -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

View File

@@ -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';