ModeratorCapsuleItem.fromBinary constructor

ModeratorCapsuleItem.fromBinary(
  1. Uint8List data
)

Implementation

factory ModeratorCapsuleItem.fromBinary(Uint8List data) {
  var bdata = new ByteData.view(data.buffer);
  int bleng = bdata.getUint16(0);
  //2,3 flags
  //int tid = bdata.getUint16(0);
  int ah = bdata.getUint64(4);
  int bl = bdata.getUint64(12);
  int pp = bdata.getUint64(20);
  int gt = bdata.getUint16(28);
  int ple = bdata.getUint16(30);
  int timestamp = bdata.getUint64(32);
  //print('caps en tim ' + timestamp.toString());

  var wi = 40;
  //ByteData pload = bdata.buffer.asByteData(wi, wi + ple);
  Uint8List pload = data.sublist(wi, wi + ple);
  wi += ple;
  int kle = bdata.getInt16(wi);
  wi += 2;

  Uint8List kz = Uint8List(9999);

  bool kzin = false;
  if (kle > 0) {
    //key might no
    //t exist???
    kzin = true;
    int tle = wi + kle;
    kz = data.sublist(wi, tle);
    //print(tle);
    //print(data.lengthInBytes);
    //kz = bdata.buffer.asByteData(wi, tle);
    wi += kle;
  }
  int hi = bdata.getUint64(wi);
  wi += 8;
  //authornick,empty if 0
  String aav = '';
  var aal = bdata.getInt8(wi++);
  if (aal != 0) {
    //utf8.encode(navatar);
    aav = utf8.decode(data.sublist(wi, wi + aal).toList());
    wi += aal;
  }
  //author avatar, empty if 0
  String aan = '';
  var abl = bdata.getInt8(wi++);
  if (abl != 0) {
    try {
      aan = utf8.decode(data.sublist(wi, wi + abl).toList());
    } catch (e) {
      aan = '??';
    }
    wi += abl;
  }
  //attachmentLink
  Uint8List atl = Uint8List(16);
  int atl_l = 0;
  var atll = bdata.getInt8(wi++);
  if (atll != 0) {
    try {
      atl = data.sublist(wi, wi + atll);
      atl_l = atll;
    } catch (e) {}
    wi += atl_l;
  }
  int likes = 0;
  int shares = 0;
  int views = 0;
  int replies = 0;

  likes = bdata.getUint16(wi);
  wi += 2;
  shares = bdata.getUint16(wi);
  wi += 2;
  if (wi < bdata.lengthInBytes) {
    views = bdata.getUint16(wi);
    wi += 2;
  }
  if (wi < bdata.lengthInBytes) {
    replies = bdata.getUint16(wi);
    wi += 2;
  }
  return ModeratorCapsuleItem(
      data.sublist(2, 4), //flags
      ah,
      bl,
      pp,
      gt,
      ple,
      pload.buffer.asUint8List(),
      kzin ? kz.buffer.lengthInBytes : 0,
      kzin ? kz.buffer.asUint8List() : Uint8List(0),
      hi,
      aav,
      aan,
      atl.sublist(0, atl_l),
      bleng,
      timestamp,
      likes,
      shares,
      views,
      replies);
}