From 803fda9abe5a5b3bf6f8f65099fabf8efd8174f8 Mon Sep 17 00:00:00 2001 From: k1ngsterr1 Date: Wed, 1 Apr 2026 18:28:15 +0500 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D0=BB=D0=B8=D0=B7=201.4.2:=20?= =?UTF-8?q?=D0=B7=D0=B0=D1=89=D0=B8=D1=82=D0=B0=20=D0=BE=D1=82=20=D0=B7?= =?UTF-8?q?=D0=B2=D0=BE=D0=BD=D0=BA=D0=BE=D0=B2=20=D1=81=20=D0=B4=D1=80?= =?UTF-8?q?=D1=83=D0=B3=D0=BE=D0=B3=D0=BE=20=D1=83=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=B9=D1=81=D1=82=D0=B2=D0=B0,=20=D0=BB=D0=BE=D0=B3=20FCM=20?= =?UTF-8?q?=D1=82=D0=BE=D0=BA=D0=B5=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - CREATE_ROOM без ключей шифрования — сброс (звонок принят на другом устройстве) - dispose PeerConnection при завершении звонка (фикс зависания портов ~30с) - Сохранение FCM токена в crash_reports для rosettadev1 --- app/build.gradle.kts | 4 ++-- .../java/com/rosetta/messenger/network/CallManager.kt | 8 ++++++++ .../com/rosetta/messenger/network/ProtocolManager.kt | 9 +++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index ff8aec4..f397406 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -23,8 +23,8 @@ val gitShortSha = safeGitOutput("rev-parse", "--short", "HEAD") ?: "unknown" // ═══════════════════════════════════════════════════════════ // Rosetta versioning — bump here on each release // ═══════════════════════════════════════════════════════════ -val rosettaVersionName = "1.4.1" -val rosettaVersionCode = 43 // Increment on each release +val rosettaVersionName = "1.4.2" +val rosettaVersionCode = 44 // Increment on each release val customWebRtcAar = file("libs/libwebrtc-custom.aar") android { diff --git a/app/src/main/java/com/rosetta/messenger/network/CallManager.kt b/app/src/main/java/com/rosetta/messenger/network/CallManager.kt index 04f7561..31eda57 100644 --- a/app/src/main/java/com/rosetta/messenger/network/CallManager.kt +++ b/app/src/main/java/com/rosetta/messenger/network/CallManager.kt @@ -373,6 +373,14 @@ object CallManager { breadcrumb("SIG: CREATE_ROOM IGNORED — empty roomId!") return } + // Если ключей нет — звонок был принят на другом устройстве, + // а сервер всё равно прислал CREATE_ROOM. Сбрасываем. + if (sharedKeyBytes == null && localPrivateKey == null) { + breadcrumb("SIG: CREATE_ROOM but no session keys — call accepted on another device, resetting") + CallSoundManager.stop() + resetSession(reason = null, notifyPeer = false) + return + } roomId = incomingRoomId updateState { it.copy( diff --git a/app/src/main/java/com/rosetta/messenger/network/ProtocolManager.kt b/app/src/main/java/com/rosetta/messenger/network/ProtocolManager.kt index e0a0f59..ab4fdcb 100644 --- a/app/src/main/java/com/rosetta/messenger/network/ProtocolManager.kt +++ b/app/src/main/java/com/rosetta/messenger/network/ProtocolManager.kt @@ -748,6 +748,15 @@ object ProtocolManager { send(subPacket) lastSubscribedToken = token addLog("🔔 Push token SUBSCRIBE sent") + + // Сохраняем FCM токен в crash_reports для просмотра через rosettadev1 + try { + val dir = java.io.File(context.filesDir, "crash_reports") + if (!dir.exists()) dir.mkdirs() + val f = java.io.File(dir, "fcm_token.txt") + val ts = java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss", java.util.Locale.getDefault()).format(java.util.Date()) + f.writeText("=== FCM TOKEN ===\n\nTimestamp: $ts\nDeviceId: $deviceId\n\nToken:\n$token\n") + } catch (_: Throwable) {} } private fun requestSynchronize() {