mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-24 03:42:15 +00:00
Update Migrate IndexMerger and ProductPreferences to use k-serialization
This commit is contained in:
parent
82d00ac6d6
commit
1c7d2e3e08
@ -5,9 +5,6 @@ import android.content.SharedPreferences
|
|||||||
import com.looker.droidify.database.DatabaseX
|
import com.looker.droidify.database.DatabaseX
|
||||||
import com.looker.droidify.database.entity.Lock
|
import com.looker.droidify.database.entity.Lock
|
||||||
import com.looker.droidify.entity.ProductPreference
|
import com.looker.droidify.entity.ProductPreference
|
||||||
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 kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||||
@ -52,8 +49,7 @@ object ProductPreferences {
|
|||||||
operator fun get(packageName: String): ProductPreference {
|
operator fun get(packageName: String): ProductPreference {
|
||||||
return if (preferences.contains(packageName)) {
|
return if (preferences.contains(packageName)) {
|
||||||
try {
|
try {
|
||||||
Json.factory.createParser(preferences.getString(packageName, "{}"))
|
ProductPreference.fromJson(preferences.getString(packageName, "{}") ?: "{}")
|
||||||
.use { it.parseDictionary(ProductPreference.Companion::deserialize) }
|
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
defaultProductPreference
|
defaultProductPreference
|
||||||
@ -66,10 +62,7 @@ object ProductPreferences {
|
|||||||
operator fun set(packageName: String, productPreference: ProductPreference) {
|
operator fun set(packageName: String, productPreference: ProductPreference) {
|
||||||
val oldProductPreference = this[packageName]
|
val oldProductPreference = this[packageName]
|
||||||
preferences.edit().putString(packageName, ByteArrayOutputStream()
|
preferences.edit().putString(packageName, ByteArrayOutputStream()
|
||||||
.apply {
|
.apply { write(productPreference.toJSON().toByteArray()) }
|
||||||
Json.factory.createGenerator(this)
|
|
||||||
.use { it.writeDictionary(productPreference::serialize) }
|
|
||||||
}
|
|
||||||
.toByteArray().toString(Charset.defaultCharset())).apply()
|
.toByteArray().toString(Charset.defaultCharset())).apply()
|
||||||
if (oldProductPreference.ignoreUpdates != productPreference.ignoreUpdates ||
|
if (oldProductPreference.ignoreUpdates != productPreference.ignoreUpdates ||
|
||||||
oldProductPreference.ignoreVersionCode != productPreference.ignoreVersionCode
|
oldProductPreference.ignoreVersionCode != productPreference.ignoreVersionCode
|
||||||
|
@ -2,14 +2,12 @@ package com.looker.droidify.index
|
|||||||
|
|
||||||
import android.content.ContentValues
|
import android.content.ContentValues
|
||||||
import android.database.sqlite.SQLiteDatabase
|
import android.database.sqlite.SQLiteDatabase
|
||||||
import com.fasterxml.jackson.core.JsonToken
|
import com.looker.droidify.database.Converters.toByteArray
|
||||||
|
import com.looker.droidify.database.Converters.toReleases
|
||||||
import com.looker.droidify.database.entity.Release
|
import com.looker.droidify.database.entity.Release
|
||||||
import com.looker.droidify.entity.Product
|
import com.looker.droidify.entity.Product
|
||||||
import com.looker.droidify.utility.extension.android.asSequence
|
import com.looker.droidify.utility.extension.android.asSequence
|
||||||
import com.looker.droidify.utility.extension.android.execWithResult
|
import com.looker.droidify.utility.extension.android.execWithResult
|
||||||
import com.looker.droidify.utility.extension.json.Json
|
|
||||||
import com.looker.droidify.utility.extension.json.collectNotNull
|
|
||||||
import com.looker.droidify.utility.extension.json.writeDictionary
|
|
||||||
import java.io.ByteArrayOutputStream
|
import java.io.ByteArrayOutputStream
|
||||||
import java.io.Closeable
|
import java.io.Closeable
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@ -28,8 +26,7 @@ class IndexMerger(file: File) : Closeable {
|
|||||||
fun addProducts(products: List<Product>) {
|
fun addProducts(products: List<Product>) {
|
||||||
for (product in products) {
|
for (product in products) {
|
||||||
val outputStream = ByteArrayOutputStream()
|
val outputStream = ByteArrayOutputStream()
|
||||||
Json.factory.createGenerator(outputStream)
|
outputStream.write(product.toJSON().toByteArray())
|
||||||
.use { it.writeDictionary(product::serialize) }
|
|
||||||
db.insert("product", null, ContentValues().apply {
|
db.insert("product", null, ContentValues().apply {
|
||||||
put("package_name", product.packageName)
|
put("package_name", product.packageName)
|
||||||
put("description", product.description)
|
put("description", product.description)
|
||||||
@ -42,13 +39,7 @@ class IndexMerger(file: File) : Closeable {
|
|||||||
for (pair in pairs) {
|
for (pair in pairs) {
|
||||||
val (packageName, releases) = pair
|
val (packageName, releases) = pair
|
||||||
val outputStream = ByteArrayOutputStream()
|
val outputStream = ByteArrayOutputStream()
|
||||||
Json.factory.createGenerator(outputStream).use {
|
outputStream.write(toByteArray(releases))
|
||||||
it.writeStartArray()
|
|
||||||
for (release in releases) {
|
|
||||||
it.writeDictionary(release::serialize)
|
|
||||||
}
|
|
||||||
it.writeEndArray()
|
|
||||||
}
|
|
||||||
db.insert("releases", null, ContentValues().apply {
|
db.insert("releases", null, ContentValues().apply {
|
||||||
put("package_name", packageName)
|
put("package_name", packageName)
|
||||||
put("data", outputStream.toByteArray())
|
put("data", outputStream.toByteArray())
|
||||||
@ -72,22 +63,11 @@ class IndexMerger(file: File) : Closeable {
|
|||||||
?.use { it ->
|
?.use { it ->
|
||||||
it.asSequence().map {
|
it.asSequence().map {
|
||||||
val description = it.getString(0)
|
val description = it.getString(0)
|
||||||
val product = Json.factory.createParser(it.getBlob(1)).use {
|
val product = Product.fromJson(String(it.getBlob(1))).apply {
|
||||||
it.nextToken()
|
|
||||||
Product.deserialize(it).apply {
|
|
||||||
this.repositoryId = repositoryId
|
this.repositoryId = repositoryId
|
||||||
this.description = description
|
this.description = description
|
||||||
}
|
}
|
||||||
}
|
val releases = it.getBlob(2)?.let { toReleases(it) }.orEmpty()
|
||||||
val releases = it.getBlob(2)?.let {
|
|
||||||
Json.factory.createParser(it).use {
|
|
||||||
it.nextToken()
|
|
||||||
it.collectNotNull(
|
|
||||||
JsonToken.START_OBJECT,
|
|
||||||
Release.Companion::deserialize
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}.orEmpty()
|
|
||||||
product.copy(releases = releases)
|
product.copy(releases = releases)
|
||||||
}.windowed(windowSize, windowSize, true)
|
}.windowed(windowSize, windowSize, true)
|
||||||
.forEach { products -> callback(products, it.count) }
|
.forEach { products -> callback(products, it.count) }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user