From 71e35ead5b893a1b776593967ccb390caaa1ea32 Mon Sep 17 00:00:00 2001 From: rushiiMachine <33725716+rushiiMachine@users.noreply.github.com> Date: Fri, 12 Jan 2024 14:40:43 -0800 Subject: [PATCH] refactor(Plugin): use native zip for loading manifest --- .../aliucord/manager/domain/model/Plugin.kt | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/app/src/main/kotlin/com/aliucord/manager/domain/model/Plugin.kt b/app/src/main/kotlin/com/aliucord/manager/domain/model/Plugin.kt index 8cfd131..1672162 100644 --- a/app/src/main/kotlin/com/aliucord/manager/domain/model/Plugin.kt +++ b/app/src/main/kotlin/com/aliucord/manager/domain/model/Plugin.kt @@ -6,28 +6,26 @@ package com.aliucord.manager.domain.model import androidx.compose.runtime.Immutable +import com.github.diamondminer88.zip.ZipReader import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.json.Json import kotlinx.serialization.json.decodeFromStream +import org.koin.core.context.GlobalContext import java.io.File -import java.util.zip.ZipException -import java.util.zip.ZipFile -private val json = Json { - ignoreUnknownKeys = true -} +private val json: Json = GlobalContext.get().get() -@OptIn(ExperimentalSerializationApi::class) @Immutable data class Plugin(val file: File) { val manifest: Manifest init { - ZipFile(file).use { zipFile -> - val entry = zipFile.getEntry("manifest.json") - ?: throw ZipException("Plugin ${file.nameWithoutExtension} has no manifest.") + ZipReader(file).use { + val manifest = it.openEntry("manifest.json") + ?: throw Exception("Plugin ${file.nameWithoutExtension} has no manifest.") - manifest = zipFile.getInputStream(entry).use { zis -> json.decodeFromStream(zis) } + @OptIn(ExperimentalSerializationApi::class) + this.manifest = json.decodeFromStream(manifest.read().inputStream()) } } }