From 1bab4d398eb4c8197571eef0ce58bd23acb23414 Mon Sep 17 00:00:00 2001 From: zvonimir Date: Wed, 8 Oct 2025 16:14:12 +0200 Subject: [PATCH] fix: Session not authorized showing when it shouldn't --- .../platformplayer/activities/SyncPairActivity.kt | 12 ++++++++++++ .../futo/platformplayer/sync/internal/SyncService.kt | 6 +++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/futo/platformplayer/activities/SyncPairActivity.kt b/app/src/main/java/com/futo/platformplayer/activities/SyncPairActivity.kt index e0097337..fe4a1cf0 100644 --- a/app/src/main/java/com/futo/platformplayer/activities/SyncPairActivity.kt +++ b/app/src/main/java/com/futo/platformplayer/activities/SyncPairActivity.kt @@ -110,7 +110,19 @@ class SyncPairActivity : AppCompatActivity() { lifecycleScope.launch(Dispatchers.IO) { try { + var wasCompleted = false + StateSync.instance.syncService?.connect(deviceInfo, true) { complete, message -> + if (wasCompleted) { + Logger.i(TAG, "onStatusUpdate(complete = ${complete}, message = '${message} ignored because wasCompleted')") + return@connect + } + + if (complete == true) { + wasCompleted = true + } + + Logger.i(TAG, "onStatusUpdate(complete = ${complete}, message = '${message}')") lifecycleScope.launch(Dispatchers.Main) { if (complete != null) { if (complete) { diff --git a/app/src/main/java/com/futo/platformplayer/sync/internal/SyncService.kt b/app/src/main/java/com/futo/platformplayer/sync/internal/SyncService.kt index 05c94a57..2fd6a09c 100644 --- a/app/src/main/java/com/futo/platformplayer/sync/internal/SyncService.kt +++ b/app/src/main/java/com/futo/platformplayer/sync/internal/SyncService.kt @@ -758,7 +758,7 @@ class SyncService( fun removeAuthorizedDevice(publicKey: String) = database.removeAuthorizedDevice(publicKey) - suspend fun connect(deviceInfo: SyncDeviceInfo, alsoTryRelayed: Boolean = false, timeout_ms: Int = 5_000, onStatusUpdate: ((complete: Boolean?, message: String) -> Unit)? = null) { + suspend fun connect(deviceInfo: SyncDeviceInfo, alsoTryRelayed: Boolean = false, timeout_ms: Int = 10_000, onStatusUpdate: ((complete: Boolean?, message: String) -> Unit)? = null) { val rs = _relaySession val startTime = System.currentTimeMillis() if (alsoTryRelayed && rs != null && settings.relayPairAllowed) { @@ -791,7 +791,7 @@ class SyncService( suspend fun connect(addresses: Array, port: Int, publicKey: String, pairingCode: String?, onStatusUpdate: ((complete: Boolean?, message: String) -> Unit)? = null, timeout_ms: Int = 10_000): SyncSocketSession { val startTime_ms = System.currentTimeMillis() - + Log.i(TAG, "Connecting directly (timeout_ms = ${timeout_ms})...") onStatusUpdate?.invoke(null, "Connecting directly...") val socket = getConnectedSocket(addresses.map { InetAddress.getByName(it) }, port, timeout_ms) ?: throw Exception("Failed to connect") onStatusUpdate?.invoke(null, "Handshaking...") @@ -805,7 +805,7 @@ class SyncService( session.startAsInitiator(publicKey, appId, pairingCode) - while (timeout_ms - (startTime_ms - System.currentTimeMillis()) > 0 && !session.isAuthorized && session.started) { + while ((System.currentTimeMillis() - startTime_ms) < timeout_ms && !session.isAuthorized) { delay(100) }