From 737514d18f92e735f0d3124ef2d72c3946f1c8ff Mon Sep 17 00:00:00 2001 From: null Date: Sat, 20 Jun 2026 01:40:24 -0500 Subject: [PATCH] fix: sealed reveal flow fixes (batch v1.0.19) --- app/src/main/java/app/closer/crypto/SealedRevealManager.kt | 5 +++-- .../java/app/closer/data/remote/FirestoreAnswerDataSource.kt | 2 +- .../main/java/app/closer/ui/answers/AnswerRevealViewModel.kt | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/app/closer/crypto/SealedRevealManager.kt b/app/src/main/java/app/closer/crypto/SealedRevealManager.kt index 23a36ce7..9c70b624 100644 --- a/app/src/main/java/app/closer/crypto/SealedRevealManager.kt +++ b/app/src/main/java/app/closer/crypto/SealedRevealManager.kt @@ -44,7 +44,8 @@ class SealedRevealManager @Inject constructor( userId: String, partnerId: String ): Boolean { - val oneTimeKey = pendingAnswerKeyStore.load(questionId) ?: return false + val storeKey = "daily_${date}_${questionId}" + val oneTimeKey = pendingAnswerKeyStore.load(storeKey) ?: return false val partnerPublicKey = deviceKeyDataSource.getPublicKey(partnerId) ?: return false val keybox = releaseKeyEncryptor.wrapForRecipient( @@ -64,7 +65,7 @@ class SealedRevealManager @Inject constructor( encryptedAnswerKey = keybox ) - pendingAnswerKeyStore.remove(questionId) + pendingAnswerKeyStore.remove(storeKey) return true } diff --git a/app/src/main/java/app/closer/data/remote/FirestoreAnswerDataSource.kt b/app/src/main/java/app/closer/data/remote/FirestoreAnswerDataSource.kt index 9558d685..f1348e5f 100644 --- a/app/src/main/java/app/closer/data/remote/FirestoreAnswerDataSource.kt +++ b/app/src/main/java/app/closer/data/remote/FirestoreAnswerDataSource.kt @@ -87,7 +87,7 @@ class FirestoreAnswerDataSource @Inject constructor( answer.writtenText, answer.selectedOptionIds, answer.scaleValue ) - pendingAnswerKeyStore.store(questionId, oneTimeKey) + pendingAnswerKeyStore.store("daily_${date}_${questionId}", oneTimeKey) val data = mapOf( "userId" to userId, diff --git a/app/src/main/java/app/closer/ui/answers/AnswerRevealViewModel.kt b/app/src/main/java/app/closer/ui/answers/AnswerRevealViewModel.kt index 2fe958e9..0d402db1 100644 --- a/app/src/main/java/app/closer/ui/answers/AnswerRevealViewModel.kt +++ b/app/src/main/java/app/closer/ui/answers/AnswerRevealViewModel.kt @@ -130,7 +130,8 @@ class AnswerRevealViewModel @Inject constructor( private fun computeSealedPhase(answer: LocalAnswer?, partnerAnswer: LocalAnswer?): SealedRevealPhase { if (answer?.schemaVersion != 3) return SealedRevealPhase.NONE if (answer.isRevealed) return SealedRevealPhase.REVEALED - if (!pendingAnswerKeyStore.hasPendingKey(questionId)) return SealedRevealPhase.LOST_LOCAL_KEY + val pendingKey = "daily_${answer.answerDate}_${questionId}" + if (!pendingAnswerKeyStore.hasPendingKey(pendingKey)) return SealedRevealPhase.LOST_LOCAL_KEY return if (partnerAnswer != null) SealedRevealPhase.BOTH_ANSWERED else SealedRevealPhase.ANSWER_SEALED }