Improve notifications list UX with auto-refresh and friendly timestamps

- Show "Just now" for notifications 2 minutes old or less
- Auto-refresh the list every minute, preserving the active filter

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
rzuasti
2026-05-27 14:08:30 -04:00
co-authored by Claude Sonnet 4.6
parent f34dfe8386
commit 4f5a228aec
2 changed files with 14 additions and 0 deletions
@@ -1,3 +1,5 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart';
@@ -14,6 +16,16 @@ class NotificationList extends StatefulWidget {
class _NotificationListState extends State<NotificationList> {
int _filterChoice = 1; // 1 => Only new, 2=> Only old, 3=> All
Timer? _refreshTimer;
@override
void initState() {
super.initState();
_refreshTimer = Timer.periodic(
const Duration(minutes: 1),
(_) => _pagingController.refresh(),
);
}
late final _pagingController = PagingController<int, oott_model.Notification>(
getNextPageKey: (state) => state.lastPageIsEmpty
@@ -262,6 +274,7 @@ class _NotificationListState extends State<NotificationList> {
@override
void dispose() {
_refreshTimer?.cancel();
_pagingController.dispose();
super.dispose();
}
@@ -14,6 +14,7 @@ class FriendlyDateFormatter {
dateTime.day,
);
if (timeSince.inMinutes <= 2) return 'Just now';
if (timeSince.inMinutes < 60) return '${timeSince.inMinutes} minutes ago';
if (dateTimeWithoutTime == today) {
return 'Today at ${DateFormat.Hm().format(dateTime)}';