publish method

Future publish(
  1. String key,
  2. String channel,
  3. Map<String, dynamic> message,
  4. int ttl,
)

Implementation

Future<dynamic> publish(
  String key,
  String channel,
  Map<String, dynamic> message,
  int ttl
) async {
  // if (message["type"] != "RECEIPTS")
  print("publish message");
  // message["id"] = generateMd5(key);
  // divide image to chunks
  if (message["type"] == MediaType.audio ||
      message["type"] == MediaType.video ||
      message["type"] == MediaType.image ||
      message["type"] == MediaType.file) {
    List<Uint8List> listofChunks =
        byteToChunks(base64.decode(message["content"]));

    Map<String, dynamic> header = {
      "headerId": generateMd5(key),
      "totalPacket": listofChunks.length,
      "size": base64.decode(message["content"]).length,
      "topic": message["to"],
    };
    message.remove("content");
    message.addAll(header);
    print("this is header of file $message");
    publishMessage(key, channel, message,ttl);

    for (int i = 1; i <= listofChunks.length; i++) {
      await Future.delayed(Duration(microseconds: 0), () {
        // Do something
        print("publish message in loop $i");
        Map<String, dynamic> filePacket = {
          "messageId": message["id"],
          "packetNo": i,
          "topic": message["to"],
          "content": base64.encode(listofChunks[i - 1]),
        };
        message.remove("totalPacket");
        message.remove("size");
        message.addAll(filePacket);
        print("this is file packet$message");

        publishMessage(key, channel, message,ttl);
      });
    }
  } else {
    publishMessage(key, channel, message,ttl);
  }

  // print("this is publised message $message");
  // MqttQos qos = MqttQos.atLeastOnce;
  // bool retain = false;
  // // var options = new Map<String, String>();
  // // if (!me) options["me"] = "0";
  // // if (ttl > 0) options["ttl"] = ttl.toString();
  // var topic = _formatChannel(key, channel, null);
  // // var chatid = generateMd5(key);
  // // print("chat id: $chatid");
  // print("This is before publish");
  // final builder = MqttClientPayloadBuilder();
  // builder.addString(jsonEncode(message));
  // return _mqtt.publishMessage(topic, qos, builder.payload, retain: retain);
}