sendMediaMessage static method
Implementation
static Future<Response> sendMediaMessage(
dynamic data, MessageType type) async {
final pref = await SharedPreferences.getInstance();
var encoded = {};
//Validation of the Message Type that is going to be sent
var messageType = type.name;
switch (type) {
case MessageType.media:
var url = data as String;
var parseName = url.split("/");
final mimeType = lookupMimeType(url);
//Validation of mimetype to know if the current media is a video or an image
if (mimeType!.contains("jpg") ||
mimeType.contains("jpeg") ||
mimeType.contains("png") ||
mimeType.contains("tiff") ||
mimeType.contains("svg")) {
messageType = "image";
} else {
messageType = "video";
}
//Message request model is needed to ensure that the request is send correctly and recollects all the data needed
MessageRequest request = MessageRequest(
type: messageType,
data: MessageRequestData(
mediaUrl: url,
mimeType: mimeType,
fileName: parseName[parseName.length - 1]),
metadata: MessageRequestMetadata(idTemp: const Uuid().v4()),
createdAt: DateTime.now().toUtc().millisecondsSinceEpoch,
senderId: pref.getString(IdentifierType.userId.name),
sessionUuid: pref.getString(IdentifierType.sessionId.name),
recipinetId: "HOOK",
integrationId: pref.getString(IdentifierType.integrationId.name));
encoded = request.toJson();
break;
case MessageType.location:
//In case of location it gets the coordinates that are going to be sent
var position = data["data"][0] as Position;
MessageRequest request = MessageRequest(
type: type.name,
data: MessageRequestData(
lat: position.latitude,
long: position.longitude,
message: "Se envió data de localización"),
metadata: MessageRequestMetadata(idTemp: const Uuid().v4()),
createdAt: DateTime.now().toUtc().millisecondsSinceEpoch,
senderId: pref.getString(IdentifierType.userId.name),
sessionUuid: pref.getString(IdentifierType.sessionId.name),
recipinetId: "HOOK",
integrationId: pref.getString(IdentifierType.integrationId.name));
encoded = request.toJson();
break;
//In case of file it gets the files that are going to be sent as an URL
case MessageType.file:
var url = data as String;
var parseName = url.split("/");
final mimeType = lookupMimeType(url);
MessageRequest request = MessageRequest(
type: type.name,
data: MessageRequestData(
mediaUrl: url,
mimeType: mimeType,
fileName: parseName[parseName.length - 1]),
metadata: MessageRequestMetadata(idTemp: const Uuid().v4()),
createdAt: DateTime.now().toUtc().millisecondsSinceEpoch,
senderId: pref.getString(IdentifierType.userId.name),
sessionUuid: pref.getString(IdentifierType.sessionId.name),
recipinetId: "HOOK",
integrationId: pref.getString(IdentifierType.integrationId.name));
encoded = request.toJson();
break;
//No avalaible here
case MessageType.text:
break;
//No avalaible here
case MessageType.button:
break;
//No avalaible here
case MessageType.carousel:
break;
case MessageType.image:
break;
case MessageType.video:
break;
}
//Waiting for response while is sent as an Http Post
var response = await ApiManager.post(
'${SocketUrls.baseBrokerEndpoint}${SocketUrls.sendMessageEndpoint}',
body: jsonEncode(encoded));
return response;
}