From 3339d256f1e751dce30901c52bd2bd5440ddc0ea Mon Sep 17 00:00:00 2001 From: Tosox <57193602+Tosox@users.noreply.github.com> Date: Sat, 2 May 2026 14:55:56 +0200 Subject: [PATCH] feat: Implement fullInstall flag (#74) Closes #74 --- .../zonerelay/application/InstallCoordinator.java | 4 ++-- .../tosox/zonerelay/domain/port/ArchiveDownloader.java | 2 +- .../infrastructure/download/HttpArchiveDownloader.java | 10 ++++++---- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/tosox/zonerelay/application/InstallCoordinator.java b/src/main/java/de/tosox/zonerelay/application/InstallCoordinator.java index ed9205e..a8caf03 100644 --- a/src/main/java/de/tosox/zonerelay/application/InstallCoordinator.java +++ b/src/main/java/de/tosox/zonerelay/application/InstallCoordinator.java @@ -175,11 +175,11 @@ private void installEntries(List entries, boolean fullInstal ManifestEntry previousEntry = manifestStore.getManifest().getEntry(mod.getId()); DownloadResult result = archiveDownloader.download(mod.getUrl(), mod.getId(), mod.getHash(), - paths.getDownloadsDir().toFile(), currentProgressListener); + paths.getDownloadsDir().toFile(), fullInstall, currentProgressListener); archive = result.archive(); String installedHash = previousEntry != null ? previousEntry.installedHash() : null; - if (installedHash != null && installedHash.equalsIgnoreCase(result.computedHash())) { + if (!fullInstall && installedHash != null && installedHash.equalsIgnoreCase(result.computedHash())) { uiLogger.info(localizer.translate("MSG_ADDON_ALREADY_UP_TO_DATE")); fileLogger.info("Installed hash matches archive, skipping reinstall: %s", mod.getId()); if (entry.getType() != EntryType.SEPARATOR) { diff --git a/src/main/java/de/tosox/zonerelay/domain/port/ArchiveDownloader.java b/src/main/java/de/tosox/zonerelay/domain/port/ArchiveDownloader.java index 1418988..bdb34d8 100644 --- a/src/main/java/de/tosox/zonerelay/domain/port/ArchiveDownloader.java +++ b/src/main/java/de/tosox/zonerelay/domain/port/ArchiveDownloader.java @@ -5,5 +5,5 @@ import java.io.File; public interface ArchiveDownloader { - DownloadResult download(String url, String modId, String declaredHash, File destination, ProgressListener listener) throws Exception; + DownloadResult download(String url, String modId, String declaredHash, File destination, boolean fullInstall, ProgressListener listener) throws Exception; } diff --git a/src/main/java/de/tosox/zonerelay/infrastructure/download/HttpArchiveDownloader.java b/src/main/java/de/tosox/zonerelay/infrastructure/download/HttpArchiveDownloader.java index 5ba587e..8ddaa66 100644 --- a/src/main/java/de/tosox/zonerelay/infrastructure/download/HttpArchiveDownloader.java +++ b/src/main/java/de/tosox/zonerelay/infrastructure/download/HttpArchiveDownloader.java @@ -41,12 +41,14 @@ public HttpArchiveDownloader(@Named("file") Logger logger, HttpClient httpClient } @Override - public DownloadResult download(String url, String modId, String declaredHash, File destination, ProgressListener listener) throws Exception { + public DownloadResult download(String url, String modId, String declaredHash, File destination, boolean fullInstall, ProgressListener listener) throws Exception { ResolveResult resolved = resolveUrl(url); - Optional cached = tryServeFromCache(url, modId, declaredHash, destination, resolved); - if (cached.isPresent()) { - return cached.get(); + if (!fullInstall) { + Optional cached = tryServeFromCache(url, modId, declaredHash, destination, resolved); + if (cached.isPresent()) { + return cached.get(); + } } String filename = filenameResolver.resolve(resolved.url());