import 'package:flutter/material.dart'; import 'package:matrix/matrix.dart'; import 'package:extera_next/config/themes.dart'; class UnreadBubble extends StatelessWidget { final Room room; const UnreadBubble({required this.room, super.key}); @override Widget build(BuildContext context) { final theme = Theme.of(context); final unread = room.isUnread; final hasNotifications = room.notificationCount > 0; final unreadBubbleSize = unread || room.hasNewMessages ? room.notificationCount > 0 ? 20.0 : 14.0 : 0.0; return AnimatedContainer( duration: FluffyThemes.animationDuration, curve: FluffyThemes.animationCurve, alignment: Alignment.center, padding: const EdgeInsets.symmetric(horizontal: 7), height: unreadBubbleSize, width: !hasNotifications && !unread && !room.hasNewMessages ? 0 : (unreadBubbleSize - 9) * room.notificationCount.toString().length + 9, decoration: BoxDecoration( color: room.highlightCount > 0 ? theme.colorScheme.error : hasNotifications || room.markedUnread ? theme.colorScheme.primary : theme.colorScheme.primaryContainer, borderRadius: BorderRadius.circular(7), ), child: hasNotifications ? Text( room.notificationCount.toString(), style: TextStyle( color: room.highlightCount > 0 ? theme.colorScheme.onError : hasNotifications ? theme.colorScheme.onPrimary : theme.colorScheme.onPrimaryContainer, fontSize: 13, fontWeight: FontWeight.w500, ), textAlign: TextAlign.center, ) : const SizedBox.shrink(), ); } }