decodeAvatarPayload function
- Uint8List bytes
Decodes an avatar file that may contain an embedded payload.
Returns the JPEG bytes, version, and decoded payload map. If no payload is found (plain avatar without embedded data), returns null for both.
Implementation
({Uint8List jpeg, int? version, Map<String, dynamic>? data})
decodeAvatarPayload(Uint8List bytes) {
final index = _findMagic(bytes);
if (index == -1) {
return (jpeg: bytes, version: null, data: null);
}
final jpeg = Uint8List.sublistView(bytes, 0, index);
final version = bytes[index + _magic.length];
final payload = Uint8List.sublistView(bytes, index + _headerSize);
try {
final data = deserialize(payload);
return (
jpeg: jpeg,
version: version,
data: Map<String, dynamic>.from(data as Map),
);
} catch (_) {
return (jpeg: jpeg, version: null, data: null);
}
}