mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-28 07:50:31 +05:30
Use Kotlinx Serialization with the update check API.
Also replace Author and Uploader data classes with a single User class.
This commit is contained in:
parent
fccb198f04
commit
0cf5853a3a
@ -1,20 +1,22 @@
|
||||
package com.github.libretube.obj.update
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
|
||||
import kotlinx.datetime.Instant
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
@Serializable
|
||||
data class Asset(
|
||||
val browser_download_url: String? = null,
|
||||
val content_type: String? = null,
|
||||
val created_at: String? = null,
|
||||
val download_count: Int? = null,
|
||||
val id: Int? = null,
|
||||
val label: Any? = null,
|
||||
val name: String? = null,
|
||||
val node_id: String? = null,
|
||||
val size: Int? = null,
|
||||
val state: String? = null,
|
||||
val updated_at: String? = null,
|
||||
val uploader: Uploader? = null,
|
||||
val url: String? = null
|
||||
@SerialName("browser_download_url") val browserDownloadUrl: String,
|
||||
@SerialName("content_type") val contentType: String,
|
||||
@SerialName("created_at") val createdAt: Instant,
|
||||
@SerialName("download_count") val downloadCount: Int,
|
||||
val id: Int,
|
||||
val label: String? = null,
|
||||
val name: String,
|
||||
@SerialName("node_id") val nodeId: String,
|
||||
val size: Int,
|
||||
val state: String,
|
||||
@SerialName("updated_at") val updatedAt: Instant,
|
||||
val uploader: User,
|
||||
val url: String
|
||||
)
|
||||
|
@ -1,25 +0,0 @@
|
||||
package com.github.libretube.obj.update
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
|
||||
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
data class Author(
|
||||
val avatar_url: String? = null,
|
||||
val events_url: String? = null,
|
||||
val followers_url: String? = null,
|
||||
val following_url: String? = null,
|
||||
val gists_url: String? = null,
|
||||
val gravatar_id: String? = null,
|
||||
val html_url: String? = null,
|
||||
val id: Int? = null,
|
||||
val login: String? = null,
|
||||
val node_id: String? = null,
|
||||
val organizations_url: String? = null,
|
||||
val received_events_url: String? = null,
|
||||
val repos_url: String? = null,
|
||||
val site_admin: Boolean? = null,
|
||||
val starred_url: String? = null,
|
||||
val subscriptions_url: String? = null,
|
||||
val type: String? = null,
|
||||
val url: String? = null
|
||||
)
|
@ -1,15 +1,16 @@
|
||||
package com.github.libretube.obj.update
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
@Serializable
|
||||
data class Reactions(
|
||||
val confused: Int? = null,
|
||||
val eyes: Int? = null,
|
||||
val heart: Int? = null,
|
||||
val hooray: Int? = null,
|
||||
val laugh: Int? = null,
|
||||
val rocket: Int? = null,
|
||||
val total_count: Int? = null,
|
||||
val url: String? = null
|
||||
val confused: Int,
|
||||
val eyes: Int,
|
||||
val heart: Int,
|
||||
val hooray: Int,
|
||||
val laugh: Int,
|
||||
val rocket: Int,
|
||||
@SerialName("total_count") val totalCount: Int,
|
||||
val url: String
|
||||
)
|
||||
|
@ -1,27 +1,29 @@
|
||||
package com.github.libretube.obj.update
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
|
||||
import kotlinx.datetime.Instant
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
@Serializable
|
||||
data class UpdateInfo(
|
||||
val assets: List<Asset>? = null,
|
||||
val assets_url: String? = null,
|
||||
val author: Author? = null,
|
||||
val body: String? = null,
|
||||
val created_at: String? = null,
|
||||
val draft: Boolean? = null,
|
||||
val html_url: String? = null,
|
||||
val id: Int? = null,
|
||||
val mentions_count: Int? = null,
|
||||
val name: String? = null,
|
||||
val node_id: String? = null,
|
||||
val prerelease: Boolean? = null,
|
||||
val published_at: String? = null,
|
||||
val reactions: Reactions? = null,
|
||||
val tag_name: String? = null,
|
||||
val tarball_url: String? = null,
|
||||
val target_commitish: String? = null,
|
||||
val upload_url: String? = null,
|
||||
val url: String? = null,
|
||||
val zipball_url: String? = null
|
||||
val assets: List<Asset> = emptyList(),
|
||||
@SerialName("assets_url") val assetsUrl: String,
|
||||
val author: User,
|
||||
val body: String,
|
||||
@SerialName("created_at") val createdAt: Instant,
|
||||
val draft: Boolean,
|
||||
@SerialName("html_url") val htmlUrl: String,
|
||||
val id: Int,
|
||||
@SerialName("mentions_count") val mentionsCount: Int,
|
||||
val name: String,
|
||||
@SerialName("node_id") val nodeId: String,
|
||||
val prerelease: Boolean,
|
||||
@SerialName("published_at") val publishedAt: Instant,
|
||||
val reactions: Reactions,
|
||||
@SerialName("tag_name") val tagName: String,
|
||||
@SerialName("tarball_url") val tarballUrl: String,
|
||||
@SerialName("target_commitish") val targetCommitish: String,
|
||||
@SerialName("upload_url") val uploadUrl: String,
|
||||
val url: String,
|
||||
@SerialName("zipball_url") val zipballUrl: String
|
||||
)
|
||||
|
@ -1,25 +0,0 @@
|
||||
package com.github.libretube.obj.update
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
|
||||
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
data class Uploader(
|
||||
val avatar_url: String? = null,
|
||||
val events_url: String? = null,
|
||||
val followers_url: String? = null,
|
||||
val following_url: String? = null,
|
||||
val gists_url: String? = null,
|
||||
val gravatar_id: String? = null,
|
||||
val html_url: String? = null,
|
||||
val id: Int? = null,
|
||||
val login: String? = null,
|
||||
val node_id: String? = null,
|
||||
val organizations_url: String? = null,
|
||||
val received_events_url: String? = null,
|
||||
val repos_url: String? = null,
|
||||
val site_admin: Boolean? = null,
|
||||
val starred_url: String? = null,
|
||||
val subscriptions_url: String? = null,
|
||||
val type: String? = null,
|
||||
val url: String? = null
|
||||
)
|
26
app/src/main/java/com/github/libretube/obj/update/User.kt
Normal file
26
app/src/main/java/com/github/libretube/obj/update/User.kt
Normal file
@ -0,0 +1,26 @@
|
||||
package com.github.libretube.obj.update
|
||||
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
data class User(
|
||||
@SerialName("avatar_url") val avatarUrl: String,
|
||||
@SerialName("events_url") val eventsUrl: String,
|
||||
@SerialName("followers_url") val followersUrl: String,
|
||||
@SerialName("following_url") val followingUrl: String,
|
||||
@SerialName("gists_url") val gistsUrl: String,
|
||||
@SerialName("gravatar_id") val gravatarId: String,
|
||||
@SerialName("html_url") val htmlUrl: String,
|
||||
val id: Int,
|
||||
val login: String,
|
||||
@SerialName("node_id") val nodeId: String,
|
||||
@SerialName("organizations_url") val organizationsUrl: String,
|
||||
@SerialName("received_events_url") val receivedEventsUrl: String,
|
||||
@SerialName("repos_url") val reposUrl: String,
|
||||
@SerialName("site_admin") val siteAdmin: Boolean,
|
||||
@SerialName("starred_url") val starredUrl: String,
|
||||
@SerialName("subscriptions_url") val subscriptionsUrl: String,
|
||||
val type: String,
|
||||
val url: String
|
||||
)
|
@ -29,7 +29,7 @@ class UpdateDialog(
|
||||
intent.putExtra("downloadUrl", downloadUrl)
|
||||
context?.startService(intent)
|
||||
} else {
|
||||
val uri = Uri.parse(updateInfo.html_url)
|
||||
val uri = Uri.parse(updateInfo.htmlUrl)
|
||||
val intent = Intent(Intent.ACTION_VIEW).setData(uri)
|
||||
startActivity(intent)
|
||||
}
|
||||
@ -40,8 +40,10 @@ class UpdateDialog(
|
||||
private fun getDownloadUrl(updateInfo: UpdateInfo): String? {
|
||||
val supportedArchitectures = Build.SUPPORTED_ABIS
|
||||
supportedArchitectures.forEach { arch ->
|
||||
updateInfo.assets?.forEach { asset ->
|
||||
if (asset.name?.contains(arch) == true) return asset.browser_download_url
|
||||
updateInfo.assets.forEach { asset ->
|
||||
if (asset.name.contains(arch)) {
|
||||
return asset.browserDownloadUrl
|
||||
}
|
||||
}
|
||||
}
|
||||
return null
|
||||
|
Loading…
x
Reference in New Issue
Block a user