From c32f459caf8fe26b7d782e056cfc8eaa700df9ff Mon Sep 17 00:00:00 2001 From: alexytomi <60690056+alexytomi@users.noreply.github.com> Date: Fri, 20 Jun 2025 23:21:56 +0800 Subject: [PATCH] fix[ModVersionListFragment]: Faulty taskProxy logic Code thought taskProxy was being set to null, when in reality it was actually just the value of it. Rather than just read the value of the key, I just delete the key itself because outside of installing something, we don't need it at all. This bug caused anything implementing ModVersionListFragment to disable the list after one install as the code that handles the edgecase of taskProxy being not null was being triggered but not reset post-install. The faulty code was intended to block the user from being able to run multiple install tasks at once, which wouldn't go well. --- .../fragments/ModVersionListFragment.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/ModVersionListFragment.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/ModVersionListFragment.java index 1260cdde6..7b2952d3b 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/ModVersionListFragment.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/ModVersionListFragment.java @@ -17,7 +17,6 @@ import androidx.fragment.app.Fragment; import net.kdt.pojavlaunch.R; import net.kdt.pojavlaunch.Tools; import net.kdt.pojavlaunch.extra.ExtraCore; -import net.kdt.pojavlaunch.mirrors.DownloadMirror; import net.kdt.pojavlaunch.modloaders.ModloaderDownloadListener; import net.kdt.pojavlaunch.modloaders.ModloaderListenerProxy; import net.kdt.pojavlaunch.progresskeeper.ProgressKeeper; @@ -106,7 +105,7 @@ public abstract class ModVersionListFragment extends Fragment implements Runn Object forgeVersion = expandableListView.getExpandableListAdapter().getChild(i, i1); ModloaderListenerProxy taskProxy = new ModloaderListenerProxy(); Runnable downloadTask = createDownloadTask(forgeVersion, taskProxy); - setTaskProxy(taskProxy); + setTaskProxyValue(taskProxy); taskProxy.attachListener(this); mExpandableListView.setEnabled(false); new Thread(downloadTask).start(); @@ -118,7 +117,7 @@ public abstract class ModVersionListFragment extends Fragment implements Runn Tools.runOnUiThread(()->{ Context context = requireContext(); getTaskProxy().detachListener(); - setTaskProxy(null); + deleteTaskProxy(); mExpandableListView.setEnabled(true); // Read the comment in FabricInstallFragment.onDownloadFinished() to see how this works getParentFragmentManager().popBackStackImmediate(); @@ -131,7 +130,7 @@ public abstract class ModVersionListFragment extends Fragment implements Runn Tools.runOnUiThread(()->{ Context context = requireContext(); getTaskProxy().detachListener(); - setTaskProxy(null); + deleteTaskProxy(); mExpandableListView.setEnabled(true); Tools.dialog(context, context.getString(R.string.global_error), @@ -144,15 +143,18 @@ public abstract class ModVersionListFragment extends Fragment implements Runn Tools.runOnUiThread(()->{ Context context = requireContext(); getTaskProxy().detachListener(); - setTaskProxy(null); + deleteTaskProxy(); mExpandableListView.setEnabled(true); Tools.showError(context, e); }); } - private void setTaskProxy(ModloaderListenerProxy proxy) { + private void setTaskProxyValue(ModloaderListenerProxy proxy) { ExtraCore.setValue(mExtraTag, proxy); } + private void deleteTaskProxy(){ + ExtraCore.removeValue(mExtraTag); + } private ModloaderListenerProxy getTaskProxy() { return (ModloaderListenerProxy) ExtraCore.getValue(mExtraTag);