diff --git a/auth/src/main/java/org/futo/circles/auth/feature/sign_up/subscription_stage/SubscriptionStageViewModel.kt b/auth/src/main/java/org/futo/circles/auth/feature/sign_up/subscription_stage/SubscriptionStageViewModel.kt index fbe82ca2daba5d5fa72a73ac0461a3ea682c8fcc..65d58bc5e206c0c1510c65ae44b45ff15ea5526c 100644 --- a/auth/src/main/java/org/futo/circles/auth/feature/sign_up/subscription_stage/SubscriptionStageViewModel.kt +++ b/auth/src/main/java/org/futo/circles/auth/feature/sign_up/subscription_stage/SubscriptionStageViewModel.kt @@ -22,15 +22,19 @@ class SubscriptionStageViewModel @Inject constructor( val purchaseLiveData = SingleEventLiveData<Response<Unit>>() val subscriptionsListLiveData = MutableLiveData<Response<List<SubscriptionListItem>>>() - fun validateSubscription(subscriptionReceiptData: SubscriptionReceiptData) { + fun initiateSubscriptionStage(subscriptionManager: SubscriptionManager) { launchBg { - subscribeLiveData.postValue(dataSource.validateSubscription(subscriptionReceiptData)) + when (val activeSubscriptionResult = + getLastActiveSubscriptionReceipt(subscriptionManager)) { + is Response.Success -> validateSubscription(activeSubscriptionResult.data) + is Response.Error -> loadSubscriptionsList(subscriptionManager) + } } } - fun loadSubscriptionsList(subscriptionManager: SubscriptionManager) { + fun validateSubscription(subscriptionReceiptData: SubscriptionReceiptData) { launchBg { - subscriptionsListLiveData.postValue(subscriptionManager.getDetails(dataSource.getProductIdsList())) + subscribeLiveData.postValue(dataSource.validateSubscription(subscriptionReceiptData)) } } @@ -40,4 +44,12 @@ class SubscriptionStageViewModel @Inject constructor( } } + private suspend fun loadSubscriptionsList(subscriptionManager: SubscriptionManager) { + val details = subscriptionManager.getDetails(dataSource.getProductIdsList()) + subscriptionsListLiveData.postValue(details) + } + + private suspend fun getLastActiveSubscriptionReceipt(subscriptionManager: SubscriptionManager) = + subscriptionManager.getActiveSubscriptionReceipt() + } \ No newline at end of file