mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-24 03:42:15 +00:00
Update: Migrating Release to a database.entity
This commit is contained in:
parent
67ec9649a8
commit
e95b3aeea3
@ -1,7 +1,7 @@
|
|||||||
package com.looker.droidify.database
|
package com.looker.droidify.database
|
||||||
|
|
||||||
import androidx.room.TypeConverter
|
import androidx.room.TypeConverter
|
||||||
import com.looker.droidify.entity.Release
|
import com.looker.droidify.database.entity.Release
|
||||||
import com.looker.droidify.utility.jsonGenerate
|
import com.looker.droidify.utility.jsonGenerate
|
||||||
import com.looker.droidify.utility.jsonParse
|
import com.looker.droidify.utility.jsonParse
|
||||||
|
|
||||||
|
@ -3,7 +3,6 @@ package com.looker.droidify.database.entity
|
|||||||
import androidx.room.ColumnInfo
|
import androidx.room.ColumnInfo
|
||||||
import androidx.room.Entity
|
import androidx.room.Entity
|
||||||
import com.looker.droidify.entity.ProductItem
|
import com.looker.droidify.entity.ProductItem
|
||||||
import com.looker.droidify.entity.Release
|
|
||||||
|
|
||||||
@Entity(tableName = "product", primaryKeys = ["repository_id", "package_name"])
|
@Entity(tableName = "product", primaryKeys = ["repository_id", "package_name"])
|
||||||
open class Product {
|
open class Product {
|
||||||
|
@ -1,14 +1,16 @@
|
|||||||
package com.looker.droidify.entity
|
package com.looker.droidify.database.entity
|
||||||
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
import androidx.room.Entity
|
||||||
import com.fasterxml.jackson.core.JsonGenerator
|
import com.fasterxml.jackson.core.JsonGenerator
|
||||||
import com.fasterxml.jackson.core.JsonParser
|
import com.fasterxml.jackson.core.JsonParser
|
||||||
import com.fasterxml.jackson.core.JsonToken
|
import com.fasterxml.jackson.core.JsonToken
|
||||||
import com.looker.droidify.database.entity.Repository
|
|
||||||
import com.looker.droidify.utility.extension.json.*
|
import com.looker.droidify.utility.extension.json.*
|
||||||
|
|
||||||
// TODO make a Room entity
|
// TODO make a Room entity
|
||||||
|
@Entity(primaryKeys = ["packageName", "versionCode", "signature"])
|
||||||
data class Release(
|
data class Release(
|
||||||
|
val packageName: String,
|
||||||
val selected: Boolean,
|
val selected: Boolean,
|
||||||
val version: String,
|
val version: String,
|
||||||
val versionCode: Long,
|
val versionCode: Long,
|
||||||
@ -51,6 +53,7 @@ data class Release(
|
|||||||
get() = "${hash.replace('/', '-')}.apk"
|
get() = "${hash.replace('/', '-')}.apk"
|
||||||
|
|
||||||
fun serialize(generator: JsonGenerator) {
|
fun serialize(generator: JsonGenerator) {
|
||||||
|
generator.writeStringField("packageName", packageName)
|
||||||
generator.writeNumberField("serialVersion", 1)
|
generator.writeNumberField("serialVersion", 1)
|
||||||
generator.writeBooleanField("selected", selected)
|
generator.writeBooleanField("selected", selected)
|
||||||
generator.writeStringField("version", version)
|
generator.writeStringField("version", version)
|
||||||
@ -99,6 +102,7 @@ data class Release(
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun deserialize(parser: JsonParser): Release {
|
fun deserialize(parser: JsonParser): Release {
|
||||||
|
var packageName = ""
|
||||||
var selected = false
|
var selected = false
|
||||||
var version = ""
|
var version = ""
|
||||||
var versionCode = 0L
|
var versionCode = 0L
|
||||||
@ -124,6 +128,7 @@ data class Release(
|
|||||||
var incompatibilities = emptyList<Incompatibility>()
|
var incompatibilities = emptyList<Incompatibility>()
|
||||||
parser.forEachKey { it ->
|
parser.forEachKey { it ->
|
||||||
when {
|
when {
|
||||||
|
it.string("packageName") -> packageName = valueAsString
|
||||||
it.boolean("selected") -> selected = valueAsBoolean
|
it.boolean("selected") -> selected = valueAsBoolean
|
||||||
it.string("version") -> version = valueAsString
|
it.string("version") -> version = valueAsString
|
||||||
it.number("versionCode") -> versionCode = valueAsLong
|
it.number("versionCode") -> versionCode = valueAsLong
|
||||||
@ -169,6 +174,7 @@ data class Release(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Release(
|
return Release(
|
||||||
|
packageName,
|
||||||
selected,
|
selected,
|
||||||
version,
|
version,
|
||||||
versionCode,
|
versionCode,
|
@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.JsonGenerator
|
|||||||
import com.fasterxml.jackson.core.JsonParser
|
import com.fasterxml.jackson.core.JsonParser
|
||||||
import com.fasterxml.jackson.core.JsonToken
|
import com.fasterxml.jackson.core.JsonToken
|
||||||
import com.looker.droidify.database.entity.Installed
|
import com.looker.droidify.database.entity.Installed
|
||||||
|
import com.looker.droidify.database.entity.Release
|
||||||
import com.looker.droidify.utility.extension.json.*
|
import com.looker.droidify.utility.extension.json.*
|
||||||
import com.looker.droidify.utility.extension.text.nullIfEmpty
|
import com.looker.droidify.utility.extension.text.nullIfEmpty
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package com.looker.droidify.index
|
package com.looker.droidify.index
|
||||||
|
|
||||||
|
import com.looker.droidify.database.entity.Release
|
||||||
import com.looker.droidify.entity.Product
|
import com.looker.droidify.entity.Product
|
||||||
import com.looker.droidify.entity.Release
|
|
||||||
import com.looker.droidify.utility.extension.android.Android
|
import com.looker.droidify.utility.extension.android.Android
|
||||||
import org.xml.sax.Attributes
|
import org.xml.sax.Attributes
|
||||||
import org.xml.sax.helpers.DefaultHandler
|
import org.xml.sax.helpers.DefaultHandler
|
||||||
@ -116,6 +116,7 @@ class IndexHandler(private val repositoryId: Long, private val callback: Callbac
|
|||||||
}
|
}
|
||||||
|
|
||||||
private class ReleaseBuilder {
|
private class ReleaseBuilder {
|
||||||
|
var packageName = ""
|
||||||
var version = ""
|
var version = ""
|
||||||
var versionCode = 0L
|
var versionCode = 0L
|
||||||
var added = 0L
|
var added = 0L
|
||||||
@ -141,6 +142,7 @@ class IndexHandler(private val repositoryId: Long, private val callback: Callbac
|
|||||||
val obbMainHashType = if (obbMainHash.isNotEmpty()) "sha256" else ""
|
val obbMainHashType = if (obbMainHash.isNotEmpty()) "sha256" else ""
|
||||||
val obbPatchHashType = if (obbPatchHash.isNotEmpty()) "sha256" else ""
|
val obbPatchHashType = if (obbPatchHash.isNotEmpty()) "sha256" else ""
|
||||||
return Release(
|
return Release(
|
||||||
|
packageName,
|
||||||
false,
|
false,
|
||||||
version,
|
version,
|
||||||
versionCode,
|
versionCode,
|
||||||
|
@ -3,8 +3,8 @@ 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.fasterxml.jackson.core.JsonToken
|
||||||
|
import com.looker.droidify.database.entity.Release
|
||||||
import com.looker.droidify.entity.Product
|
import com.looker.droidify.entity.Product
|
||||||
import com.looker.droidify.entity.Release
|
|
||||||
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.Json
|
||||||
|
@ -2,8 +2,8 @@ package com.looker.droidify.index
|
|||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonParser
|
import com.fasterxml.jackson.core.JsonParser
|
||||||
import com.fasterxml.jackson.core.JsonToken
|
import com.fasterxml.jackson.core.JsonToken
|
||||||
|
import com.looker.droidify.database.entity.Release
|
||||||
import com.looker.droidify.entity.Product
|
import com.looker.droidify.entity.Product
|
||||||
import com.looker.droidify.entity.Release
|
|
||||||
import com.looker.droidify.utility.extension.android.Android
|
import com.looker.droidify.utility.extension.android.Android
|
||||||
import com.looker.droidify.utility.extension.json.*
|
import com.looker.droidify.utility.extension.json.*
|
||||||
import com.looker.droidify.utility.extension.text.nullIfEmpty
|
import com.looker.droidify.utility.extension.text.nullIfEmpty
|
||||||
@ -91,7 +91,8 @@ object IndexV1Parser {
|
|||||||
it.dictionary("packages") -> forEachKey {
|
it.dictionary("packages") -> forEachKey {
|
||||||
if (it.token == JsonToken.START_ARRAY) {
|
if (it.token == JsonToken.START_ARRAY) {
|
||||||
val packageName = it.key
|
val packageName = it.key
|
||||||
val releases = collectNotNull(JsonToken.START_OBJECT) { parseRelease() }
|
val releases =
|
||||||
|
collectNotNull(JsonToken.START_OBJECT) { parseRelease(packageName) }
|
||||||
callback.onReleases(packageName, releases)
|
callback.onReleases(packageName, releases)
|
||||||
} else {
|
} else {
|
||||||
skipChildren()
|
skipChildren()
|
||||||
@ -250,7 +251,7 @@ object IndexV1Parser {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun JsonParser.parseRelease(): Release {
|
private fun JsonParser.parseRelease(packageName: String): Release {
|
||||||
var version = ""
|
var version = ""
|
||||||
var versionCode = 0L
|
var versionCode = 0L
|
||||||
var added = 0L
|
var added = 0L
|
||||||
@ -300,6 +301,7 @@ object IndexV1Parser {
|
|||||||
val obbMainHashType = if (obbMainHash.isNotEmpty()) "sha256" else ""
|
val obbMainHashType = if (obbMainHash.isNotEmpty()) "sha256" else ""
|
||||||
val obbPatchHashType = if (obbPatchHash.isNotEmpty()) "sha256" else ""
|
val obbPatchHashType = if (obbPatchHash.isNotEmpty()) "sha256" else ""
|
||||||
return Release(
|
return Release(
|
||||||
|
packageName,
|
||||||
false,
|
false,
|
||||||
version,
|
version,
|
||||||
versionCode,
|
versionCode,
|
||||||
|
@ -4,9 +4,9 @@ import android.content.Context
|
|||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import com.looker.droidify.content.Cache
|
import com.looker.droidify.content.Cache
|
||||||
import com.looker.droidify.database.DatabaseX
|
import com.looker.droidify.database.DatabaseX
|
||||||
|
import com.looker.droidify.database.entity.Release
|
||||||
import com.looker.droidify.database.entity.Repository
|
import com.looker.droidify.database.entity.Repository
|
||||||
import com.looker.droidify.entity.Product
|
import com.looker.droidify.entity.Product
|
||||||
import com.looker.droidify.entity.Release
|
|
||||||
import com.looker.droidify.network.Downloader
|
import com.looker.droidify.network.Downloader
|
||||||
import com.looker.droidify.utility.ProgressInputStream
|
import com.looker.droidify.utility.ProgressInputStream
|
||||||
import com.looker.droidify.utility.RxUtils
|
import com.looker.droidify.utility.RxUtils
|
||||||
|
@ -10,7 +10,7 @@ import androidx.fragment.app.DialogFragment
|
|||||||
import androidx.fragment.app.FragmentManager
|
import androidx.fragment.app.FragmentManager
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import com.looker.droidify.R
|
import com.looker.droidify.R
|
||||||
import com.looker.droidify.entity.Release
|
import com.looker.droidify.database.entity.Release
|
||||||
import com.looker.droidify.ui.fragments.RepositorySheetX
|
import com.looker.droidify.ui.fragments.RepositorySheetX
|
||||||
import com.looker.droidify.utility.KParcelable
|
import com.looker.droidify.utility.KParcelable
|
||||||
import com.looker.droidify.utility.PackageItemResolver
|
import com.looker.droidify.utility.PackageItemResolver
|
||||||
|
@ -9,8 +9,8 @@ import android.view.ContextThemeWrapper
|
|||||||
import androidx.core.app.NotificationCompat
|
import androidx.core.app.NotificationCompat
|
||||||
import com.looker.droidify.*
|
import com.looker.droidify.*
|
||||||
import com.looker.droidify.content.Cache
|
import com.looker.droidify.content.Cache
|
||||||
|
import com.looker.droidify.database.entity.Release
|
||||||
import com.looker.droidify.database.entity.Repository
|
import com.looker.droidify.database.entity.Repository
|
||||||
import com.looker.droidify.entity.Release
|
|
||||||
import com.looker.droidify.installer.AppInstaller
|
import com.looker.droidify.installer.AppInstaller
|
||||||
import com.looker.droidify.network.Downloader
|
import com.looker.droidify.network.Downloader
|
||||||
import com.looker.droidify.ui.activities.MainActivityX
|
import com.looker.droidify.ui.activities.MainActivityX
|
||||||
|
@ -44,10 +44,10 @@ import com.looker.droidify.R
|
|||||||
import com.looker.droidify.content.Preferences
|
import com.looker.droidify.content.Preferences
|
||||||
import com.looker.droidify.content.ProductPreferences
|
import com.looker.droidify.content.ProductPreferences
|
||||||
import com.looker.droidify.database.entity.Installed
|
import com.looker.droidify.database.entity.Installed
|
||||||
|
import com.looker.droidify.database.entity.Release
|
||||||
import com.looker.droidify.database.entity.Repository
|
import com.looker.droidify.database.entity.Repository
|
||||||
import com.looker.droidify.entity.Product
|
import com.looker.droidify.entity.Product
|
||||||
import com.looker.droidify.entity.ProductPreference
|
import com.looker.droidify.entity.ProductPreference
|
||||||
import com.looker.droidify.entity.Release
|
|
||||||
import com.looker.droidify.network.CoilDownloader
|
import com.looker.droidify.network.CoilDownloader
|
||||||
import com.looker.droidify.screen.ScreenshotsAdapter
|
import com.looker.droidify.screen.ScreenshotsAdapter
|
||||||
import com.looker.droidify.utility.KParcelable
|
import com.looker.droidify.utility.KParcelable
|
||||||
@ -1412,13 +1412,6 @@ class AppDetailAdapter(private val callbacks: Callbacks) :
|
|||||||
holder.packageName.text = item.packageName
|
holder.packageName.text = item.packageName
|
||||||
}
|
}
|
||||||
}::class
|
}::class
|
||||||
}
|
|
||||||
|
|
||||||
private fun formatHtml(text: String): SpannableStringBuilder {
|
|
||||||
val html = HtmlCompat.fromHtml(text, HtmlCompat.FROM_HTML_MODE_LEGACY)
|
|
||||||
val builder = run {
|
|
||||||
val builder = SpannableStringBuilder(html)
|
|
||||||
val last = builder.indexOfLast { it != '\n' }
|
|
||||||
val first = builder.indexOfFirst { it != '\n' }
|
val first = builder.indexOfFirst { it != '\n' }
|
||||||
if (last >= 0) {
|
if (last >= 0) {
|
||||||
builder.delete(last + 1, builder.length)
|
builder.delete(last + 1, builder.length)
|
||||||
|
@ -17,10 +17,10 @@ import androidx.recyclerview.widget.RecyclerView
|
|||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import com.looker.droidify.R
|
import com.looker.droidify.R
|
||||||
import com.looker.droidify.content.ProductPreferences
|
import com.looker.droidify.content.ProductPreferences
|
||||||
|
import com.looker.droidify.database.entity.Release
|
||||||
import com.looker.droidify.database.entity.Repository
|
import com.looker.droidify.database.entity.Repository
|
||||||
import com.looker.droidify.entity.Product
|
import com.looker.droidify.entity.Product
|
||||||
import com.looker.droidify.entity.ProductPreference
|
import com.looker.droidify.entity.ProductPreference
|
||||||
import com.looker.droidify.entity.Release
|
|
||||||
import com.looker.droidify.installer.AppInstaller
|
import com.looker.droidify.installer.AppInstaller
|
||||||
import com.looker.droidify.screen.MessageDialog
|
import com.looker.droidify.screen.MessageDialog
|
||||||
import com.looker.droidify.screen.ScreenFragment
|
import com.looker.droidify.screen.ScreenFragment
|
||||||
|
Loading…
x
Reference in New Issue
Block a user