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.
This commit is contained in:
alexytomi 2025-06-20 23:21:56 +08:00
parent 66db228605
commit c32f459caf

View File

@ -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<T> 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<T> 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<T> 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<T> 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);