From 97e8e30c4ad0b78d50698a87b22376fddc2cace0 Mon Sep 17 00:00:00 2001 From: Alexander Martinz Date: Thu, 8 Jan 2026 11:16:57 +0100 Subject: [PATCH] model: Repository: add icon We want to use the icon of the repository later on to e.g.: show the repo icon in the repository list. Signed-off-by: Alexander Martinz --- .../com/looker/droidify/index/RepositoryUpdaterTest.kt | 1 + .../kotlin/com/looker/droidify/index/IndexV1Parser.kt | 9 +++++++-- .../com/looker/droidify/index/RepositoryUpdater.kt | 2 ++ .../main/kotlin/com/looker/droidify/model/Repository.kt | 8 ++++++-- .../utility/serialization/RepositorySerialization.kt | 5 ++++- 5 files changed, 20 insertions(+), 5 deletions(-) diff --git a/app/src/androidTest/kotlin/com/looker/droidify/index/RepositoryUpdaterTest.kt b/app/src/androidTest/kotlin/com/looker/droidify/index/RepositoryUpdaterTest.kt index 635025338..a17c69378 100644 --- a/app/src/androidTest/kotlin/com/looker/droidify/index/RepositoryUpdaterTest.kt +++ b/app/src/androidTest/kotlin/com/looker/droidify/index/RepositoryUpdaterTest.kt @@ -44,6 +44,7 @@ class RepositoryUpdaterTest { updated = 1735315749835, timestamp = 1725352450000, authentication = "", + icon = "izzy-on-droid.png", ) } diff --git a/app/src/main/kotlin/com/looker/droidify/index/IndexV1Parser.kt b/app/src/main/kotlin/com/looker/droidify/index/IndexV1Parser.kt index 0aeacd986..d0aed6b86 100644 --- a/app/src/main/kotlin/com/looker/droidify/index/IndexV1Parser.kt +++ b/app/src/main/kotlin/com/looker/droidify/index/IndexV1Parser.kt @@ -35,7 +35,8 @@ object IndexV1Parser { name: String, description: String, version: Int, - timestamp: Long + timestamp: Long, + icon: String, ) fun onProduct(product: Product) @@ -163,6 +164,7 @@ object IndexV1Parser { private const val KEY_REPO_DESC = "description" private const val KEY_REPO_VER = "version" private const val KEY_REPO_TIME = "timestamp" + private const val KEY_REPO_ICON = "icon" fun parse(repositoryId: Long, inputStream: InputStream, callback: Callback) { val jsonParser = Json.factory.createParser(inputStream) @@ -178,6 +180,7 @@ object IndexV1Parser { var description = "" var version = 0 var timestamp = 0L + var icon = "" forEachKey { when { it.string(KEY_REPO_ADDRESS) -> address = valueAsString @@ -188,6 +191,7 @@ object IndexV1Parser { it.string(KEY_REPO_DESC) -> description = valueAsString it.number(KEY_REPO_VER) -> version = valueAsInt it.number(KEY_REPO_TIME) -> timestamp = valueAsLong + it.number(KEY_REPO_ICON) -> icon = valueAsString else -> skipChildren() } } @@ -203,7 +207,8 @@ object IndexV1Parser { name = name, description = description, version = version, - timestamp = timestamp + timestamp = timestamp, + icon = icon, ) } diff --git a/app/src/main/kotlin/com/looker/droidify/index/RepositoryUpdater.kt b/app/src/main/kotlin/com/looker/droidify/index/RepositoryUpdater.kt index 7775dfbcf..7a2045eee 100644 --- a/app/src/main/kotlin/com/looker/droidify/index/RepositoryUpdater.kt +++ b/app/src/main/kotlin/com/looker/droidify/index/RepositoryUpdater.kt @@ -262,6 +262,7 @@ object RepositoryUpdater { description: String, version: Int, timestamp: Long, + icon: String, ) { changedRepository = repository.update( mirrors, @@ -271,6 +272,7 @@ object RepositoryUpdater { lastModified, entityTag, timestamp, + icon, ) } diff --git a/app/src/main/kotlin/com/looker/droidify/model/Repository.kt b/app/src/main/kotlin/com/looker/droidify/model/Repository.kt index 0761cb755..2d98414ab 100644 --- a/app/src/main/kotlin/com/looker/droidify/model/Repository.kt +++ b/app/src/main/kotlin/com/looker/droidify/model/Repository.kt @@ -16,6 +16,7 @@ data class Repository( val updated: Long, val timestamp: Long, val authentication: String, + val icon: String, ) { fun edit(address: String, fingerprint: String, authentication: String): Repository { @@ -39,6 +40,7 @@ data class Repository( lastModified: String, entityTag: String, timestamp: Long, + icon: String, ): Repository { return copy( mirrors = mirrors, @@ -48,7 +50,8 @@ data class Repository( lastModified = lastModified, entityTag = entityTag, updated = System.currentTimeMillis(), - timestamp = timestamp + timestamp = timestamp, + icon = icon, ) } @@ -80,10 +83,11 @@ data class Repository( enabled: Boolean = false, fingerprint: String, authentication: String = "", + icon: String = "", ): Repository { return Repository( -1, address, emptyList(), name, description, version, enabled, - fingerprint, "", "", 0L, 0L, authentication + fingerprint, "", "", 0L, 0L, authentication, icon ) } diff --git a/app/src/main/kotlin/com/looker/droidify/utility/serialization/RepositorySerialization.kt b/app/src/main/kotlin/com/looker/droidify/utility/serialization/RepositorySerialization.kt index 8fde8e506..a4452cc41 100644 --- a/app/src/main/kotlin/com/looker/droidify/utility/serialization/RepositorySerialization.kt +++ b/app/src/main/kotlin/com/looker/droidify/utility/serialization/RepositorySerialization.kt @@ -22,6 +22,7 @@ fun Repository.serialize(generator: JsonGenerator) { generator.writeNumberField("updated", updated) generator.writeNumberField("timestamp", timestamp) generator.writeStringField("authentication", authentication) + generator.writeStringField("icon", icon) } fun JsonParser.repository(): Repository { @@ -38,6 +39,7 @@ fun JsonParser.repository(): Repository { var updated = 0L var timestamp = 0L var authentication = "" + var icon = "" forEachKey { when { it.string("id") -> id = valueAsLong @@ -53,11 +55,12 @@ fun JsonParser.repository(): Repository { it.number("updated") -> updated = valueAsLong it.number("timestamp") -> timestamp = valueAsLong it.string("authentication") -> authentication = valueAsString + it.string("icon") -> icon = valueAsString else -> skipChildren() } } return Repository( id, address, mirrors, name, description, version, enabled, fingerprint, - lastModified, entityTag, updated, timestamp, authentication + lastModified, entityTag, updated, timestamp, authentication, icon ) }