toChatTimeDetailed property

String get toChatTimeDetailed

Returns detailed chat time string

Implementation

String get toChatTimeDetailed {
  final now = DateTime.now();
  final localTime = toLocal();
  final difference = now.difference(localTime);

  // Less than 1 minute
  if (difference.inMinutes == 0) {
    return 'Just now';
  }

  // Less than 1 hour
  if (difference.inHours == 0) {
    final minutes = difference.inMinutes;
    return '$minutes ${minutes == 1 ? 'minute' : 'minutes'} ago';
  }

  // Less than 24 hours
  if (difference.inDays == 0) {
    final hours = difference.inHours;
    return '$hours ${hours == 1 ? 'hour' : 'hours'} ago';
  }

  // Less than 7 days
  if (difference.inDays < 7) {
    final days = difference.inDays;
    return '$days ${days == 1 ? 'day' : 'days'} ago';
  }

  // Less than 30 days
  if (difference.inDays < 30) {
    final weeks = (difference.inDays / 7).floor();
    return '$weeks ${weeks == 1 ? 'week' : 'weeks'} ago';
  }

  // Less than 365 days
  if (difference.inDays < 365) {
    final months = (difference.inDays / 30).floor();
    return '$months ${months == 1 ? 'month' : 'months'} ago';
  }

  // More than 365 days
  final years = (difference.inDays / 365).floor();
  return '$years ${years == 1 ? 'year' : 'years'} ago';
}