ModeratorCapsuleItem.fromBinary constructor
ModeratorCapsuleItem.fromBinary(
- 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);
}