formatRelativeDate function

String formatRelativeDate(
  1. String? isoString, {
  2. CupThreadStrings? strings,
})

Formats an ISO 8601 string to a human-friendly relative date.

Implementation

String formatRelativeDate(String? isoString, {CupThreadStrings? strings}) {
  if (isoString == null || isoString.isEmpty) return '';
  final date = DateTime.tryParse(isoString);
  if (date == null) return isoString;

  final now = DateTime.now().toUtc();
  final diff = now.difference(date.toUtc());

  final s = strings ?? CupThreadStrings.en;
  if (diff.inSeconds < 60) return s.justNow;
  if (diff.inMinutes < 60) return '${diff.inMinutes}${s.minutesAgoSuffix}';
  if (diff.inHours < 24) return '${diff.inHours}${s.hoursAgoSuffix}';
  if (diff.inDays < 7) return '${diff.inDays}${s.daysAgoSuffix}';

  return '${date.year}-${date.month.toString().padLeft(2, '0')}-${date.day.toString().padLeft(2, '0')}';
}