import "package:flutter/material.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/models/file.dart"; import "package:photos/theme/ente_theme.dart"; import "package:photos/ui/components/info_item_widget.dart"; import "package:photos/utils/date_time_util.dart"; import "package:photos/utils/magic_util.dart"; class CreationTimeItem extends StatefulWidget { final File file; final int currentUserID; const CreationTimeItem(this.file, this.currentUserID, {super.key}); @override State createState() => _CreationTimeItemState(); } class _CreationTimeItemState extends State { @override Widget build(BuildContext context) { final dateTime = DateTime.fromMicrosecondsSinceEpoch(widget.file.creationTime!); return InfoItemWidget( key: const ValueKey("Creation time"), leadingIcon: Icons.calendar_today_outlined, title: DateFormat.yMMMEd(Localizations.localeOf(context).languageCode) .format( DateTime.fromMicrosecondsSinceEpoch(widget.file.creationTime!), ), subtitleSection: Future.value([ Text( getTimeIn12hrFormat(dateTime) + " " + dateTime.timeZoneName, style: getEnteTextTheme(context).miniMuted, ), ]), editOnTap: ((widget.file.ownerID == null || widget.file.ownerID == widget.currentUserID) && widget.file.uploadedFileID != null) ? () { _showDateTimePicker(widget.file); } : null, ); } void _showDateTimePicker(File file) async { final dateResult = await DatePicker.showDatePicker( context, minTime: DateTime(1800, 1, 1), maxTime: DateTime.now(), currentTime: DateTime.fromMicrosecondsSinceEpoch(file.creationTime!), locale: LocaleType.en, theme: Theme.of(context).colorScheme.dateTimePickertheme, ); if (dateResult == null) { return; } final dateWithTimeResult = await DatePicker.showTime12hPicker( context, showTitleActions: true, currentTime: dateResult, locale: LocaleType.en, theme: Theme.of(context).colorScheme.dateTimePickertheme, ); if (dateWithTimeResult != null) { if (await editTime( context, List.of([widget.file]), dateWithTimeResult.microsecondsSinceEpoch, )) { widget.file.creationTime = dateWithTimeResult.microsecondsSinceEpoch; setState(() {}); } } } }