54 lines
2.5 KiB
Dart
54 lines
2.5 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:provider/provider.dart';
|
|
import '../models/redaction.dart';
|
|
import '../settings.dart';
|
|
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
|
|
|
// Provides message decorations (acks/errors/dates etc.) for generic message bubble overlays (chats, invites etc.)
|
|
class MessageBubbleDecoration extends StatefulWidget {
|
|
MessageBubbleDecoration({required this.ackd, required this.errored, required this.messageDate, required this.fromMe});
|
|
final DateTime messageDate;
|
|
final bool fromMe;
|
|
final bool ackd;
|
|
final bool errored;
|
|
|
|
@override
|
|
_MessageBubbleDecoration createState() => _MessageBubbleDecoration();
|
|
}
|
|
|
|
class _MessageBubbleDecoration extends State<MessageBubbleDecoration> {
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
var prettyDate = prettyDateString(context, widget.messageDate.toLocal());
|
|
|
|
return FittedBox(
|
|
child: Row(
|
|
mainAxisSize: MainAxisSize.min,
|
|
children: [
|
|
Text(prettyDate,
|
|
overflow: TextOverflow.ellipsis,
|
|
textWidthBasis: TextWidthBasis.longestLine,
|
|
style: TextStyle(
|
|
fontSize: 9.0 * Provider.of<Settings>(context).fontScaling,
|
|
fontWeight: FontWeight.w200,
|
|
fontFamily: "Inter",
|
|
color: widget.fromMe ? Provider.of<Settings>(context).theme.messageFromMeTextColor : Provider.of<Settings>(context).theme.messageFromOtherTextColor),
|
|
textAlign: widget.fromMe ? TextAlign.right : TextAlign.left),
|
|
!widget.fromMe
|
|
? SizedBox(width: 1, height: 1)
|
|
: Padding(
|
|
padding: EdgeInsets.all(1.0),
|
|
child: widget.ackd == true
|
|
? Tooltip(
|
|
message: AppLocalizations.of(context)!.acknowledgedLabel, child: Icon(Icons.check_circle_outline, color: Provider.of<Settings>(context).theme.messageFromMeTextColor, size: 16))
|
|
: (widget.errored == true
|
|
? Tooltip(
|
|
message: AppLocalizations.of(context)!.couldNotSendMsgError, child: Icon(Icons.error_outline, color: Provider.of<Settings>(context).theme.messageFromMeTextColor, size: 16))
|
|
: Tooltip(
|
|
message: AppLocalizations.of(context)!.pendingLabel,
|
|
child: Icon(Icons.hourglass_bottom_outlined, color: Provider.of<Settings>(context).theme.messageFromMeTextColor, size: 16))))
|
|
],
|
|
));
|
|
}
|
|
}
|