wip polls

This commit is contained in:
Henry Hiles 2026-01-11 13:41:05 -05:00
commit 7d9d03deb1
No known key found for this signature in database
6 changed files with 195 additions and 14 deletions

View file

@ -3,7 +3,8 @@ import "package:flutter_chat_core/flutter_chat_core.dart";
import "package:matrix/matrix.dart";
extension EventToMessage on Event {
Future<Message?> toMessage({
Future<Message?> toMessage(
Timeline timeline, {
bool mustBeText = false,
bool includeEdits = false,
}) async {
@ -25,7 +26,7 @@ extension EventToMessage on Event {
event.content["formatted_body"] ??
event.content["body"] ??
"",
"reply": await replyEvent?.toMessage(mustBeText: true),
"reply": await replyEvent?.toMessage(mustBeText: true, timeline),
"body": newContent?["body"] ?? event.content["body"],
"eventType": event.type,
"avatarUrl": sender.avatarUrl.toString(),
@ -65,12 +66,21 @@ extension EventToMessage on Event {
as TextMessage;
if (mustBeText) return asText;
return switch (type) {
EventTypes.Encrypted => asText.copyWith(
text: "Unable to decrypt message.",
metadata: {...metadata, "formatted": "Unable to decrypt message."},
),
PollEventContent.startType => Message.custom(
metadata: {
...metadata,
"poll": event.parsedPollEventContent.pollStartContent,
"responses": event.getPollResponses(timeline),
},
id: eventId,
deliveredAt: originServerTs,
authorId: senderId,
),
(EventTypes.Sticker || EventTypes.Message) => switch (messageType) {
(MessageTypes.Sticker || MessageTypes.Image) => Message.image(
metadata: metadata,