sendPrivateMessage method

Future<void> sendPrivateMessage(
  1. String? identity,
  2. String? name,
  3. String userMessage
)

Implementation

Future<void> sendPrivateMessage(
    String? identity, String? name, String userMessage) async {
  if (!Utils.isMessageSizeValid(userMessage)) {
    sendMessageToUI("Message is too long! Please shorten it and try again.");
    return;
  }
  // Create a message
  final message = SendMessageModel(
    action: MeetingActions.sendPrivateMessage,
    id: const Uuid().v4(), // Generate a unique ID
    message: userMessage,
    timestamp: DateTime.now().millisecondsSinceEpoch, // Current timestamp
  );

  if (identity != null) {
    List<String> participantList = [identity];
    try {
      // Publish the data to the LiveKit room
      await room.localParticipant?.publishData(
        utf8.encode(jsonEncode(message)), // Convert to bytes,
        reliable: true,
        destinationIdentities: participantList,
      );

      // Update the message list
      addPrivateMessage(
        RemoteActivityData(
            identity: null,
            id: message.id,
            message: message.message,
            timestamp: message.timestamp,
            action: MeetingActions.sendPrivateMessage,
            // Assuming no action is provided
            isSender: true,
            // isSender
            userIdentity: identity,
            userName: name),
      );
    } catch (e) {
      if (kDebugMode) {
        print('Error sending private action: $e');
      }
    }
  }
}