Use java.date to parse dates (#377)
* Use java.date to parse dates * Enable core library desugaring
This commit is contained in:
parent
e1efe9643c
commit
a2933ac763
@ -32,6 +32,9 @@ apply plugin: 'kotlin-kapt'
|
|||||||
|
|
||||||
android {
|
android {
|
||||||
compileOptions {
|
compileOptions {
|
||||||
|
// Flag to enable support for the new language APIs
|
||||||
|
coreLibraryDesugaringEnabled true
|
||||||
|
|
||||||
sourceCompatibility JavaVersion.VERSION_1_8
|
sourceCompatibility JavaVersion.VERSION_1_8
|
||||||
targetCompatibility JavaVersion.VERSION_1_8
|
targetCompatibility JavaVersion.VERSION_1_8
|
||||||
}
|
}
|
||||||
@ -115,6 +118,8 @@ dependencies {
|
|||||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
|
implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
|
||||||
implementation 'org.jsoup:jsoup:1.14.3'
|
implementation 'org.jsoup:jsoup:1.14.3'
|
||||||
|
|
||||||
|
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.5")
|
||||||
|
|
||||||
//multidex
|
//multidex
|
||||||
implementation 'androidx.multidex:multidex:2.0.1'
|
implementation 'androidx.multidex:multidex:2.0.1'
|
||||||
|
|
||||||
|
@ -340,20 +340,16 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
|
|||||||
private fun getApiMajorVersion() {
|
private fun getApiMajorVersion() {
|
||||||
api.apiVersion.enqueue(object : Callback<ApiVersion> {
|
api.apiVersion.enqueue(object : Callback<ApiVersion> {
|
||||||
override fun onFailure(call: Call<ApiVersion>, t: Throwable) {
|
override fun onFailure(call: Call<ApiVersion>, t: Throwable) {
|
||||||
if (apiVersionMajor >= 4) {
|
Config.apiVersion = apiVersionMajor
|
||||||
Config.dateTimeFormatter = "yyyy-MM-dd'T'HH:mm:ssXXX"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResponse(call: Call<ApiVersion>, response: Response<ApiVersion>) {
|
override fun onResponse(call: Call<ApiVersion>, response: Response<ApiVersion>) {
|
||||||
if(response.body() != null) {
|
if(response.body() != null) {
|
||||||
val version = response.body() as ApiVersion
|
val version = response.body() as ApiVersion
|
||||||
apiVersionMajor = version.getApiMajorVersion()
|
apiVersionMajor = version.getApiMajorVersion()
|
||||||
sharedPref.edit().putInt("apiVersionMajor", apiVersionMajor).commit()
|
sharedPref.edit().putInt("apiVersionMajor", apiVersionMajor).apply()
|
||||||
|
|
||||||
if (apiVersionMajor >= 4) {
|
Config.apiVersion = apiVersionMajor
|
||||||
Config.dateTimeFormatter = "yyyy-MM-dd'T'HH:mm:ssXXX"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -40,7 +40,7 @@ class Config(c: Context) {
|
|||||||
|
|
||||||
const val newItemsChannelId = "new-items-channel-id"
|
const val newItemsChannelId = "new-items-channel-id"
|
||||||
|
|
||||||
var dateTimeFormatter = "yyyy-MM-dd HH:mm:ss"
|
var apiVersion = 0
|
||||||
|
|
||||||
fun logoutAndRedirect(
|
fun logoutAndRedirect(
|
||||||
c: Context,
|
c: Context,
|
||||||
|
@ -0,0 +1,31 @@
|
|||||||
|
package apps.amine.bou.readerforselfoss.utils
|
||||||
|
|
||||||
|
import android.text.format.DateUtils
|
||||||
|
import java.time.Instant
|
||||||
|
import java.time.LocalDateTime
|
||||||
|
import java.time.OffsetDateTime
|
||||||
|
import java.time.ZoneOffset
|
||||||
|
import java.time.format.DateTimeFormatter
|
||||||
|
|
||||||
|
fun parseDate(dateString: String): Instant {
|
||||||
|
|
||||||
|
val FORMATTERV1 = "yyyy-MM-dd HH:mm:ss"
|
||||||
|
|
||||||
|
return if (Config.apiVersion >= 4) {
|
||||||
|
OffsetDateTime.parse(dateString).toInstant()
|
||||||
|
} else {
|
||||||
|
LocalDateTime.parse(dateString, DateTimeFormatter.ofPattern(FORMATTERV1)).toInstant(ZoneOffset.UTC)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun parseRelativeDate(dateString: String): String {
|
||||||
|
|
||||||
|
val date = parseDate(dateString)
|
||||||
|
|
||||||
|
return " " + DateUtils.getRelativeTimeSpanString(
|
||||||
|
date.toEpochMilli(),
|
||||||
|
Instant.now().toEpochMilli(),
|
||||||
|
DateUtils.MINUTE_IN_MILLIS,
|
||||||
|
DateUtils.FORMAT_ABBREV_RELATIVE
|
||||||
|
)
|
||||||
|
}
|
@ -1,16 +1,12 @@
|
|||||||
package apps.amine.bou.readerforselfoss.utils
|
package apps.amine.bou.readerforselfoss.utils
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.text.format.DateUtils
|
|
||||||
import apps.amine.bou.readerforselfoss.api.selfoss.Item
|
import apps.amine.bou.readerforselfoss.api.selfoss.Item
|
||||||
import apps.amine.bou.readerforselfoss.api.selfoss.SelfossTagType
|
import apps.amine.bou.readerforselfoss.api.selfoss.SelfossTagType
|
||||||
import java.text.ParseException
|
|
||||||
import java.text.SimpleDateFormat
|
|
||||||
import java.util.*
|
|
||||||
|
|
||||||
fun String.toTextDrawableString(c: Context): String {
|
fun String.toTextDrawableString(c: Context): String {
|
||||||
val textDrawable = StringBuilder()
|
val textDrawable = StringBuilder()
|
||||||
for (s in this.split(" ".toRegex()).filter { !it.isEmpty() }.toTypedArray()) {
|
for (s in this.split(" ".toRegex()).filter { it.isNotEmpty() }.toTypedArray()) {
|
||||||
try {
|
try {
|
||||||
textDrawable.append(s[0])
|
textDrawable.append(s[0])
|
||||||
} catch (e: StringIndexOutOfBoundsException) {
|
} catch (e: StringIndexOutOfBoundsException) {
|
||||||
@ -20,17 +16,7 @@ fun String.toTextDrawableString(c: Context): String {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun Item.sourceAndDateText(): String {
|
fun Item.sourceAndDateText(): String {
|
||||||
val formattedDate: String = try {
|
val formattedDate = parseRelativeDate(this.datetime)
|
||||||
" " + DateUtils.getRelativeTimeSpanString(
|
|
||||||
SimpleDateFormat(Config.dateTimeFormatter).parse(this.datetime).time,
|
|
||||||
Date().time,
|
|
||||||
DateUtils.MINUTE_IN_MILLIS,
|
|
||||||
DateUtils.FORMAT_ABBREV_RELATIVE
|
|
||||||
)
|
|
||||||
} catch (e: ParseException) {
|
|
||||||
e.printStackTrace()
|
|
||||||
""
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.getSourceTitle() + formattedDate
|
return this.getSourceTitle() + formattedDate
|
||||||
}
|
}
|
||||||
|
@ -398,7 +398,7 @@ object SharedItems {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun sortItems() {
|
private fun sortItems() {
|
||||||
val tmpItems = ArrayList(items.sortedByDescending { SimpleDateFormat(Config.dateTimeFormatter).parse((it.datetime)) })
|
val tmpItems = ArrayList(items.sortedByDescending { parseDate(it.datetime) })
|
||||||
items = tmpItems
|
items = tmpItems
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user