From 5b70ae138e8b9bde916ce5fd4dc8c936753ca082 Mon Sep 17 00:00:00 2001 From: davidoskky Date: Fri, 19 Mar 2021 15:46:13 +0100 Subject: [PATCH] Set date format according to api version. --- .../bou/readerforselfoss/HomeActivity.kt | 22 ++++++++++++++++++- .../api/selfoss/SelfossApi.kt | 3 +++ .../api/selfoss/SelfossModels.kt | 13 +++++++++++ .../api/selfoss/SelfossService.kt | 3 +++ 4 files changed, 40 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/HomeActivity.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/HomeActivity.kt index 8b86b79..78897a7 100644 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/HomeActivity.kt +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/HomeActivity.kt @@ -92,6 +92,7 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener { private var displayUnreadCount = false private var displayAllCount = false private var fullHeightCards: Boolean = false + private var apiVersionMajor: Int = 0 private var itemsNumber: Int = 200 private var elementsShown: Int = 0 private var maybeTagFilter: Tag? = null @@ -108,7 +109,7 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener { private var periodicRefresh = false private var refreshMinutes: Long = 360L private var refreshWhenChargingOnly = false - private val dateTimeFormatter = "yyyy-MM-dd HH:mm:ss" + private var dateTimeFormatter = "yyyy-MM-dd HH:mm:ss" private lateinit var tabNewBadge: TextBadgeItem private lateinit var tabArchiveBadge: TextBadgeItem @@ -195,6 +196,12 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener { handleSharedPrefs() + getApiMajorVersion() + + if (apiVersionMajor > 2) { + dateTimeFormatter = "yyyy-MM-dd'T'HH:mm:ssXXX" + } + getElementsAccordingToTab() } @@ -412,6 +419,19 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener { } } + private fun getApiMajorVersion() { + api.apiVersion.enqueue(object : Callback { + override fun onFailure(call: Call, t: Throwable) { + } + + override fun onResponse(call: Call, response: Response) { + val version = response.body() as ApiVersion + apiVersionMajor = version.getApiMajorVersion() + } + }) + + } + override fun onStop() { super.onStop() customTabActivityHelper.unbindCustomTabsService(this) diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossApi.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossApi.kt index 47197ab..038bc01 100644 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossApi.kt +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossApi.kt @@ -215,6 +215,9 @@ class SelfossApi( fun update(): Call = service.update(userName, password) + val apiVersion: Call + get() = service.version() + val sources: Call> get() = service.sources(userName, password) diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossModels.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossModels.kt index 0d74c25..7e12e0a 100644 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossModels.kt +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossModels.kt @@ -48,6 +48,19 @@ data class Spout( @SerializedName("description") val description: String ) +data class ApiVersion( + @SerializedName("version") val version: String, + @SerializedName("apiversion") val apiversion: String +) { + fun getApiMajorVersion() : Int { + var versionNumber = 0 + if (apiversion != null) { + versionNumber = apiversion.substringBefore(".").toInt() + } + return versionNumber + } +} + data class Source( @SerializedName("id") val id: String, @SerializedName("title") val title: String, diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossService.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossService.kt index 553579d..371213b 100644 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossService.kt +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/api/selfoss/SelfossService.kt @@ -103,6 +103,9 @@ internal interface SelfossService { @Query("password") password: String ): Call> + @GET("api/about") + fun version(): Call + @DELETE("source/{id}") fun deleteSource( @Path("id") id: String,