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() {