This commit is contained in:
machiav3lli
2022-04-01 01:57:13 +02:00
parent 1c7d2e3e08
commit c1a4feb927
6 changed files with 4 additions and 446 deletions

View File

@@ -8,8 +8,6 @@ import android.content.pm.PackageInfo
import android.content.pm.Signature
import android.content.res.Configuration
import android.graphics.drawable.Drawable
import com.fasterxml.jackson.core.JsonGenerator
import com.fasterxml.jackson.core.JsonParser
import com.looker.droidify.BuildConfig
import com.looker.droidify.PREFS_LANGUAGE_DEFAULT
import com.looker.droidify.R
@@ -22,14 +20,10 @@ import com.looker.droidify.service.DownloadService
import com.looker.droidify.utility.extension.android.Android
import com.looker.droidify.utility.extension.android.singleSignature
import com.looker.droidify.utility.extension.android.versionCodeCompat
import com.looker.droidify.utility.extension.json.Json
import com.looker.droidify.utility.extension.json.parseDictionary
import com.looker.droidify.utility.extension.json.writeDictionary
import com.looker.droidify.utility.extension.resources.getDrawableCompat
import com.looker.droidify.utility.extension.text.hex
import com.topjohnwu.superuser.Shell
import kotlinx.coroutines.flow.MutableStateFlow
import java.io.ByteArrayOutputStream
import java.security.MessageDigest
import java.security.cert.Certificate
import java.security.cert.CertificateEncodingException
@@ -175,16 +169,6 @@ object Utils {
}
fun <T> ByteArray.jsonParse(callback: (JsonParser) -> T): T {
return Json.factory.createParser(this).use { it.parseDictionary(callback) }
}
fun jsonGenerate(callback: (JsonGenerator) -> Unit): ByteArray {
val outputStream = ByteArrayOutputStream()
Json.factory.createGenerator(outputStream).use { it.writeDictionary(callback) }
return outputStream.toByteArray()
}
val isDarkTheme: Boolean
get() = when (Preferences[Preferences.Key.Theme]) {
is Preferences.Theme.Light -> false

View File

@@ -2,7 +2,10 @@
package com.looker.droidify.utility.extension.json
import com.fasterxml.jackson.core.*
import com.fasterxml.jackson.core.JsonFactory
import com.fasterxml.jackson.core.JsonParseException
import com.fasterxml.jackson.core.JsonParser
import com.fasterxml.jackson.core.JsonToken
object Json {
val factory = JsonFactory()
@@ -79,50 +82,4 @@ fun JsonParser.collectNotNullStrings(): List<String> {
fun JsonParser.collectDistinctNotEmptyStrings(): List<String> {
return collectNotNullStrings().asSequence().filter { it.isNotEmpty() }.distinct().toList()
}
fun <T> JsonParser.collectList(arrayName: String, callback: JsonParser.() -> T?): MutableList<T> {
val list = mutableListOf<T>()
forEachKey {
when {
it.array(arrayName) ->
list.addAll(
collectNotNull(JsonToken.START_OBJECT) {
callback()
}
)
else -> skipChildren()
}
}
return list
}
inline fun <T> JsonParser.parseDictionary(callback: JsonParser.() -> T): T {
if (nextToken() == JsonToken.START_OBJECT) {
val result = callback()
if (nextToken() != null) {
illegal()
}
return result
} else {
illegal()
}
}
inline fun JsonGenerator.writeDictionary(callback: JsonGenerator.() -> Unit) {
writeStartObject()
callback()
writeEndObject()
}
inline fun JsonGenerator.writeArray(fieldName: String, callback: JsonGenerator.() -> Unit) {
writeArrayFieldStart(fieldName)
callback()
writeEndArray()
}
inline fun <T> JsonGenerator.writeList(listName: String, list: List<T>, callback: T.() -> Unit) {
writeArray(listName) {
list.forEach { writeDictionary { it.callback() } }
}
}