import 'package:flutter/material.dart'; import 'package:badges/badges.dart' as b; import 'package:go_router/go_router.dart'; import 'package:matrix/matrix.dart'; import 'package:fluffychat/l10n/l10n.dart'; import '../../widgets/matrix.dart'; class EncryptionButton extends StatelessWidget { final Room room; const EncryptionButton(this.room, {super.key}); @override Widget build(BuildContext context) { final theme = Theme.of(context); return StreamBuilder( stream: Matrix.of(context) .client .onSync .stream .where((s) => s.deviceLists != null), builder: (context, snapshot) { return FutureBuilder( future: room.encrypted ? room.calcEncryptionHealthState() : Future.value(EncryptionHealthState.allVerified), builder: (BuildContext context, snapshot) => IconButton( tooltip: room.encrypted ? L10n.of(context).encrypted : L10n.of(context).encryptionNotEnabled, icon: b.Badge( badgeAnimation: const b.BadgeAnimation.fade(), showBadge: snapshot.data == EncryptionHealthState.unverifiedDevices, badgeStyle: b.BadgeStyle( badgeColor: theme.colorScheme.error, elevation: 4, ), badgeContent: Text( '!', style: TextStyle( fontSize: 9, color: theme.colorScheme.onError, fontWeight: FontWeight.bold, ), ), child: Icon( room.encrypted ? Icons.lock_outlined : Icons.lock_open_outlined, size: 20, color: theme.colorScheme.onSurface, ), ), onPressed: () => context.go('/rooms/${room.id}/encryption'), ), ); }, ); } }