fix: sealed reveal flow fixes (batch v1.0.19)
This commit is contained in:
parent
b64ae1f29a
commit
737514d18f
|
|
@ -44,7 +44,8 @@ class SealedRevealManager @Inject constructor(
|
||||||
userId: String,
|
userId: String,
|
||||||
partnerId: String
|
partnerId: String
|
||||||
): Boolean {
|
): 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 partnerPublicKey = deviceKeyDataSource.getPublicKey(partnerId) ?: return false
|
||||||
|
|
||||||
val keybox = releaseKeyEncryptor.wrapForRecipient(
|
val keybox = releaseKeyEncryptor.wrapForRecipient(
|
||||||
|
|
@ -64,7 +65,7 @@ class SealedRevealManager @Inject constructor(
|
||||||
encryptedAnswerKey = keybox
|
encryptedAnswerKey = keybox
|
||||||
)
|
)
|
||||||
|
|
||||||
pendingAnswerKeyStore.remove(questionId)
|
pendingAnswerKeyStore.remove(storeKey)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,7 @@ class FirestoreAnswerDataSource @Inject constructor(
|
||||||
answer.writtenText, answer.selectedOptionIds, answer.scaleValue
|
answer.writtenText, answer.selectedOptionIds, answer.scaleValue
|
||||||
)
|
)
|
||||||
|
|
||||||
pendingAnswerKeyStore.store(questionId, oneTimeKey)
|
pendingAnswerKeyStore.store("daily_${date}_${questionId}", oneTimeKey)
|
||||||
|
|
||||||
val data = mapOf(
|
val data = mapOf(
|
||||||
"userId" to userId,
|
"userId" to userId,
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,8 @@ class AnswerRevealViewModel @Inject constructor(
|
||||||
private fun computeSealedPhase(answer: LocalAnswer?, partnerAnswer: LocalAnswer?): SealedRevealPhase {
|
private fun computeSealedPhase(answer: LocalAnswer?, partnerAnswer: LocalAnswer?): SealedRevealPhase {
|
||||||
if (answer?.schemaVersion != 3) return SealedRevealPhase.NONE
|
if (answer?.schemaVersion != 3) return SealedRevealPhase.NONE
|
||||||
if (answer.isRevealed) return SealedRevealPhase.REVEALED
|
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
|
return if (partnerAnswer != null) SealedRevealPhase.BOTH_ANSWERED else SealedRevealPhase.ANSWER_SEALED
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue