fix: Show server logs timestamps in a local timezone

Resolves #540
This commit is contained in:
Inex Code 2024-08-06 20:25:13 +03:00
parent 76821aeec5
commit 4445b5cba1
2 changed files with 11 additions and 24 deletions

View file

@ -29,8 +29,11 @@ class ServerLogEntry extends Equatable {
final String? systemdUnit; final String? systemdUnit;
final DateTime timestamp; final DateTime timestamp;
static final DateFormat _formatter = DateFormat('hh:mm:ss'); static final DateFormat _formatter = DateFormat('HH:mm:ss');
String get timeString => _formatter.format(timestamp); String get utcTimeString => _formatter.format(timestamp);
String get localTimeString => _formatter.format(timestamp.toLocal());
String localDateString(final String locale) =>
DateFormat.yMMMMEEEEd(locale).format(timestamp.toLocal());
String get fullUTCString => timestamp.toUtc().toIso8601String(); String get fullUTCString => timestamp.toUtc().toIso8601String();
@override @override

View file

@ -203,7 +203,7 @@ class LogEntryWidget extends StatelessWidget {
style: DefaultTextStyle.of(context).style, style: DefaultTextStyle.of(context).style,
children: <TextSpan>[ children: <TextSpan>[
TextSpan( TextSpan(
text: '${logEntry.timeString}: ', text: '${logEntry.localTimeString}: ',
style: TextStyle( style: TextStyle(
fontFeatures: const [FontFeature.tabularFigures()], fontFeatures: const [FontFeature.tabularFigures()],
color: color, color: color,
@ -246,7 +246,7 @@ class ServerLogEntryDialog extends StatelessWidget {
@override @override
Widget build(final BuildContext context) => AlertDialog( Widget build(final BuildContext context) => AlertDialog(
scrollable: true, scrollable: true,
title: Text(log.timeString), title: Text(log.localTimeString),
contentPadding: const EdgeInsets.symmetric( contentPadding: const EdgeInsets.symmetric(
vertical: 16, vertical: 16,
horizontal: 12, horizontal: 12,
@ -255,27 +255,11 @@ class ServerLogEntryDialog extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
const Divider(), const Divider(),
Padding( _KeyValueRow(
padding: const EdgeInsets.symmetric(horizontal: 12), 'console_page.logged_at'.tr(),
child: SelectableText.rich( '${log.localTimeString} (${log.localDateString(context.locale.languageCode)})',
TextSpan(
style: DefaultTextStyle.of(context).style,
children: <TextSpan>[
TextSpan(
text: '${'console_page.logged_at'.tr()}: ',
style: const TextStyle(),
),
TextSpan(
text: '${log.timeString} (${log.fullUTCString})',
style: const TextStyle(
fontWeight: FontWeight.w700,
fontFeatures: [FontFeature.tabularFigures()],
),
),
],
),
),
), ),
_KeyValueRow('UTC', log.fullUTCString),
const Divider(), const Divider(),
_SectionRow('server.log_dialog.metadata'.tr()), _SectionRow('server.log_dialog.metadata'.tr()),
_KeyValueRow('server.log_dialog.cursor'.tr(), log.cursor), _KeyValueRow('server.log_dialog.cursor'.tr(), log.cursor),