fix: process SeStrings correctly

This commit is contained in:
Anna
2022-02-16 01:52:13 -05:00
parent 51240bddbc
commit 2a68c356d4
2 changed files with 21 additions and 5 deletions
+18 -2
View File
@@ -52,8 +52,8 @@ internal class Store : IDisposable {
doc["Code"].AsDocument,
doc["Sender"].AsArray,
doc["Content"].AsArray,
doc["SenderSource"].AsDocument,
doc["ContentSource"].AsDocument,
doc["SenderSource"],
doc["ContentSource"],
doc["SortCode"].AsDocument
));
BsonMapper.Global.RegisterType<Payload?>(
@@ -88,6 +88,22 @@ internal class Store : IDisposable {
return Payload.Decode(new BinaryReader(new MemoryStream(bson.AsBinary)));
});
BsonMapper.Global.RegisterType<SeString?>(
seString => seString == null
? null
: new BsonArray(seString.Payloads.Select(payload => new BsonValue(payload.Encode()))),
bson => {
if (bson.IsNull) {
return null;
}
var array = bson.IsArray ? bson.AsArray : bson["Payloads"].AsArray;
var payloads = array
.Select(payload => Payload.Decode(new BinaryReader(new MemoryStream(payload.AsBinary))))
.ToList();
return new SeString(payloads);
}
);
BsonMapper.Global.RegisterType(
type => (int) type,
bson => (ChatType) bson.AsInt32