Skip to content

Commit

Permalink
!!! fix inconsistency detected: modify adapter list in main thread
Browse files Browse the repository at this point in the history
  • Loading branch information
mdrlzy committed Aug 13, 2023
1 parent 92acebc commit e36918c
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -163,8 +163,7 @@ class ResourcesFragment :
with(binding) {
resourcesAdapter = ResourcesRVAdapter(presenter.gridPresenter)
rvResources.adapter = resourcesAdapter
rvResources.setItemViewCacheSize(0)
rvResources.layoutManager = GridLayoutManager(context, 3)
rvResources.layoutManager = GridLayoutManager(requireContext(), 3)
}

override fun onResume() {
Expand Down Expand Up @@ -286,7 +285,6 @@ class ResourcesFragment :
}

override fun onSelectingChanged(enabled: Boolean) {
binding.rvResources.recycledViewPool.clear()
resourcesAdapter?.onSelectingChanged(enabled)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ package dev.arkbuilders.navigator.presentation.screen.resources.adapter
import android.util.Log
import dev.arkbuilders.navigator.data.preferences.PreferenceKey
import dev.arkbuilders.navigator.data.preferences.Preferences
import dev.arkbuilders.navigator.data.utils.LogTags.RESOURCES_SCREEN
import dev.arkbuilders.navigator.data.utils.Sorting
import dev.arkbuilders.navigator.presentation.navigation.AppRouter
import dev.arkbuilders.navigator.presentation.navigation.Screens
import dev.arkbuilders.navigator.presentation.screen.resources.ResourcesPresenter
import dev.arkbuilders.navigator.presentation.screen.resources.ResourcesView
import dev.arkbuilders.navigator.data.utils.LogTags.RESOURCES_SCREEN
import dev.arkbuilders.navigator.data.utils.Sorting
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.launchIn
Expand Down Expand Up @@ -205,13 +205,11 @@ class ResourcesGridPresenter(

suspend fun updateSelection(
selection: Set<ResourceId>
) = withContext(Dispatchers.Default) {
) = withContext(Dispatchers.Main) {
this@ResourcesGridPresenter.selection = resources
.filter { selection.contains(it.id()) }
withContext(Dispatchers.Main) {
setProgressVisibility(false)
viewState.updateResourcesAdapter()
}
setProgressVisibility(false)
viewState.updateResourcesAdapter()
}

suspend fun resetResources(
Expand Down Expand Up @@ -378,14 +376,9 @@ class ResourcesGridPresenter(
)
}

private fun sortSelection() {
val selection = this.selection.toSet()
this.selection = resources.filter { selection.contains(it) }
}

private fun sortSelectionAndUpdateAdapter() {
sortSelection()
scope.launch(Dispatchers.Main) {
selection = resources.filter { selection.contains(it) }
setProgressVisibility(false)
viewState.updateResourcesAdapter()
}
Expand All @@ -404,6 +397,7 @@ class ResourcesGridPresenter(
Sorting.NAME -> compareBy(String.CASE_INSENSITIVE_ORDER) {
it.resource.name
}

Sorting.SIZE -> compareBy { it.resource.size() }
Sorting.TYPE -> compareBy { it.resource.extension }
Sorting.LAST_MODIFIED -> compareBy { it.resource.modified }
Expand Down

0 comments on commit e36918c

Please sign in to comment.