時刻の横に表示するアイコンでsuspendedフラグに対応する図柄を変更。account.last_status_atが日付部分だけを返す場合に対応。

This commit is contained in:
tateisu 2020-12-11 06:00:46 +09:00
parent cec4b0d2e0
commit 307ddfa239
3 changed files with 31 additions and 13 deletions

View File

@ -1549,7 +1549,7 @@ internal class ItemViewHolder(
if(status.account.suspended) {
if(sb.isNotEmpty()) sb.append('\u200B')
sb.appendColorShadeIcon(activity, R.drawable.ic_error, "suspended")
sb.appendColorShadeIcon(activity, R.drawable.ic_delete, "suspended")
}
// mobileマーク

View File

@ -555,9 +555,9 @@ class TootApiClient(
try {
if (!sendRequest(result) {
log.d("request: $path")
val url = "https://${apiHost?.ascii}$path"
request_builder.url("https://${apiHost?.ascii}$path")
request_builder.url(url)
val access_token = account?.getAccessToken()
if (access_token?.isNotEmpty() == true) {
@ -565,6 +565,7 @@ class TootApiClient(
}
request_builder.build()
.also{ log.d("request: ${it.method} $url") }
}) return result

View File

@ -1115,7 +1115,10 @@ class TootStatus(parser: TootParser, src: JsonObject) : TimelineItem() {
private val tz_utc = TimeZone.getTimeZone("UTC")
private val reTime = """\A(\d+)\D+(\d+)\D+(\d+)\D+(\d+)\D+(\d+)\D+(\d+)(?:\D+(\d+))?"""
private val reDate = """\A(\d+)\D+(\d+)\D+(\d+)"""
.asciiPattern()
private val reTime = """\A(\d+)\D+(\d+)\D+(\d+)\D+(\d+)\D+(\d+)\D+(\d+)(?:\D+(\d+))?"""
.asciiPattern()
private val reMSPTime = """\A(\d+)\D+(\d+)\D+(\d+)\D+(\d+)\D+(\d+)\D+(\d+)"""
@ -1124,12 +1127,10 @@ class TootStatus(parser: TootParser, src: JsonObject) : TimelineItem() {
fun parseTime(strTime: String?): Long {
if (strTime != null && strTime.isNotEmpty()) {
try {
val m = reTime.matcher(strTime)
if (!m.find()) {
log.d("invalid time format: %s", strTime)
} else {
val g = GregorianCalendar(tz_utc)
g.set(
var m = reTime.matcher(strTime)
if (m.find()) {
val g = GregorianCalendar(tz_utc)
g.set(
m.groupEx(1).optInt() ?: 1,
(m.groupEx(2).optInt() ?: 1) - 1,
m.groupEx(3).optInt() ?: 1,
@ -1137,9 +1138,25 @@ class TootStatus(parser: TootParser, src: JsonObject) : TimelineItem() {
m.groupEx(5).optInt() ?: 0,
m.groupEx(6).optInt() ?: 0
)
g.set(Calendar.MILLISECOND, m.groupEx(7).optInt() ?: 0)
return g.timeInMillis
}
g.set(Calendar.MILLISECOND, m.groupEx(7).optInt() ?: 0)
return g.timeInMillis
}
// last_status_at などでは YYYY-MM-DD になることがある
m = reDate.matcher(strTime)
if (m.find()) {
val g = GregorianCalendar(tz_utc)
g.set(
m.groupEx(1).optInt() ?: 1,
(m.groupEx(2).optInt() ?: 1) - 1,
m.groupEx(3).optInt() ?: 1,
12,
34,
56
)
g.set(Calendar.MILLISECOND, 789)
return g.timeInMillis
}
log.w("invalid time format: %s", strTime)
} catch (ex: Throwable) { // ParseException, ArrayIndexOutOfBoundsException
log.trace(ex)
log.e(ex, "TootStatus.parseTime failed. src=%s", strTime)