Fix crash

This commit is contained in:
Ali
2022-08-15 02:25:51 +03:00
parent 88b1dab7ff
commit fb0824ed8b
3 changed files with 114 additions and 84 deletions

View File

@@ -562,9 +562,7 @@ public final class CachedChannelData: CachedPeerData {
self.sendAsPeerId = decoder.decodeOptionalInt64ForKey("sendAsPeerId").flatMap(PeerId.init)
if let allowedReactions = decoder.decodeArray([MessageReaction.Reaction].self, forKey: "allowedReactionList") {
self.allowedReactions = allowedReactions
} else if let allowedReactions = decoder.decodeOptionalStringArrayForKey("allowedReactions") {
if let allowedReactions = decoder.decodeOptionalStringArrayForKey("allowedReactions") {
self.allowedReactions = allowedReactions.map(MessageReaction.Reaction.builtin)
} else {
self.allowedReactions = nil
@@ -715,9 +713,16 @@ public final class CachedChannelData: CachedPeerData {
}
if let allowedReactions = self.allowedReactions {
encoder.encodeArray(allowedReactions, forKey: "allowedReactionList")
encoder.encodeStringArray(allowedReactions.compactMap { item -> String? in
switch item {
case let .builtin(value):
return value
case .custom:
return nil
}
}, forKey: "allowedReactions")
} else {
encoder.encodeNil(forKey: "allowedReactionList")
encoder.encodeNil(forKey: "allowedReactions")
}
}

View File

@@ -180,9 +180,7 @@ public final class CachedGroupData: CachedPeerData {
self.inviteRequestsPending = decoder.decodeOptionalInt32ForKey("irp")
if let allowedReactions = decoder.decodeArray([MessageReaction.Reaction].self, forKey: "allowedReactionList") {
self.allowedReactions = allowedReactions
} else if let allowedReactions = decoder.decodeOptionalStringArrayForKey("allowedReactions") {
if let allowedReactions = decoder.decodeOptionalStringArrayForKey("allowedReactions") {
self.allowedReactions = allowedReactions.map(MessageReaction.Reaction.builtin)
} else {
self.allowedReactions = nil
@@ -279,9 +277,16 @@ public final class CachedGroupData: CachedPeerData {
}
if let allowedReactions = self.allowedReactions {
encoder.encodeArray(allowedReactions, forKey: "allowedReactionList")
encoder.encodeStringArray(allowedReactions.compactMap { item -> String? in
switch item {
case let .builtin(value):
return value
case .custom:
return nil
}
}, forKey: "allowedReactions")
} else {
encoder.encodeNil(forKey: "allowedReactionList")
encoder.encodeNil(forKey: "allowedReactions")
}
}