Refactor content handling in message controller
This commit is contained in:
parent
aac843d793
commit
7fc314036e
1 changed files with 10 additions and 26 deletions
|
|
@ -1,4 +1,5 @@
|
||||||
import "package:collection/collection.dart";
|
import "package:collection/collection.dart";
|
||||||
|
import "package:fast_immutable_collections/fast_immutable_collections.dart";
|
||||||
import "package:flutter_chat_core/flutter_chat_core.dart";
|
import "package:flutter_chat_core/flutter_chat_core.dart";
|
||||||
import "package:flutter_riverpod/flutter_riverpod.dart";
|
import "package:flutter_riverpod/flutter_riverpod.dart";
|
||||||
import "package:nexus/controllers/client_state_controller.dart";
|
import "package:nexus/controllers/client_state_controller.dart";
|
||||||
|
|
@ -16,7 +17,6 @@ class MessageController extends AsyncNotifier<Message?> {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ref.mounted) return null;
|
|
||||||
final event = config.event.lastEditRowId == null
|
final event = config.event.lastEditRowId == null
|
||||||
? config.event
|
? config.event
|
||||||
: config.room.events.firstWhereOrNull(
|
: config.room.events.firstWhereOrNull(
|
||||||
|
|
@ -24,11 +24,11 @@ class MessageController extends AsyncNotifier<Message?> {
|
||||||
) ??
|
) ??
|
||||||
config.event;
|
config.event;
|
||||||
|
|
||||||
if (!ref.mounted) return null;
|
final decrypted = (event.decrypted ?? event.content);
|
||||||
|
|
||||||
final content = (event.decrypted ?? event.content);
|
|
||||||
final type = (config.event.decryptedType ?? config.event.type);
|
final type = (config.event.decryptedType ?? config.event.type);
|
||||||
final newContent = content["m.new_content"] as Map?;
|
final content = decrypted["m.new_content"] == null
|
||||||
|
? decrypted
|
||||||
|
: IMap(decrypted["m.new_content"]);
|
||||||
|
|
||||||
final homeserver = ref
|
final homeserver = ref
|
||||||
.read(ClientStateController.provider)
|
.read(ClientStateController.provider)
|
||||||
|
|
@ -39,24 +39,19 @@ class MessageController extends AsyncNotifier<Message?> {
|
||||||
|
|
||||||
final metadata = {
|
final metadata = {
|
||||||
"body": config.event.redactedBy == null
|
"body": config.event.redactedBy == null
|
||||||
? (newContent?["body"] ?? content["body"] ?? "")
|
? (content["body"] ?? "")
|
||||||
: "Deleted Message",
|
: "Deleted Message",
|
||||||
"flashing": false,
|
"flashing": false,
|
||||||
"timelineId": event.timelineRowId,
|
"timelineId": event.timelineRowId,
|
||||||
"big": event.localContent?.bigEmoji == true,
|
"big": event.localContent?.bigEmoji == true,
|
||||||
"eventType": type,
|
"eventType": type,
|
||||||
"pmp": event.content["com.beeper.per_message_profile"],
|
"pmp": content["com.beeper.per_message_profile"],
|
||||||
"error": event.sendError,
|
"error": event.sendError,
|
||||||
"format": content["format"],
|
"format": content["format"] ?? content["format"],
|
||||||
"editSource":
|
"editSource": event.localContent?.editSource ?? content["body"],
|
||||||
event.localContent?.editSource ??
|
|
||||||
newContent?["body"] ??
|
|
||||||
content["body"],
|
|
||||||
"txnId": config.event.transactionId,
|
"txnId": config.event.transactionId,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!ref.mounted) return null;
|
|
||||||
|
|
||||||
final editedAt = event.relationType == "m.replace"
|
final editedAt = event.relationType == "m.replace"
|
||||||
? event.timestamp
|
? event.timestamp
|
||||||
: null;
|
: null;
|
||||||
|
|
@ -67,12 +62,6 @@ class MessageController extends AsyncNotifier<Message?> {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Use server-generated preview if enabled
|
|
||||||
|
|
||||||
// final match = Uri.tryParse(
|
|
||||||
// RegExp(regexLink, caseSensitive: false).firstMatch(body)?.group(0) ?? "",
|
|
||||||
// );
|
|
||||||
|
|
||||||
final replyId =
|
final replyId =
|
||||||
config.event.content["m.relates_to"]?["m.in_reply_to"]?["event_id"];
|
config.event.content["m.relates_to"]?["m.in_reply_to"]?["event_id"];
|
||||||
|
|
||||||
|
|
@ -81,12 +70,7 @@ class MessageController extends AsyncNotifier<Message?> {
|
||||||
metadata: metadata,
|
metadata: metadata,
|
||||||
id: config.event.eventId,
|
id: config.event.eventId,
|
||||||
authorId: event.authorId,
|
authorId: event.authorId,
|
||||||
text:
|
text: content["formatted_body"] ?? content["body"] ?? "",
|
||||||
newContent?["formatted_body"] ??
|
|
||||||
newContent?["body"] ??
|
|
||||||
content["formatted_body"] ??
|
|
||||||
content["body"] ??
|
|
||||||
"",
|
|
||||||
replyToMessageId: replyId,
|
replyToMessageId: replyId,
|
||||||
deliveredAt: config.event.timestamp,
|
deliveredAt: config.event.timestamp,
|
||||||
editedAt: editedAt,
|
editedAt: editedAt,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue