moxxy/lib/ui/widgets/chat/bubbles/bubbles.dart

39 lines
1.3 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:moxxyv2/i18n/strings.g.dart';
import 'package:moxxyv2/shared/models/message.dart';
import 'package:moxxyv2/ui/bloc/devices_bloc.dart';
import 'package:moxxyv2/ui/widgets/chat/bubbles/omemo.dart';
Widget bubbleFromPseudoMessageType(BuildContext context, Message message) {
assert(
message.pseudoMessageType != null,
'Message must have non-null pseudoMessageType',
);
switch (message.pseudoMessageType!) {
case PseudoMessageType.changedDevice:
final replacedAmount =
(message.pseudoMessageData?['ratchetsReplaced'] as int?) ?? 1;
return OmemoBubble(
text: t.pages.conversation.replacedDeviceMessage(n: replacedAmount),
onTap: () {
context.read<DevicesBloc>().add(
DevicesRequestedEvent(message.conversationJid),
);
},
);
case PseudoMessageType.newDevice:
final addedAmount =
(message.pseudoMessageData?['ratchetsAdded'] as int?) ?? 1;
return OmemoBubble(
text: t.pages.conversation.newDeviceMessage(n: addedAmount),
onTap: () {
context.read<DevicesBloc>().add(
DevicesRequestedEvent(message.conversationJid),
);
},
);
}
}