diff --git a/backend/mpc-system/services/service-party-android/app/src/main/java/com/durian/tssparty/data/repository/TssRepository.kt b/backend/mpc-system/services/service-party-android/app/src/main/java/com/durian/tssparty/data/repository/TssRepository.kt index 8033d9cf..eeb3c81f 100644 --- a/backend/mpc-system/services/service-party-android/app/src/main/java/com/durian/tssparty/data/repository/TssRepository.kt +++ b/backend/mpc-system/services/service-party-android/app/src/main/java/com/durian/tssparty/data/repository/TssRepository.kt @@ -642,6 +642,10 @@ class TssRepository @Inject constructor( thresholdN: Int, participantName: String ): Result { + // Ensure session event subscription is active before creating keygen session + // This handles the case where a previous keygen might have left the subscription inactive + ensureSessionEventSubscriptionActive() + return withContext(Dispatchers.IO) { try { val jsonMediaType = "application/json; charset=utf-8".toMediaType() @@ -1975,7 +1979,8 @@ class TssRepository @Inject constructor( stopProgressCollection() _sessionStatus.value = SessionStatus.COMPLETED pendingSessionId = null // Clear pending session ID on completion - sessionEventJob?.cancel() + // NOTE: Do NOT cancel sessionEventJob here - it's a global subscription + // that should remain active for subsequent keygen/sign sessions Result.success(shareEntity.copy(id = id).toShareRecord())