| author | Stephen Paul Weber
<singpolyma@singpolyma.net> 2025-06-24 18:03:50 UTC |
| committer | Stephen Paul Weber
<singpolyma@singpolyma.net> 2025-06-24 18:03:50 UTC |
| parent | 032752be6fa70e956f4cda3a8752b7b5f103cd6e |
| snikket/Client.hx | +3 | -3 |
| snikket/persistence/Sqlite.hx | +6 | -2 |
diff --git a/snikket/Client.hx b/snikket/Client.hx index 2284a9f..9ce8e0b 100644 --- a/snikket/Client.hx +++ b/snikket/Client.hx @@ -593,10 +593,10 @@ class Client extends EventEmitter { } persistence.getChats(accountId(), (protoChats) -> { - for (protoChat in protoChats) { - chats.push(protoChat.toChat(this, stream, persistence)); + var oneProtoChat = null; + while ((oneProtoChat = protoChats.pop()) != null) { + chats.push(oneProtoChat.toChat(this, stream, persistence)); } - persistence.getChatsUnreadDetails(accountId(), chats, (details) -> { for (detail in details) { var chat = getChat(detail.chatId); diff --git a/snikket/persistence/Sqlite.hx b/snikket/persistence/Sqlite.hx index 8165d94..28a6f1a 100644 --- a/snikket/persistence/Sqlite.hx +++ b/snikket/persistence/Sqlite.hx @@ -247,11 +247,15 @@ class Sqlite implements Persistence implements KeyValueStore { final json = Json.parse(row.caps); capsMap[Base64.encode(Bytes.ofData(row.sha1))] = new Caps(json.node, json.identities.map(i -> new Identity(i.category, i.type, i.name)), json.features); } + result.caps = null; final chats = []; - for (row in result.chats) { + var row = null; + while ((row = result.chats.pop()) != null) { final presenceMap: Map<String, Presence> = []; final presenceJson: DynamicAccess<Dynamic> = row.presenceJson; - for (resource => presence in presenceJson) { + for (resource in presenceJson.keys()) { + final presence = presenceJson.get(resource); + presenceJson.remove(resource); presenceMap[resource] = new Presence( presence.caps == null ? null : capsMap[presence.caps], presence.mucUser == null ? null : Stanza.parse(presence.mucUser)