sendAttachment method

Future<void> sendAttachment({
  1. required int conversationID,
})

Implementation

Future<void> sendAttachment({
  required int conversationID,
}) async {
  if (file == null) {
    errorSnackBar(message: "Please Select File");
  } else {
    try {
      atachmentLoading(true);

      String url = "$baseUrl/conversations/$conversationID/messages";
      var request = http.MultipartRequest('POST', Uri.parse(url));
      request.headers.addAll({
        "Authorization": "Bearer ${LocalStorage.getToken().toString()}",
      });

      request.fields['sender_id'] = LocalStorage.getUserID().toString();
      request.fields['message'] = '';
      if (file != null) {
        request.files.add(await http.MultipartFile.fromPath(
          'file',
          file!.path,
        ));
      }
      print('Request URL: $url');
      print('Request Headers: ${request.headers}');
      print('Request Fields: ${request.fields}');
      if (file != null) {
        print('File: ${file!.path}');
      }
      var response = await request.send();

      print('Response Status Code: ${response.statusCode}');
      var responseData = await http.Response.fromStream(response);
      print('Response Body: ${responseData.body}');

      if (response.statusCode == 200) {
        log("RESPONSE DATA :: ${responseData.body}");
        var decodeResponse = json.decode(responseData.body);
        SendPushNotification.sendNotification(
          deviceTokens: decodeResponse['token'],
          title: decodeResponse['data']['sender_name'],
          message: messageController.text,
          image: decodeResponse['data']['file'],
        );
        messageController.clear();
        getChat(conversationID: conversationID);
        chatList.refresh();
        successSnackBar(message: "Send Successfully");
        messageController.clear();
      } else {
        log("Failed to load conversations, status code: ${response.statusCode}");
      }
    } catch (e) {
      log("EXCEPTION OF CONVERSATION $e");
    } finally {
      atachmentLoading(false);
    }
  }
}