fix: sealed reveal flow fixes (batch v1.0.19)

This commit is contained in:
null 2026-06-20 01:40:24 -05:00
parent b64ae1f29a
commit 737514d18f
3 changed files with 6 additions and 4 deletions

View File

@ -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
}

View File

@ -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,

View File

@ -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
}