forked from Nexus/nexus
Allow sending reactions
(but not redacting them yet)
This commit is contained in:
parent
6b8eef3f17
commit
1dcf3018a2
6 changed files with 129 additions and 60 deletions
|
|
@ -28,6 +28,7 @@ import "package:nexus/models/profile.dart";
|
|||
import "package:nexus/models/requests/paginate_request.dart";
|
||||
import "package:nexus/models/requests/redact_event_request.dart";
|
||||
import "package:nexus/models/requests/report_request.dart";
|
||||
import "package:nexus/models/requests/send_event_request.dart";
|
||||
import "package:nexus/models/requests/send_message_request.dart";
|
||||
import "package:nexus/models/requests/set_membership_request.dart";
|
||||
import "package:nexus/models/room.dart";
|
||||
|
|
@ -80,9 +81,13 @@ class ClientController extends AsyncNotifier<int> {
|
|||
case "send_complete":
|
||||
final event = Event.fromJson(decodedMuksEvent["event"]);
|
||||
|
||||
ref
|
||||
.watch(NewEventsController.provider(event.roomId).notifier)
|
||||
.add(IList([event]));
|
||||
if (event.type == "m.room.message") {
|
||||
ref
|
||||
.watch(
|
||||
NewEventsController.provider(event.roomId).notifier,
|
||||
)
|
||||
.add(IList([event]));
|
||||
}
|
||||
break;
|
||||
case "sync_complete":
|
||||
final syncData = SyncData.fromJson(decodedMuksEvent);
|
||||
|
|
@ -164,6 +169,9 @@ class ClientController extends AsyncNotifier<int> {
|
|||
Future<Event> sendMessage(SendMessageRequest request) async =>
|
||||
Event.fromJson(await _sendCommand("send_message", request.toJson()));
|
||||
|
||||
Future<Event> sendEvent(SendEventRequest request) async =>
|
||||
Event.fromJson(await _sendCommand("send_event", request.toJson()));
|
||||
|
||||
Future<String?> verify(String recoveryKey) async {
|
||||
try {
|
||||
await _sendCommand("verify", {"recovery_key": recoveryKey});
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import "package:nexus/models/requests/get_room_state_request.dart";
|
|||
import "package:nexus/models/requests/paginate_request.dart";
|
||||
import "package:nexus/models/requests/redact_event_request.dart";
|
||||
import "package:nexus/models/relation_type.dart";
|
||||
import "package:nexus/models/requests/send_event_request.dart";
|
||||
import "package:nexus/models/requests/send_message_request.dart";
|
||||
import "package:nexus/models/room.dart";
|
||||
|
||||
|
|
@ -328,6 +329,25 @@ class RoomChatController extends AsyncNotifier<InMemoryChatController> {
|
|||
return await controller.scrollToMessage(message.id);
|
||||
}
|
||||
|
||||
Future<void> sendReaction(String reaction, Message message) async {
|
||||
final client = ref.watch(ClientController.provider.notifier);
|
||||
|
||||
await client.sendEvent(
|
||||
SendEventRequest(
|
||||
roomId: roomId,
|
||||
type: "m.reaction",
|
||||
content: {
|
||||
"m.relates_to": {
|
||||
"event_id": message.id,
|
||||
"rel_type": "m.annotation",
|
||||
"key": reaction,
|
||||
},
|
||||
},
|
||||
disableEncryption: true,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
static final provider = AsyncNotifierProvider.family
|
||||
.autoDispose<RoomChatController, InMemoryChatController, String>(
|
||||
RoomChatController.new,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue