forked from Henry-Hiles/nexus
Add delete button
This commit is contained in:
parent
40461aabbf
commit
39a3622af5
2 changed files with 98 additions and 26 deletions
|
|
@ -18,17 +18,27 @@ class RoomChatController extends AsyncNotifier<ChatController> {
|
|||
ref.onDispose(
|
||||
room.client.onTimelineEvent.stream.listen((event) async {
|
||||
if (event.roomId != room.id) return;
|
||||
final message = await event.toMessage();
|
||||
if (message != null) {
|
||||
if (event.relationshipType == RelationshipTypes.edit) {
|
||||
final controller = await future;
|
||||
final oldMessage = controller.messages.firstWhereOrNull(
|
||||
(element) => element.id == event.relationshipEventId,
|
||||
);
|
||||
if (oldMessage == null) return;
|
||||
await updateMessage(oldMessage, message);
|
||||
} else {
|
||||
await insertMessage(message);
|
||||
|
||||
if (event.type == EventTypes.Redaction) {
|
||||
final controller = await future;
|
||||
await controller.removeMessage(
|
||||
controller.messages.firstWhere(
|
||||
(message) => message.id == event.redacts,
|
||||
),
|
||||
);
|
||||
} else {
|
||||
final message = await event.toMessage();
|
||||
if (message != null) {
|
||||
if (event.relationshipType == RelationshipTypes.edit) {
|
||||
final controller = await future;
|
||||
final oldMessage = controller.messages.firstWhereOrNull(
|
||||
(element) => element.id == event.relationshipEventId,
|
||||
);
|
||||
if (oldMessage == null) return;
|
||||
await updateMessage(oldMessage, message);
|
||||
} else {
|
||||
await insertMessage(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}).cancel,
|
||||
|
|
@ -53,6 +63,12 @@ class RoomChatController extends AsyncNotifier<ChatController> {
|
|||
: controller.updateMessage(oldMessage, message);
|
||||
}
|
||||
|
||||
Future<void> deleteMessage(Message message, {String? reason}) async {
|
||||
final controller = await future;
|
||||
await controller.removeMessage(message);
|
||||
await room.redactEvent(message.id, reason: reason);
|
||||
}
|
||||
|
||||
Future<void> loadOlder() async {
|
||||
final controller = await future;
|
||||
final response = await ref
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue