fix various timeline related crashes (#2369)
* fix various timeline related crashes * fix ktlint
This commit is contained in:
parent
73e9338f3c
commit
841373e947
3 changed files with 25 additions and 3 deletions
|
@ -217,7 +217,7 @@ class TimelineFragment :
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
lifecycleScope.launch {
|
viewLifecycleOwner.lifecycleScope.launch {
|
||||||
viewModel.statuses.collectLatest { pagingData ->
|
viewModel.statuses.collectLatest { pagingData ->
|
||||||
adapter.submitData(pagingData)
|
adapter.submitData(pagingData)
|
||||||
}
|
}
|
||||||
|
@ -271,7 +271,11 @@ class TimelineFragment :
|
||||||
private fun setupRecyclerView() {
|
private fun setupRecyclerView() {
|
||||||
binding.recyclerView.setAccessibilityDelegateCompat(
|
binding.recyclerView.setAccessibilityDelegateCompat(
|
||||||
ListStatusAccessibilityDelegate(binding.recyclerView, this) { pos ->
|
ListStatusAccessibilityDelegate(binding.recyclerView, this) { pos ->
|
||||||
adapter.peek(pos)
|
if (pos in 0 until adapter.itemCount) {
|
||||||
|
adapter.peek(pos)
|
||||||
|
} else {
|
||||||
|
null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
binding.recyclerView.setHasFixedSize(true)
|
binding.recyclerView.setHasFixedSize(true)
|
||||||
|
|
|
@ -70,7 +70,14 @@ class CachedTimelineViewModel @Inject constructor(
|
||||||
override val statuses = Pager(
|
override val statuses = Pager(
|
||||||
config = PagingConfig(pageSize = LOAD_AT_ONCE),
|
config = PagingConfig(pageSize = LOAD_AT_ONCE),
|
||||||
remoteMediator = CachedTimelineRemoteMediator(accountManager, api, db, gson),
|
remoteMediator = CachedTimelineRemoteMediator(accountManager, api, db, gson),
|
||||||
pagingSourceFactory = { db.timelineDao().getStatuses(accountManager.activeAccount!!.id) }
|
pagingSourceFactory = {
|
||||||
|
val activeAccount = accountManager.activeAccount
|
||||||
|
if (activeAccount == null) {
|
||||||
|
EmptyTimelinePagingSource()
|
||||||
|
} else {
|
||||||
|
db.timelineDao().getStatuses(activeAccount.id)
|
||||||
|
}
|
||||||
|
}
|
||||||
).flow
|
).flow
|
||||||
.map { pagingData ->
|
.map { pagingData ->
|
||||||
pagingData.map { timelineStatus ->
|
pagingData.map { timelineStatus ->
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
package com.keylesspalace.tusky.components.timeline.viewmodel
|
||||||
|
|
||||||
|
import androidx.paging.PagingSource
|
||||||
|
import androidx.paging.PagingState
|
||||||
|
import com.keylesspalace.tusky.db.TimelineStatusWithAccount
|
||||||
|
|
||||||
|
class EmptyTimelinePagingSource : PagingSource<Int, TimelineStatusWithAccount>() {
|
||||||
|
override fun getRefreshKey(state: PagingState<Int, TimelineStatusWithAccount>): Int? = null
|
||||||
|
|
||||||
|
override suspend fun load(params: LoadParams<Int>): LoadResult<Int, TimelineStatusWithAccount> = LoadResult.Page(emptyList(), null, null)
|
||||||
|
}
|
Loading…
Reference in a new issue