feat: Enhance packet sending logic to handle connection issues and implement swipe-to-reply functionality in chat UI
This commit is contained in:
@@ -267,14 +267,24 @@ class Protocol(
|
||||
|
||||
/**
|
||||
* Send packet to server
|
||||
* Packets are queued if handshake is not complete
|
||||
* Packets are queued if handshake is not complete or if connection is down
|
||||
* (как в Архиве - сохраняем пакеты при любых проблемах с соединением)
|
||||
*/
|
||||
fun sendPacket(packet: Packet) {
|
||||
if (!handshakeComplete && packet !is PacketHandshake) {
|
||||
log("📦 Queueing packet: ${packet.getPacketId()}")
|
||||
// Проверяем состояние соединения
|
||||
val socket = webSocket
|
||||
val isConnected = _state.value == ProtocolState.AUTHENTICATED
|
||||
|
||||
// Добавляем в очередь если:
|
||||
// 1. Handshake не завершён (кроме самого пакета handshake)
|
||||
// 2. WebSocket не подключен или null
|
||||
// 3. Не authenticated
|
||||
if ((!handshakeComplete && packet !is PacketHandshake) || socket == null || !isConnected) {
|
||||
log("📦 Queueing packet: ${packet.getPacketId()} (handshake=$handshakeComplete, socket=${socket != null}, state=${_state.value})")
|
||||
packetQueue.add(packet)
|
||||
return
|
||||
}
|
||||
|
||||
sendPacketDirect(packet)
|
||||
}
|
||||
|
||||
@@ -290,7 +300,9 @@ class Protocol(
|
||||
|
||||
val socket = webSocket
|
||||
if (socket == null) {
|
||||
log("❌ WebSocket is null, cannot send packet ${packet.getPacketId()}")
|
||||
log("❌ WebSocket is null, re-queueing packet ${packet.getPacketId()}")
|
||||
// Как в Архиве - возвращаем пакет в очередь при ошибке
|
||||
packetQueue.add(packet)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -303,6 +315,9 @@ class Protocol(
|
||||
} catch (e: Exception) {
|
||||
log("❌ Exception sending packet ${packet.getPacketId()}: ${e.message}")
|
||||
e.printStackTrace()
|
||||
// Как в Архиве - возвращаем пакет в очередь при ошибке отправки
|
||||
log("📦 Re-queueing packet ${packet.getPacketId()} due to send error")
|
||||
packetQueue.add(packet)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user