Skip to content

Commit 5271dcc

Browse files
committed
Reset restore dialog state when restore is cancelled
1 parent 1d6a45a commit 5271dcc

2 files changed

Lines changed: 24 additions & 0 deletions

File tree

ui/revenuecatui/src/main/kotlin/com/revenuecat/purchases/ui/revenuecatui/customercenter/viewmodel/CustomerCenterViewModel.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,13 @@ internal class CustomerCenterViewModelImpl(
510510
if (!shouldResumeRestorePurchases(listener, "listener") ||
511511
!shouldResumeRestorePurchases(purchases.customerCenterListener, "purchases.customerCenterListener")
512512
) {
513+
_state.update { currentState ->
514+
if (currentState is CustomerCenterState.Success) {
515+
currentState.copy(restorePurchasesState = null)
516+
} else {
517+
currentState
518+
}
519+
}
513520
return
514521
}
515522
notifyListenersForRestoreStarted()

ui/revenuecatui/src/test/kotlin/com/revenuecat/purchases/ui/revenuecatui/customercenter/data/CustomerCenterViewModelTests.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -963,13 +963,30 @@ class CustomerCenterViewModelTests {
963963
listener = directListener
964964
)
965965

966+
model.state.filterIsInstance<CustomerCenterState.Success>().first()
967+
968+
val missingPurchasePath = HelpPath(
969+
id = "missing_purchase_id",
970+
title = "Restore Purchases",
971+
type = HelpPath.PathType.MISSING_PURCHASE
972+
)
973+
model.pathButtonPressed(mockk(relaxed = true), missingPurchasePath, null)
974+
975+
model.state.first {
976+
it is CustomerCenterState.Success &&
977+
it.restorePurchasesState == RestorePurchasesState.RESTORING
978+
}
979+
966980
model.restorePurchases()
967981

982+
val updatedState = model.state.value as CustomerCenterState.Success
983+
968984
verify(exactly = 1) { directListener.onRestoreInitiated(any()) }
969985
verify(exactly = 0) { purchasesListener.onRestoreInitiated(any()) }
970986
coVerify(exactly = 0) { purchases.awaitRestore() }
971987
verify(exactly = 0) { directListener.onRestoreStarted() }
972988
verify(exactly = 0) { purchasesListener.onRestoreStarted() }
989+
assertThat(updatedState.restorePurchasesState).isNull()
973990
}
974991

975992
@Test

0 commit comments

Comments
 (0)