From 20ef62f4fee05decd1ad432d2b9916f6ec6bf395 Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Sun, 25 Dec 2022 21:25:32 +0530 Subject: [PATCH] feat: extract color schemes based on scheme.version property --- .../androidide/managers/ToolsManager.java | 45 +++++++++++++++++- tests/test-home/.androidide/init/model.jar | Bin 65261 -> 65261 bytes 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/com/itsaky/androidide/managers/ToolsManager.java b/common/src/main/java/com/itsaky/androidide/managers/ToolsManager.java index 4e4f8376a..017408570 100755 --- a/common/src/main/java/com/itsaky/androidide/managers/ToolsManager.java +++ b/common/src/main/java/com/itsaky/androidide/managers/ToolsManager.java @@ -30,7 +30,11 @@ import com.itsaky.androidide.utils.ILogger; import org.jetbrains.annotations.Contract; import java.io.File; +import java.io.FileReader; import java.io.IOException; +import java.io.InputStreamReader; +import java.util.Arrays; +import java.util.Properties; import java.util.concurrent.CompletableFuture; public class ToolsManager { @@ -84,7 +88,8 @@ public class ToolsManager { for (final String asset : app.getAssets().list(defPath)) { final var prop = new File(dir, asset + "/" + "scheme.prop"); - if (prop.exists()) { + if (prop.exists() + && !shouldExtractScheme(app, new File(dir, asset), defPath + "/" + asset)) { continue; } @@ -100,6 +105,44 @@ public class ToolsManager { } } + private static boolean shouldExtractScheme( + final BaseApplication app, final File dir, final String path) throws IOException { + + final var schemePropFile = new File(dir, "scheme.dir"); + if (!schemePropFile.exists()) { + return true; + } + + final var files = app.getAssets().list(path); + if (Arrays.stream(files).noneMatch("scheme.prop"::equals)) { + // no scheme.prop file + return true; + } + + try { + final var props = new Properties(); + props.load(new InputStreamReader(app.getAssets().open(path + "/scheme.prop"))); + + final var version = Integer.parseInt(props.getProperty("scheme.version", "0")); + if (version == 0) { + return true; + } + + props.clear(); + + props.load(new FileReader(schemePropFile)); + final var fileVersion = Integer.parseInt(props.getProperty("scheme.version", "0")); + if (fileVersion < 0) { + return true; + } + + return version > fileVersion; + } catch (Throwable err) { + LOG.error("Failed to read color scheme version for scheme '" + path + "'", err); + return false; + } + } + private static void writeNoMediaFile() { final var noMedia = new File(BaseApplication.getBaseInstance().getProjectsDir(), ".nomedia"); if (!noMedia.exists()) { diff --git a/tests/test-home/.androidide/init/model.jar b/tests/test-home/.androidide/init/model.jar index 2fe3903109acd8b9910481153fbac862ce86ef21..e9472de8887a9608d30b48af18f51a37c8ad0fd8 100644 GIT binary patch delta 31 ncmaF+m-+2qW}X0VW)?061`ZB}$E!B-_`PR(ylQjI`-%Jjz61