| author | Stephen Paul Weber
<singpolyma@singpolyma.net> 2024-09-24 04:05:31 UTC |
| committer | Stephen Paul Weber
<singpolyma@singpolyma.net> 2024-09-24 04:05:31 UTC |
| parent | 602f30770bc34865b0ff89890f5b81a6ba9b4b60 |
| snikket/streams/XmppJsStream.hx | +9 | -2 |
diff --git a/snikket/streams/XmppJsStream.hx b/snikket/streams/XmppJsStream.hx index e1f08c5..3bea39c 100644 --- a/snikket/streams/XmppJsStream.hx +++ b/snikket/streams/XmppJsStream.hx @@ -190,6 +190,12 @@ class XmppJsStream extends GenericStream { if (initialSM != null) { final parsedSM = haxe.Json.parse(Bytes.ofData(initialSM).toString()); + final parsedPending: Null<Array<String>> = parsedSM.pending; + if (parsedPending != null) { + for (item in parsedPending) { + pending.push(XmppJsLtx.parse(item)); + } + } xmpp.streamManagement.id = parsedSM.id; xmpp.streamManagement.outbound = parsedSM.outbound; xmpp.streamManagement.inbound = parsedSM.inbound; @@ -297,12 +303,11 @@ class XmppJsStream extends GenericStream { public function sendStanza(stanza:Stanza) { if (client == null || client.status != "online") { - // TODO: these aren't part of the sm state so they can get lost pending.push(convertFromStanza(stanza)); } else { client.send(convertFromStanza(stanza)); - triggerSMupdate(); } + triggerSMupdate(); } public function newId():String { @@ -319,6 +324,7 @@ class XmppJsStream extends GenericStream { outbound: client.streamManagement.outbound, inbound: client.streamManagement.inbound, outbound_q: (client.streamManagement.outbound_q ?? []).map((stanza) -> stanza.toString()), + pending: pending.map((stanza) -> stanza.toString()) })).getData() } ); @@ -359,6 +365,7 @@ class XmppJsStream extends GenericStream { while ((item = pending.shift()) != null) { client.send(item); } + triggerSMupdate(); trigger("status/online", { jid: jid.toString(), resumed: resumed }); }