@@ -11,6 +11,7 @@ import kotlinx.coroutines.flow.combine
11
11
import kotlinx.coroutines.flow.debounce
12
12
import kotlinx.coroutines.flow.emptyFlow
13
13
import kotlinx.coroutines.flow.filter
14
+ import kotlinx.coroutines.flow.filterNotNull
14
15
import kotlinx.coroutines.flow.flatMapLatest
15
16
import kotlinx.coroutines.flow.flowOf
16
17
import kotlinx.coroutines.flow.map
@@ -27,7 +28,6 @@ import net.mullvad.mullvadvpn.ui.serviceconnection.ConnectionProxy
27
28
import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionManager
28
29
import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionState
29
30
import net.mullvad.mullvadvpn.ui.serviceconnection.authTokenCache
30
- import net.mullvad.mullvadvpn.usecase.OutOfTimeUseCase
31
31
import net.mullvad.mullvadvpn.usecase.PaymentUseCase
32
32
import net.mullvad.mullvadvpn.util.UNKNOWN_STATE_DEBOUNCE_DELAY_MILLISECONDS
33
33
import net.mullvad.mullvadvpn.util.addDebounceForUnknownState
@@ -40,12 +40,11 @@ class WelcomeViewModel(
40
40
private val deviceRepository : DeviceRepository ,
41
41
private val serviceConnectionManager : ServiceConnectionManager ,
42
42
private val paymentUseCase : PaymentUseCase ,
43
- private val outOfTimeUseCase : OutOfTimeUseCase ,
44
43
private val pollAccountExpiry : Boolean = true ,
45
44
private val isPlayBuild : Boolean
46
45
) : ViewModel() {
47
46
private val _uiSideEffect = Channel <UiSideEffect >()
48
- val uiSideEffect = merge(_uiSideEffect .receiveAsFlow(), notOutOfTimeEffect ())
47
+ val uiSideEffect = merge(_uiSideEffect .receiveAsFlow(), hasAddedTime ())
49
48
50
49
val uiState =
51
50
serviceConnectionManager.connectionState
@@ -86,9 +85,11 @@ class WelcomeViewModel(
86
85
fetchPaymentAvailability()
87
86
}
88
87
89
- private fun notOutOfTimeEffect () =
90
- outOfTimeUseCase.isOutOfTime
91
- .filter { it == false }
88
+ private fun hasAddedTime () =
89
+ accountRepository.accountExpiryState
90
+ .map { it.date() }
91
+ .filterNotNull()
92
+ .filter { it.minusHours(MIN_TIME_PAST_ACCOUNT_EXPIRY ).isAfterNow }
92
93
.map {
93
94
paymentUseCase.resetPurchaseResult()
94
95
UiSideEffect .OpenConnectScreen
@@ -144,4 +145,8 @@ class WelcomeViewModel(
144
145
145
146
data object OpenConnectScreen : UiSideEffect
146
147
}
148
+
149
+ companion object {
150
+ private const val MIN_TIME_PAST_ACCOUNT_EXPIRY = 20
151
+ }
147
152
}
0 commit comments