fix: socket related crash

Signed-off-by: Infi <infi@infi.sh>
This commit is contained in:
Infi 2025-03-22 22:47:19 +01:00
parent f4e6e23d83
commit d0ccb4b568
1 changed files with 6 additions and 14 deletions

View File

@ -49,7 +49,6 @@ import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.cbor.Cbor
import kotlinx.serialization.json.Json
import java.lang.reflect.InvocationTargetException
import java.net.SocketException
import chat.revolt.api.schemas.Channel as ChannelSchema
@ -186,26 +185,19 @@ object RevoltAPI {
unreads.sync()
}
@OptIn(ExperimentalCoroutinesApi::class)
suspend fun connectWS() {
socketCoroutine = CoroutineScope(Dispatchers.IO).launch {
try {
withContext(realtimeContext) {
try {
RealtimeSocket.connect(sessionToken)
} catch (e: SocketException) {
Log.d("RevoltAPI", "Socket closed, probably no big deal /// " + e.message)
RealtimeSocket.updateDisconnectionState(DisconnectionState.Disconnected)
} catch (e: Exception) {
try {
if (e is SocketException || (e is InvocationTargetException && e.targetException is SocketException)) {
Log.d(
"RevoltAPI",
"Socket closed, probably no big deal /// " + e.message
)
} else {
Log.e("RevoltAPI", "WebSocket error", e)
}
RealtimeSocket.updateDisconnectionState(DisconnectionState.Disconnected)
} catch (e: Exception) {
Sentry.captureMessage("Error in socket error handling: $e")
}
Log.e("RevoltAPI", "WebSocket error", e)
RealtimeSocket.updateDisconnectionState(DisconnectionState.Disconnected)
}
}
} catch (e: Exception) {