From 171b5b721e6b926bb427ecfc79d27739c846cdcc Mon Sep 17 00:00:00 2001 From: MhmdIbrahim1 <107378571+MhmdIbrahim1@users.noreply.github.com> Date: Sun, 19 Feb 2023 03:07:13 +0200 Subject: [PATCH] Replace notifyDataSetChanged() with notifyItemRangeChanged() in setList(), use requireActivity().onBackPressedDispatcher.onBackPressed() --- .../ui/download/DownloadChildFragment.kt | 38 +++++++++++++++---- .../ui/download/DownloadFragment.kt | 14 +++++-- .../ui/settings/SettingsPlayer.kt | 1 - 3 files changed, 42 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadChildFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadChildFragment.kt index 477a18e0..94b9868f 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadChildFragment.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadChildFragment.kt @@ -18,6 +18,7 @@ import com.lagradost.cloudstream3.utils.VideoDownloadManager import kotlinx.android.synthetic.main.fragment_child_downloads.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext +import kotlin.math.min class DownloadChildFragment : Fragment() { companion object { @@ -39,6 +40,7 @@ class DownloadChildFragment : Fragment() { return inflater.inflate(R.layout.fragment_child_downloads, container, false) } + private fun updateList(folder: String) = main { context?.let { ctx -> val data = withContext(Dispatchers.IO) { ctx.getKeys(folder) } @@ -50,16 +52,38 @@ class DownloadChildFragment : Fragment() { ?: return@mapNotNull null VisualDownloadChildCached(info.fileLength, info.totalBytes, it) } - }.sortedBy { it.data.episode + (it.data.season?: 0)*100000 } + }.sortedBy { it.data.episode + (it.data.season ?: 0) * 100000 } if (eps.isEmpty()) { - activity?.onBackPressed() + requireActivity().onBackPressedDispatcher.onBackPressed() return@main } - - (download_child_list?.adapter as DownloadChildAdapter? ?: return@main).cardList = eps - download_child_list?.adapter?.notifyDataSetChanged() + val adapter = download_child_list?.adapter as DownloadChildAdapter? ?: return@main + val oldSize = adapter.cardList.size + adapter.cardList = eps + adapter.notifyItemRangeChanged(0, min(oldSize,eps.size)) } } +// private fun updateList(folder: String) = main { +// context?.let { ctx -> +// val data = withContext(Dispatchers.IO) { ctx.getKeys(folder) } +// val eps = withContext(Dispatchers.IO) { +// data.mapNotNull { key -> +// context?.getKey(key) +// }.mapNotNull { +// val info = VideoDownloadManager.getDownloadFileInfoAndUpdateSettings(ctx, it.id) +// ?: return@mapNotNull null +// VisualDownloadChildCached(info.fileLength, info.totalBytes, it) +// } +// }.sortedBy { it.data.episode + (it.data.season?: 0)*100000 } +// if (eps.isEmpty()) { +// activity?.onBackPressed() +// return@main +// } +// +// (download_child_list?.adapter as DownloadChildAdapter? ?: return@main).cardList = eps +// download_child_list?.adapter?.notifyDataSetChanged() +// } +// } private var downloadDeleteEventListener: ((Int) -> Unit)? = null @@ -69,7 +93,7 @@ class DownloadChildFragment : Fragment() { val folder = arguments?.getString("folder") val name = arguments?.getString("name") if (folder == null) { - activity?.onBackPressed() // TODO FIX + requireActivity().onBackPressedDispatcher.onBackPressed() return } context?.fixPaddingStatusbar(download_child_root) @@ -77,7 +101,7 @@ class DownloadChildFragment : Fragment() { download_child_toolbar.title = name download_child_toolbar.setNavigationIcon(R.drawable.ic_baseline_arrow_back_24) download_child_toolbar.setNavigationOnClickListener { - activity?.onBackPressed() + requireActivity().onBackPressedDispatcher.onBackPressed() } val adapter: RecyclerView.Adapter = diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadFragment.kt index f0340845..8046f5b0 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadFragment.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadFragment.kt @@ -24,7 +24,6 @@ import com.lagradost.cloudstream3.mvvm.observe import com.lagradost.cloudstream3.ui.download.DownloadButtonSetup.handleDownloadClick import com.lagradost.cloudstream3.ui.player.GeneratorPlayer import com.lagradost.cloudstream3.ui.player.LinkGenerator -import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTvSettings import com.lagradost.cloudstream3.utils.AppUtils.loadResult import com.lagradost.cloudstream3.utils.Coroutines.main import com.lagradost.cloudstream3.utils.DOWNLOAD_EPISODE_CACHE @@ -58,10 +57,19 @@ class DownloadFragment : Fragment() { this.layoutParams = param } +// private fun setList(list: List) { +// main { +// (download_list?.adapter as DownloadHeaderAdapter?)?.cardList = list +// download_list?.adapter?.notifyDataSetChanged() +// } +// } private fun setList(list: List) { main { - (download_list?.adapter as DownloadHeaderAdapter?)?.cardList = list - download_list?.adapter?.notifyDataSetChanged() + val adapter = download_list?.adapter as DownloadHeaderAdapter? + if (adapter != null) { + adapter.cardList = list + adapter.notifyItemRangeChanged(0, list.size) + } } } diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsPlayer.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsPlayer.kt index 33d41934..e6a12dc8 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsPlayer.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsPlayer.kt @@ -112,7 +112,6 @@ class SettingsPlayer : PreferenceFragmentCompat() { } return@setOnPreferenceClickListener true } - getPref(R.string.player_pref_key)?.setOnPreferenceClickListener { val prefNames = resources.getStringArray(R.array.player_pref_names) val prefValues = resources.getIntArray(R.array.player_pref_values)