From a06da53ec9bf67bc50e84653d4b1ba3bc53ebf87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=9E=E5=BA=90?= <109708109+CiiLu@users.noreply.github.com> Date: Mon, 30 Mar 2026 21:04:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B8=85=E7=90=86=E6=B8=B8?= =?UTF-8?q?=E6=88=8F=E8=B5=84=E6=BA=90=20/=20=E5=BA=93=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E5=9C=A8=20FXThread=20=E8=BF=90=E8=A1=8C=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=20(#5301)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Glavo Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../hmcl/ui/versions/VersionPage.java | 37 +++++++++++++++---- 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java index 0184026260..26bb629807 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/VersionPage.java @@ -30,8 +30,10 @@ import org.jackhuang.hmcl.event.EventBus; import org.jackhuang.hmcl.event.EventPriority; import org.jackhuang.hmcl.event.RefreshedVersionsEvent; import org.jackhuang.hmcl.game.GameRepository; -import org.jackhuang.hmcl.game.HMCLGameRepository; import org.jackhuang.hmcl.setting.Profile; +import org.jackhuang.hmcl.task.Schedulers; +import org.jackhuang.hmcl.task.Task; +import org.jackhuang.hmcl.ui.Controllers; import org.jackhuang.hmcl.ui.FXUtils; import org.jackhuang.hmcl.ui.SVG; import org.jackhuang.hmcl.ui.WeakListenerHolder; @@ -39,8 +41,10 @@ import org.jackhuang.hmcl.ui.animation.TransitionPane; import org.jackhuang.hmcl.ui.construct.*; import org.jackhuang.hmcl.ui.decorator.DecoratorAnimatedPage; import org.jackhuang.hmcl.ui.decorator.DecoratorPage; +import org.jackhuang.hmcl.util.StringUtils; import org.jackhuang.hmcl.util.io.FileUtils; +import java.nio.file.Path; import java.util.Optional; import java.util.function.Supplier; @@ -186,15 +190,34 @@ public class VersionPage extends DecoratorAnimatedPage implements DecoratorPage } private void clearLibraries() { - FileUtils.deleteDirectoryQuietly(getProfile().getRepository().getBaseDirectory().resolve("libraries")); + var libraries = getProfile().getRepository().getBaseDirectory().resolve("libraries"); + Task.runAsync(Schedulers.io(), () -> { + FileUtils.deleteDirectoryQuietly(libraries); + }).whenComplete(Schedulers.javafx(), (exception) -> { + if (exception != null) { + Controllers.dialog(i18n("message.failed") + "\n" + StringUtils.getStackTrace(exception), i18n("message.error"), MessageDialogPane.MessageType.ERROR); + } + }).start(); } private void clearAssets() { - HMCLGameRepository baseDirectory = getProfile().getRepository(); - FileUtils.deleteDirectoryQuietly(baseDirectory.getBaseDirectory().resolve("assets")); - if (version.get() != null) { - FileUtils.deleteDirectoryQuietly(baseDirectory.getRunDirectory(version.get().getVersion()).resolve("resources")); - } + Path assetsDir = getProfile().getRepository().getBaseDirectory().resolve("assets"); + + Profile.ProfileVersion currentVersion = version.get(); + Path resourcesDir = currentVersion != null + ? getProfile().getRepository().getRunDirectory(currentVersion.getVersion()).resolve("resources") + : null; + + Task.runAsync(Schedulers.io(), () -> { + FileUtils.deleteDirectoryQuietly(assetsDir); + if (resourcesDir != null) { + FileUtils.deleteDirectoryQuietly(resourcesDir); + } + }).whenComplete(Schedulers.javafx(), (exception) -> { + if (exception != null) { + Controllers.dialog(i18n("message.failed") + "\n" + StringUtils.getStackTrace(exception), i18n("message.error"), MessageDialogPane.MessageType.ERROR); + } + }).start(); } private void clearJunkFiles() {