toChatTime property

String get toChatTime

Returns relative time string for chat messages

Implementation

String get toChatTime {
  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}m ago';
  }

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

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

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

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

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