-
Notifications
You must be signed in to change notification settings - Fork 24
Expand file tree
/
Copy pathTrialInitializer.kt
More file actions
51 lines (48 loc) · 1.79 KB
/
TrialInitializer.kt
File metadata and controls
51 lines (48 loc) · 1.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package com.simplecityapps.shuttle.appinitializers
import android.app.Application
import com.simplecityapps.playback.PlaybackManager
import com.simplecityapps.shuttle.di.AppCoroutineScope
import com.simplecityapps.trial.BillingManager
import com.simplecityapps.trial.TrialManager
import com.simplecityapps.trial.TrialState
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch
import timber.log.Timber
class TrialInitializer
@Inject
constructor(
private val trialManager: TrialManager,
private val playbackManager: PlaybackManager,
private val billingManager: BillingManager,
@AppCoroutineScope private val coroutineScope: CoroutineScope
) : AppInitializer {
override fun init(application: Application) {
Timber.v("Initializing trial manager")
billingManager.addListener(
object : BillingManager.Listener {
override fun onBillingClientAvailable() {
Timber.v("Billing client available")
billingManager.queryPurchases()
coroutineScope.launch {
billingManager.queryProductDetails()
}
}
}
)
billingManager.start()
coroutineScope.launch {
trialManager.trialState.collect { trialState ->
when (trialState) {
is TrialState.Expired -> {
playbackManager.setPlaybackSpeed(trialState.multiplier())
}
TrialState.Paid, is TrialState.Pretrial, is TrialState.Trial, TrialState.Unknown -> {
playbackManager.setPlaybackSpeed(1.0f)
}
}
}
}
}
}