binary property

Uint8List get binary

Implementation

Uint8List get binary {
  if (payload.lengthInBytes > 2000) return Uint8List(0);
  Uint8List b = Uint8List(2048);
  var bdata = new ByteData.view(b.buffer);
  bdata.setUint8(2, flags[0]);
  bdata.setUint8(3, flags[1]);
  bdata.setUint64(4, authorHint);
  bdata.setUint64(12, bl);
  bdata.setUint64(20, pp);
  bdata.setUint16(28, garyTimestamp);
  bdata.setUint16(30, payload.lengthInBytes);
  bdata.setUint64(32, preceivedTimestamp);

  var wi = 40;
  payload.forEach((element) {
    bdata.setUint8(wi++, element);
  });
  //encrypted key for this thread
  //print(key);
  bdata.setUint16(wi, key.lengthInBytes);
  wi += 2;
  if (key.isNotEmpty) {
    key.forEach((element) {
      bdata.setUint8(wi++, element);
    });
  }
  //print('hint bin idx ' + wi.toString());
  bdata.setUint64(wi, hint);
  wi += 8;

  if (authorAvatar.isEmpty) {
    wi++;
  } else {
    List<int> aa = utf8.encode(authorAvatar);

    //var aa = authorAvatar.runes;
    bdata.setUint8(wi++, aa.length);
    aa.forEach((_r) {
      bdata.setUint8(wi++, _r);
    });
  }

  if (authorNick.isEmpty) {
    wi++;
  } else {
    List<int> aa = utf8.encode(authorNick);
    //var aa = authorNick.runes;
    bdata.setUint8(wi++, aa.length);
    aa.forEach((_r) {
      bdata.setUint8(wi++, _r);
    });
  }

  if (attachmentLink.isEmpty) {
    wi++;
  } else {
    /*List<int> aa = utf8.encode(attachmentLink);
    bdata.setUint8(wi++, aa.length);
    aa.forEach((_r) {
      bdata.setUint8(wi++, _r);
    });*/
    bdata.setUint8(wi++, attachmentLink.length);
    attachmentLink.forEach((_r) {
      bdata.setUint8(wi++, _r);
    });
  }
  //dont push 0
  /*print(wi);
  print('ptim ' + preceivedTimestamp.toString());
  bdata.setUint64(wi, preceivedTimestamp);
  var tot = bdata.getUint64(wi);
  if (preceivedTimestamp != tot) {
    print('PANI perc timestamp!!');
  }
  wi += 8;*/

  /*bdata.setUint16(0, wi);
  wi += 2;*/
  bdata.setUint16(wi, likes);
  wi += 2;
  bdata.setUint16(wi, shares);
  wi += 2;
  bdata.setUint16(wi, views);
  wi += 2;
  bdata.setUint16(wi, replies);
  wi += 2;
  bdata.setUint16(0, wi);
  return b.sublist(0, wi);
}