From 1956ba7a73e42af374ba779dc18c5cdf7d2bcfe1 Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Thu, 25 Apr 2019 13:39:07 +0800 Subject: [PATCH] Force refreshing version list when remove version from disk --- .../jackhuang/hmcl/ui/versions/Versions.java | 4 +- .../hmcl/game/DefaultGameRepository.java | 38 ++++++++++--------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/Versions.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/Versions.java index 45c91f1c1..3b11ba645 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/Versions.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/versions/Versions.java @@ -50,9 +50,7 @@ public class Versions { isMovingToTrashSupported ? i18n("version.manage.remove.confirm.trash", version, version + "_removed") : i18n("version.manage.remove.confirm", version); Controllers.confirmDialog(message, i18n("message.confirm"), () -> { - if (profile.getRepository().removeVersionFromDisk(version)) { - profile.getRepository().refreshVersionsAsync().start(); - } + profile.getRepository().removeVersionFromDisk(version); }, null); } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/DefaultGameRepository.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/DefaultGameRepository.java index 39ee352e3..e9da804d9 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/game/DefaultGameRepository.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/game/DefaultGameRepository.java @@ -166,25 +166,29 @@ public class DefaultGameRepository implements GameRepository { if (!file.renameTo(removedFile)) return false; - versions.remove(id); - - if (FileUtils.isMovingToTrashSupported() && FileUtils.moveToTrash(removedFile)) { - return true; - } - - // remove json files first to ensure HMCL will not recognize this folder as a valid version. - List jsons = FileUtils.listFilesByExtension(removedFile, "json"); - jsons.forEach(f -> { - if (!f.delete()) - LOG.warning("Unable to delete file " + f); - }); - // remove the version from version list regardless of whether the directory was removed successfully or not. try { - FileUtils.deleteDirectory(removedFile); - } catch (IOException e) { - LOG.log(Level.WARNING, "Unable to remove version folder: " + file, e); + versions.remove(id); + + if (FileUtils.isMovingToTrashSupported() && FileUtils.moveToTrash(removedFile)) { + return true; + } + + // remove json files first to ensure HMCL will not recognize this folder as a valid version. + List jsons = FileUtils.listFilesByExtension(removedFile, "json"); + jsons.forEach(f -> { + if (!f.delete()) + LOG.warning("Unable to delete file " + f); + }); + // remove the version from version list regardless of whether the directory was removed successfully or not. + try { + FileUtils.deleteDirectory(removedFile); + } catch (IOException e) { + LOG.log(Level.WARNING, "Unable to remove version folder: " + file, e); + } + return true; + } finally { + refreshVersionsAsync().start(); } - return true; } protected void refreshVersionsImpl() {