diff options
| author | Harsh Shandilya <me@msfjarvis.dev> | 2021-05-15 12:53:31 +0530 |
|---|---|---|
| committer | Harsh Shandilya <me@msfjarvis.dev> | 2021-05-15 15:48:05 +0530 |
| commit | 285bf9d92944c49c36d1828bc388b12a97525b1a (patch) | |
| tree | 1c51ef43afb30a38cd4334a13ac1126ae32e673d /app/src/main/java/dev/msfjarvis/aps/ui/adapters | |
| parent | cdf8e76ac66aca46f2fbfcbc239731c19eb6bec9 (diff) | |
| download | HardenedPass-285bf9d92944c49c36d1828bc388b12a97525b1a.tar.gz HardenedPass-285bf9d92944c49c36d1828bc388b12a97525b1a.zip | |
Move file reads in RV adapters to a background dispatcher
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
Diffstat (limited to 'app/src/main/java/dev/msfjarvis/aps/ui/adapters')
| -rw-r--r-- | app/src/main/java/dev/msfjarvis/aps/ui/adapters/PasswordItemRecyclerAdapter.kt | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/adapters/PasswordItemRecyclerAdapter.kt b/app/src/main/java/dev/msfjarvis/aps/ui/adapters/PasswordItemRecyclerAdapter.kt index a551a8b1..be0267c4 100644 --- a/app/src/main/java/dev/msfjarvis/aps/ui/adapters/PasswordItemRecyclerAdapter.kt +++ b/app/src/main/java/dev/msfjarvis/aps/ui/adapters/PasswordItemRecyclerAdapter.kt @@ -17,12 +17,16 @@ import dev.msfjarvis.aps.R import dev.msfjarvis.aps.data.password.PasswordItem import dev.msfjarvis.aps.util.viewmodel.SearchableRepositoryAdapter import dev.msfjarvis.aps.util.viewmodel.stableId +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext -open class PasswordItemRecyclerAdapter : +open class PasswordItemRecyclerAdapter(coroutineScope: CoroutineScope) : SearchableRepositoryAdapter<PasswordItemRecyclerAdapter.PasswordItemViewHolder>( R.layout.password_row_layout, ::PasswordItemViewHolder, - PasswordItemViewHolder::bind + coroutineScope, + PasswordItemViewHolder::bind, ) { fun makeSelectable(recyclerView: RecyclerView) { @@ -48,7 +52,7 @@ open class PasswordItemRecyclerAdapter : private val folderIndicator: AppCompatImageView = itemView.findViewById(R.id.folder_indicator) lateinit var itemDetails: ItemDetailsLookup.ItemDetails<String> - fun bind(item: PasswordItem) { + suspend fun bind(item: PasswordItem) { val parentPath = item.fullPathToParent.replace("(^/)|(/$)".toRegex(), "") val source = if (parentPath.isNotEmpty()) { @@ -62,7 +66,9 @@ open class PasswordItemRecyclerAdapter : if (item.type == PasswordItem.TYPE_CATEGORY) { folderIndicator.visibility = View.VISIBLE val count = - item.file.listFiles { path -> path.isDirectory || path.extension == "gpg" }?.size ?: 0 + withContext(Dispatchers.IO) { + item.file.listFiles { path -> path.isDirectory || path.extension == "gpg" }?.size ?: 0 + } childCount.visibility = if (count > 0) View.VISIBLE else View.GONE childCount.text = "$count" } else { |
