diff --git a/app/src/androidTest/java/xyz/quaver/pupil/ExampleInstrumentedTest.kt b/app/src/androidTest/java/xyz/quaver/pupil/ExampleInstrumentedTest.kt index 4f3ce3c8..801d8d34 100644 --- a/app/src/androidTest/java/xyz/quaver/pupil/ExampleInstrumentedTest.kt +++ b/app/src/androidTest/java/xyz/quaver/pupil/ExampleInstrumentedTest.kt @@ -25,6 +25,10 @@ import android.util.Log import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry import androidx.test.rule.ActivityTestRule +import kotlinx.serialization.ImplicitReflectionSerializer +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonConfiguration +import kotlinx.serialization.json.JsonObject import org.junit.Assert.assertEquals import org.junit.Test import org.junit.runner.RunWith @@ -34,6 +38,7 @@ import xyz.quaver.hiyobi.getReader import xyz.quaver.hiyobi.user_agent import xyz.quaver.pupil.ui.LockActivity import xyz.quaver.pupil.util.getDownloadDirectory +import java.io.File import java.net.URL import javax.net.ssl.HttpsURLConnection @@ -63,7 +68,7 @@ class ExampleInstrumentedTest { @Test fun test_doSearch() { - val reader = getReader(1426382) + val reader = getReader( 1426382) val data: ByteArray @@ -76,4 +81,31 @@ class ExampleInstrumentedTest { Log.d("Pupil", data.size.toString()) } + + @UseExperimental(ImplicitReflectionSerializer::class) + @Test + fun test_deleteCodeFromReader() { + val context = InstrumentationRegistry.getInstrumentation().targetContext + + val json = Json(JsonConfiguration.Stable) + + listOf( + getDownloadDirectory(context), + File(context.cacheDir, "imageCache") + ).forEach { root -> + root.listFiles()?.forEach gallery@{ gallery -> + val reader = json.parseJson(File(gallery, "reader.json").apply { + if (!exists()) + return@gallery + }.readText()) + .jsonObject.toMutableMap() + + Log.d("PUPILD", gallery.name) + + reader.remove("code") + + File(gallery, "reader.json").writeText(JsonObject(reader).toString()) + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/xyz/quaver/pupil/util/update.kt b/app/src/main/java/xyz/quaver/pupil/util/update.kt index 1c48f8e5..31e4fda0 100644 --- a/app/src/main/java/xyz/quaver/pupil/util/update.kt +++ b/app/src/main/java/xyz/quaver/pupil/util/update.kt @@ -18,8 +18,13 @@ package xyz.quaver.pupil.util +import android.content.Context +import kotlinx.serialization.ImplicitReflectionSerializer import kotlinx.serialization.json.* +import xyz.quaver.availableInHiyobi +import xyz.quaver.hitomi.Reader import xyz.quaver.pupil.BuildConfig +import java.io.File import java.net.URL fun getReleases(url: String) : JsonArray { @@ -61,4 +66,48 @@ fun getApkUrl(releases: JsonObject) : Pair? { else Pair(it.jsonObject["browser_download_url"]?.content, it.jsonObject["name"]?.content) } +} + +fun getOldReaderGalleries(context: Context) : List { + val oldGallery = mutableListOf() + + listOf( + getDownloadDirectory(context), + File(context.cacheDir, "imageCache") + ).forEach { root -> + root.listFiles()?.forEach { gallery -> + File(gallery, "reader.json").let { readerFile -> + if (!readerFile.exists()) + return@let + + Json(JsonConfiguration.Stable).parseJson(readerFile.readText()).jsonObject.let { reader -> + if (!reader.contains("code")) + oldGallery.add(gallery) + } + } + } + } + + return oldGallery +} + +@UseExperimental(ImplicitReflectionSerializer::class) +fun updateOldReaderGalleries(context: Context) { + + val json = Json(JsonConfiguration.Stable) + + getOldReaderGalleries(context).forEach { gallery -> + val reader = json.parseJson(File(gallery, "reader.json").readText()) + .jsonObject.toMutableMap() + + reader["code"] = when { + (File(gallery, "images").list()?. + all { !it.endsWith("webp") } ?: return@forEach) && + availableInHiyobi(gallery.name.toInt()) -> json.toJson(Reader.Code.HIYOBI) + else -> json.toJson(Reader.Code.HITOMI) + } + + File(gallery, "reader.json").writeText(JsonObject(reader).toString()) + } + } \ No newline at end of file