Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -165,13 +165,14 @@ class CourseStepFragment : BaseContainerFragment(), ImageCaptureCallback {
fragmentCourseStepBinding.tvResourcesHeader.visibility = View.VISIBLE
fragmentCourseStepBinding.rvInlineResources.visibility = View.VISIBLE

inlineResourceAdapter = InlineResourceAdapter(resources) { library ->
inlineResourceAdapter = InlineResourceAdapter { library ->
openResource(library)
}
fragmentCourseStepBinding.rvInlineResources.apply {
layoutManager = LinearLayoutManager(requireContext())
adapter = inlineResourceAdapter
}
inlineResourceAdapter?.submitList(resources)
}

private fun autoDownloadResources() {
Expand Down Expand Up @@ -214,7 +215,7 @@ class CourseStepFragment : BaseContainerFragment(), ImageCaptureCallback {
viewLifecycleOwner.lifecycleScope.launch {
val updatedResources = resourcesRepository.getAllStepResources(stepId)
resources = updatedResources
inlineResourceAdapter?.updateResources(updatedResources)
inlineResourceAdapter?.submitList(updatedResources)
fragmentCourseStepBinding.resourceDownloadProgress.visibility = View.GONE
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.graphics.createBitmap
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.bumptech.glide.load.engine.DiskCacheStrategy
Expand All @@ -24,12 +26,25 @@ import org.ole.planet.myplanet.utils.UrlUtils
import org.ole.planet.myplanet.utils.Utilities

class InlineResourceAdapter(
private var resources: List<RealmMyLibrary>,
private val onResourceClick: (RealmMyLibrary) -> Unit
) : RecyclerView.Adapter<InlineResourceAdapter.ViewHolder>() {
) : ListAdapter<RealmMyLibrary, InlineResourceAdapter.ViewHolder>(ResourceDiffCallback()) {

class ViewHolder(val binding: ItemInlineResourceBinding) : RecyclerView.ViewHolder(binding.root)

class ResourceDiffCallback : DiffUtil.ItemCallback<RealmMyLibrary>() {
override fun areItemsTheSame(oldItem: RealmMyLibrary, newItem: RealmMyLibrary): Boolean {
return oldItem.id == newItem.id
}

override fun areContentsTheSame(oldItem: RealmMyLibrary, newItem: RealmMyLibrary): Boolean {
return oldItem._rev == newItem._rev &&
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Complex binary expression [qlty:boolean-logic]

oldItem.downloadedRev == newItem.downloadedRev &&
oldItem.resourceLocalAddress == newItem.resourceLocalAddress &&
oldItem.title == newItem.title &&
oldItem.isResourceOffline() == newItem.isResourceOffline()
}
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val binding = ItemInlineResourceBinding.inflate(
LayoutInflater.from(parent.context), parent, false
Expand All @@ -38,7 +53,7 @@ class InlineResourceAdapter(
}

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val resource = resources[position]
val resource = getItem(position)
val context = holder.itemView.context
val binding = holder.binding

Expand Down Expand Up @@ -199,10 +214,4 @@ class InlineResourceAdapter(
}
}

override fun getItemCount(): Int = resources.size

fun updateResources(newResources: List<RealmMyLibrary>) {
resources = newResources
notifyDataSetChanged()
}
}