sendMessage function
Implementation
Future<void> sendMessage({required Map<String, dynamic> parameters}) async {
final String member = parameters['member'] ?? '';
final String islevel = parameters['islevel'] ?? '1';
final ShowAlert? showAlert = parameters['showAlert'];
final CoHostResponsibility coHostResponsibility =
parameters['coHostResponsibility'] ?? [];
final String coHost = parameters['coHost'] ?? '';
final String chatSetting = parameters['chatSetting'] ?? '';
final String? message = parameters['message'] ?? '';
final String roomName = parameters['roomName'] ?? '';
final int messagesLength = parameters['messagesLength'] ?? 0;
final List receivers = parameters['receivers'] ?? [];
final bool? group = parameters['group'] ?? false;
final String? sender = parameters['sender'] ?? '';
final io.Socket socket = parameters['socket'];
bool chatValue = false;
// Check message count limit based on the room type
if ((messagesLength > 100 && roomName.startsWith('d')) ||
(messagesLength > 500 && roomName.startsWith('s')) ||
(messagesLength > 100000 && roomName.startsWith('p'))) {
if (showAlert != null) {
showAlert(
message: 'You have reached the maximum number of messages allowed.',
type: 'danger',
duration: 3000,
);
}
return;
}
// Validate message, sender, and receivers
if (message == null || (member.isEmpty && sender == null)) {
if (showAlert != null) {
showAlert(
message: 'Message is not valid.',
type: 'danger',
duration: 3000,
);
}
return;
}
// Create the message object
final messageObject = {
'sender': sender != null && sender.isNotEmpty ? sender : member,
'receivers': receivers,
'message': message,
'timestamp': DateFormat('HH:mm:ss').format(DateTime.now()),
'group': group != null && group == true,
};
try {
// Check co-host responsibility for chat
chatValue = coHostResponsibility
.firstWhere((item) => item['name'] == 'chat')['value'];
} catch (error) {}
if (islevel == '2' || (coHost == member && chatValue == true)) {
// Allow sending message
} else {
// Check if user is allowed to send a message in the event room
if (chatSetting != 'allow') {
if (showAlert != null) {
showAlert(
message: 'You are not allowed to send a message in this event room',
type: 'danger',
duration: 3000,
);
}
return;
}
}
// Send the message to the server
socket.emit('sendMessage', {
'messageObject': messageObject,
'roomName': roomName,
});
}