kopia lustrzana https://github.com/ryukoposting/Signal-Android
57 wiersze
2.2 KiB
Kotlin
57 wiersze
2.2 KiB
Kotlin
package org.thoughtcrime.securesms.components.settings.app
|
|
|
|
import androidx.lifecycle.LiveData
|
|
import androidx.lifecycle.ViewModel
|
|
import io.reactivex.rxjava3.disposables.CompositeDisposable
|
|
import io.reactivex.rxjava3.kotlin.plusAssign
|
|
import io.reactivex.rxjava3.kotlin.subscribeBy
|
|
import org.thoughtcrime.securesms.components.settings.app.subscription.InAppDonations
|
|
import org.thoughtcrime.securesms.components.settings.app.subscription.MonthlyDonationRepository
|
|
import org.thoughtcrime.securesms.conversationlist.model.UnreadPaymentsLiveData
|
|
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
|
|
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
|
import org.thoughtcrime.securesms.recipients.Recipient
|
|
import org.thoughtcrime.securesms.util.livedata.Store
|
|
|
|
class AppSettingsViewModel(
|
|
monthlyDonationRepository: MonthlyDonationRepository = MonthlyDonationRepository(ApplicationDependencies.getDonationsService())
|
|
) : ViewModel() {
|
|
|
|
private val store = Store(
|
|
AppSettingsState(
|
|
Recipient.self(),
|
|
0,
|
|
SignalStore.donationsValues().getExpiredGiftBadge() != null,
|
|
SignalStore.donationsValues().isLikelyASustainer() || InAppDonations.hasAtLeastOnePaymentMethodAvailable()
|
|
)
|
|
)
|
|
|
|
private val unreadPaymentsLiveData = UnreadPaymentsLiveData()
|
|
private val selfLiveData: LiveData<Recipient> = Recipient.self().live().liveData
|
|
private val disposables = CompositeDisposable()
|
|
|
|
val state: LiveData<AppSettingsState> = store.stateLiveData
|
|
|
|
init {
|
|
store.update(unreadPaymentsLiveData) { payments, state -> state.copy(unreadPaymentsCount = payments.map { it.unreadCount }.orElse(0)) }
|
|
store.update(selfLiveData) { self, state -> state.copy(self = self) }
|
|
|
|
disposables += monthlyDonationRepository.getActiveSubscription().subscribeBy(
|
|
onSuccess = { activeSubscription ->
|
|
store.update { state ->
|
|
state.copy(allowUserToGoToDonationManagementScreen = activeSubscription.isActive || InAppDonations.hasAtLeastOnePaymentMethodAvailable())
|
|
}
|
|
},
|
|
onError = {}
|
|
)
|
|
}
|
|
|
|
override fun onCleared() {
|
|
disposables.clear()
|
|
}
|
|
|
|
fun refreshExpiredGiftBadge() {
|
|
store.update { it.copy(hasExpiredGiftBadge = SignalStore.donationsValues().getExpiredGiftBadge() != null) }
|
|
}
|
|
}
|