receiveRoomMessages function

Future<void> receiveRoomMessages(
  1. ReceiveRoomMessagesOptions options
)

Retrieves messages from a specified room using a socket connection.

The ReceiveRoomMessagesOptions contains the following keys:

  • socket: The socket connection to communicate with the server.
  • roomName: The name of the room for which messages are to be retrieved.
  • updateMessages: Callback to update the message list with retrieved messages.

Example usage:

final options = ReceiveRoomMessagesOptions(
  socket: socket,
  roomName: 'Room1',
  updateMessages: (messages) => print(messages),
);
await receiveRoomMessages(options);

Implementation

Future<void> receiveRoomMessages(ReceiveRoomMessagesOptions options) async {
  try {
    // Request messages from the server
    options.socket!.emitWithAck(
      "getMessage",
      {"roomName": options.roomName},
      ack: (responseData) async {
        if (responseData != null && responseData["messages_"] is List) {
          // Ensure messages_ is a list of Message objects

          List<Message>? messages;

          messages = (responseData["messages_"] as List<dynamic>)
              .map((item) => Message.fromMap(item as Map<String, dynamic>))
              .toList();

          options.updateMessages(messages);
        } else {
          if (kDebugMode) {
            print("Error: Invalid message format received.");
          }
        }
      },
    );
  } catch (error) {
    // Handle errors if any
    if (kDebugMode) {
      print("Error receiving messages: $error");
    }
  }
}