From 6c088c46709a84cf6ae6ec0b35be9d25278784c7 Mon Sep 17 00:00:00 2001 From: Linnea Gräf Date: Sat, 6 Apr 2024 01:12:24 +0200 Subject: Backend: Add feature toggle adapter to automatically turn on features (#581) Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com> --- src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/main/java/at/hannibal2/skyhanni/config') diff --git a/src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt b/src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt index 51ed30ff4..b81e1efb8 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt +++ b/src/main/java/at/hannibal2/skyhanni/config/ConfigManager.kt @@ -9,6 +9,7 @@ import at.hannibal2.skyhanni.data.jsonobjects.local.VisualWordsJson import at.hannibal2.skyhanni.data.jsonobjects.other.HypixelApiTrophyFish import at.hannibal2.skyhanni.features.fishing.trophy.TrophyRarity import at.hannibal2.skyhanni.features.misc.update.UpdateManager +import at.hannibal2.skyhanni.utils.FeatureTogglesByDefaultAdapter import at.hannibal2.skyhanni.utils.KotlinTypeAdapterFactory import at.hannibal2.skyhanni.utils.LorenzLogger import at.hannibal2.skyhanni.utils.LorenzRarity @@ -24,6 +25,7 @@ import at.hannibal2.skyhanni.utils.tracker.SkyHanniTracker import com.google.gson.GsonBuilder import com.google.gson.JsonObject import com.google.gson.TypeAdapter +import com.google.gson.TypeAdapterFactory import com.google.gson.stream.JsonReader import com.google.gson.stream.JsonToken import com.google.gson.stream.JsonWriter @@ -48,12 +50,20 @@ import kotlin.concurrent.fixedRateTimer typealias TrackerDisplayMode = SkyHanniTracker.DefaultDisplayMode +private fun GsonBuilder.reigsterIfBeta(create: TypeAdapterFactory): GsonBuilder { + val isBeta = SkyHanniMod.version.contains("beta", ignoreCase = true) + return if (isBeta) { + registerTypeAdapterFactory(create) + } else this +} + class ConfigManager { companion object { val gson = GsonBuilder().setPrettyPrinting() .excludeFieldsWithoutExposeAnnotation() .serializeSpecialFloatingPointValues() + .reigsterIfBeta(FeatureTogglesByDefaultAdapter) .registerTypeAdapterFactory(PropertyTypeAdapterFactory()) .registerTypeAdapterFactory(KotlinTypeAdapterFactory()) .registerTypeAdapter(UUID::class.java, object : TypeAdapter() { -- cgit