Remove Rx from EventHub and TimelineCases (#3446)
* remove Rx from EventHub and TimelineCases * fix tests * fix AccountViewModel.unblockDomain * remove debug logging
This commit is contained in:
parent
66eadabd44
commit
321d17f5de
25 changed files with 264 additions and 330 deletions
|
|
@ -16,11 +16,14 @@
|
|||
package com.keylesspalace.tusky.components.search
|
||||
|
||||
import android.util.Log
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import androidx.paging.Pager
|
||||
import androidx.paging.PagingConfig
|
||||
import androidx.paging.cachedIn
|
||||
import at.connyduck.calladapter.networkresult.NetworkResult
|
||||
import at.connyduck.calladapter.networkresult.fold
|
||||
import at.connyduck.calladapter.networkresult.onFailure
|
||||
import com.keylesspalace.tusky.components.search.adapter.SearchPagingSourceFactory
|
||||
import com.keylesspalace.tusky.db.AccountEntity
|
||||
import com.keylesspalace.tusky.db.AccountManager
|
||||
|
|
@ -28,10 +31,8 @@ import com.keylesspalace.tusky.entity.DeletedStatus
|
|||
import com.keylesspalace.tusky.entity.Status
|
||||
import com.keylesspalace.tusky.network.MastodonApi
|
||||
import com.keylesspalace.tusky.usecase.TimelineCases
|
||||
import com.keylesspalace.tusky.util.RxAwareViewModel
|
||||
import com.keylesspalace.tusky.util.toViewData
|
||||
import com.keylesspalace.tusky.viewdata.StatusViewData
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import kotlinx.coroutines.Deferred
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.launch
|
||||
|
|
@ -41,7 +42,7 @@ class SearchViewModel @Inject constructor(
|
|||
mastodonApi: MastodonApi,
|
||||
private val timelineCases: TimelineCases,
|
||||
private val accountManager: AccountManager
|
||||
) : RxAwareViewModel() {
|
||||
) : ViewModel() {
|
||||
|
||||
var currentQuery: String = ""
|
||||
|
||||
|
|
@ -115,22 +116,18 @@ class SearchViewModel @Inject constructor(
|
|||
}
|
||||
|
||||
fun reblog(statusViewData: StatusViewData.Concrete, reblog: Boolean) {
|
||||
timelineCases.reblog(statusViewData.id, reblog)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(
|
||||
{ setRebloggedForStatus(statusViewData, reblog) },
|
||||
{ t -> Log.d(TAG, "Failed to reblog status ${statusViewData.id}", t) }
|
||||
)
|
||||
.autoDispose()
|
||||
}
|
||||
|
||||
private fun setRebloggedForStatus(statusViewData: StatusViewData.Concrete, reblog: Boolean) {
|
||||
updateStatus(
|
||||
statusViewData.status.copy(
|
||||
reblogged = reblog,
|
||||
reblog = statusViewData.status.reblog?.copy(reblogged = reblog)
|
||||
)
|
||||
)
|
||||
viewModelScope.launch {
|
||||
timelineCases.reblog(statusViewData.id, reblog).fold({
|
||||
updateStatus(
|
||||
statusViewData.status.copy(
|
||||
reblogged = reblog,
|
||||
reblog = statusViewData.status.reblog?.copy(reblogged = reblog)
|
||||
)
|
||||
)
|
||||
}, { t ->
|
||||
Log.d(TAG, "Failed to reblog status ${statusViewData.id}", t)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
fun contentHiddenChange(statusViewData: StatusViewData.Concrete, isShowing: Boolean) {
|
||||
|
|
@ -144,27 +141,24 @@ class SearchViewModel @Inject constructor(
|
|||
fun voteInPoll(statusViewData: StatusViewData.Concrete, choices: MutableList<Int>) {
|
||||
val votedPoll = statusViewData.status.actionableStatus.poll!!.votedCopy(choices)
|
||||
updateStatus(statusViewData.status.copy(poll = votedPoll))
|
||||
timelineCases.voteInPoll(statusViewData.id, votedPoll.id, choices)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.doOnError { t -> Log.d(TAG, "Failed to vote in poll: ${statusViewData.id}", t) }
|
||||
.subscribe()
|
||||
.autoDispose()
|
||||
viewModelScope.launch {
|
||||
timelineCases.voteInPoll(statusViewData.id, votedPoll.id, choices)
|
||||
.onFailure { t -> Log.d(TAG, "Failed to vote in poll: ${statusViewData.id}", t) }
|
||||
}
|
||||
}
|
||||
|
||||
fun favorite(statusViewData: StatusViewData.Concrete, isFavorited: Boolean) {
|
||||
updateStatus(statusViewData.status.copy(favourited = isFavorited))
|
||||
timelineCases.favourite(statusViewData.id, isFavorited)
|
||||
.onErrorReturnItem(statusViewData.status)
|
||||
.subscribe()
|
||||
.autoDispose()
|
||||
viewModelScope.launch {
|
||||
timelineCases.favourite(statusViewData.id, isFavorited)
|
||||
}
|
||||
}
|
||||
|
||||
fun bookmark(statusViewData: StatusViewData.Concrete, isBookmarked: Boolean) {
|
||||
updateStatus(statusViewData.status.copy(bookmarked = isBookmarked))
|
||||
timelineCases.bookmark(statusViewData.id, isBookmarked)
|
||||
.onErrorReturnItem(statusViewData.status)
|
||||
.subscribe()
|
||||
.autoDispose()
|
||||
viewModelScope.launch {
|
||||
timelineCases.bookmark(statusViewData.id, isBookmarked)
|
||||
}
|
||||
}
|
||||
|
||||
fun muteAccount(accountId: String, notifications: Boolean, duration: Int?) {
|
||||
|
|
@ -174,7 +168,9 @@ class SearchViewModel @Inject constructor(
|
|||
}
|
||||
|
||||
fun pinAccount(status: Status, isPin: Boolean) {
|
||||
timelineCases.pin(status.id, isPin)
|
||||
viewModelScope.launch {
|
||||
timelineCases.pin(status.id, isPin)
|
||||
}
|
||||
}
|
||||
|
||||
fun blockAccount(accountId: String) {
|
||||
|
|
@ -191,10 +187,9 @@ class SearchViewModel @Inject constructor(
|
|||
|
||||
fun muteConversation(statusViewData: StatusViewData.Concrete, mute: Boolean) {
|
||||
updateStatus(statusViewData.status.copy(muted = mute))
|
||||
timelineCases.muteConversation(statusViewData.id, mute)
|
||||
.onErrorReturnItem(statusViewData.status)
|
||||
.subscribe()
|
||||
.autoDispose()
|
||||
viewModelScope.launch {
|
||||
timelineCases.muteConversation(statusViewData.id, mute)
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateStatusViewData(newStatusViewData: StatusViewData.Concrete) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue