Add InstanceInfoRepository to TimelineViewModel

This commit is contained in:
fruye 2022-12-05 20:13:51 +01:00
parent 2f79b4f8b2
commit 09dce64a78
3 changed files with 18 additions and 5 deletions

View File

@ -33,6 +33,7 @@ import com.keylesspalace.tusky.appstore.EventHub
import com.keylesspalace.tusky.appstore.FavoriteEvent
import com.keylesspalace.tusky.appstore.PinEvent
import com.keylesspalace.tusky.appstore.ReblogEvent
import com.keylesspalace.tusky.components.instanceinfo.InstanceInfoRepository
import com.keylesspalace.tusky.components.preference.PreferencesFragment.ReadingOrder.NEWEST_FIRST
import com.keylesspalace.tusky.components.preference.PreferencesFragment.ReadingOrder.OLDEST_FIRST
import com.keylesspalace.tusky.components.timeline.Placeholder
@ -67,6 +68,7 @@ class CachedTimelineViewModel @Inject constructor(
accountManager: AccountManager,
sharedPreferences: SharedPreferences,
filterModel: FilterModel,
instanceInfoRepository: InstanceInfoRepository,
private val db: AppDatabase,
private val gson: Gson
) : TimelineViewModel(
@ -75,7 +77,8 @@ class CachedTimelineViewModel @Inject constructor(
eventHub,
accountManager,
sharedPreferences,
filterModel
filterModel,
instanceInfoRepository,
) {
private var currentPagingSource: PagingSource<Int, TimelineStatusWithAccount>? = null

View File

@ -29,6 +29,7 @@ import com.keylesspalace.tusky.appstore.EventHub
import com.keylesspalace.tusky.appstore.FavoriteEvent
import com.keylesspalace.tusky.appstore.PinEvent
import com.keylesspalace.tusky.appstore.ReblogEvent
import com.keylesspalace.tusky.components.instanceinfo.InstanceInfoRepository
import com.keylesspalace.tusky.components.timeline.util.ifExpected
import com.keylesspalace.tusky.db.AccountManager
import com.keylesspalace.tusky.entity.Filter
@ -61,8 +62,9 @@ class NetworkTimelineViewModel @Inject constructor(
eventHub: EventHub,
accountManager: AccountManager,
sharedPreferences: SharedPreferences,
filterModel: FilterModel
) : TimelineViewModel(timelineCases, api, eventHub, accountManager, sharedPreferences, filterModel) {
filterModel: FilterModel,
instanceInfoRepository: InstanceInfoRepository
) : TimelineViewModel(timelineCases, api, eventHub, accountManager, sharedPreferences, filterModel, instanceInfoRepository) {
var currentSource: NetworkTimelinePagingSource? = null

View File

@ -37,9 +37,11 @@ import com.keylesspalace.tusky.appstore.PreferenceChangedEvent
import com.keylesspalace.tusky.appstore.ReblogEvent
import com.keylesspalace.tusky.appstore.StatusDeletedEvent
import com.keylesspalace.tusky.appstore.UnfollowEvent
import com.keylesspalace.tusky.components.instanceinfo.InstanceInfoRepository
import com.keylesspalace.tusky.components.preference.PreferencesFragment.ReadingOrder
import com.keylesspalace.tusky.components.timeline.util.ifExpected
import com.keylesspalace.tusky.db.AccountManager
import com.keylesspalace.tusky.entity.Emoji
import com.keylesspalace.tusky.entity.Filter
import com.keylesspalace.tusky.entity.FilterV1
import com.keylesspalace.tusky.entity.Poll
@ -48,8 +50,9 @@ import com.keylesspalace.tusky.network.MastodonApi
import com.keylesspalace.tusky.settings.PrefKeys
import com.keylesspalace.tusky.usecase.TimelineCases
import com.keylesspalace.tusky.viewdata.StatusViewData
import kotlinx.coroutines.FlowPreview
import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.*
import kotlinx.coroutines.launch
import retrofit2.HttpException
@ -59,7 +62,8 @@ abstract class TimelineViewModel(
private val eventHub: EventHub,
protected val accountManager: AccountManager,
private val sharedPreferences: SharedPreferences,
private val filterModel: FilterModel
private val filterModel: FilterModel,
private val instanceInfoRepository: InstanceInfoRepository,
) : ViewModel() {
abstract val statuses: Flow<PagingData<StatusViewData>>
@ -71,6 +75,10 @@ abstract class TimelineViewModel(
var tags: List<String> = emptyList()
private set
@OptIn(FlowPreview::class)
val emoji: SharedFlow<List<Emoji>> = instanceInfoRepository::getEmojis.asFlow()
.shareIn(viewModelScope, SharingStarted.Eagerly, replay = 1)
protected var alwaysShowSensitiveMedia = false
private var alwaysOpenSpoilers = false
private var filterRemoveReplies = false