Skip to content

Commit 298c039

Browse files
Improve relative time formatting in the notification activity.
1 parent b3554a6 commit 298c039

File tree

4 files changed

+17
-12
lines changed

4 files changed

+17
-12
lines changed

app/src/main/java/org/wikipedia/notifications/NotificationActivity.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import android.graphics.Typeface
77
import android.graphics.drawable.Drawable
88
import android.net.Uri
99
import android.os.Bundle
10-
import android.text.format.DateUtils
1110
import android.view.Menu
1211
import android.view.MenuItem
1312
import android.view.View
@@ -380,7 +379,7 @@ class NotificationActivity : BaseActivity() {
380379
}
381380
}
382381

383-
binding.notificationTime.text = DateUtils.getRelativeTimeSpanString(n.date().time, System.currentTimeMillis(), 0L)
382+
binding.notificationTime.text = DateUtil.formatRelativeTime(n.instant())
384383
binding.notificationTime.setTextColor(if (n.isUnread) primaryColor else inactiveColor)
385384
binding.notificationOverflowMenu.imageTintList = if (n.isUnread) primaryColor else inactiveColor
386385

app/src/main/java/org/wikipedia/notifications/NotificationViewModel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class NotificationViewModel : ViewModel() {
6161
}
6262
}
6363
// Sort them by descending date...
64-
notificationList.sortByDescending { it.date() }
64+
notificationList.sortByDescending { it.instant() }
6565

6666
// Filtered the tab selection
6767
val tabSelectedList = notificationList

app/src/main/java/org/wikipedia/notifications/db/Notification.kt

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import org.wikipedia.Constants
1111
import org.wikipedia.dataclient.WikiSite
1212
import org.wikipedia.json.JsonUtil
1313
import org.wikipedia.page.Namespace
14-
import org.wikipedia.util.DateUtil
1514
import org.wikipedia.util.UriUtil
15+
import java.time.Instant
1616
import java.util.*
1717

1818
@Serializable
@@ -40,8 +40,8 @@ class Notification(var id: Long = 0,
4040
return id + wiki.hashCode()
4141
}
4242

43-
fun date(): Date {
44-
return timestamp?.date() ?: Date()
43+
fun instant(): Instant {
44+
return timestamp?.instant ?: Instant.now()
4545
}
4646

4747
override fun toString(): String {
@@ -69,12 +69,9 @@ class Notification(var id: Long = 0,
6969
}
7070

7171
@Serializable
72-
class Timestamp {
73-
74-
val utciso8601: String? = null
75-
76-
fun date(): Date {
77-
return DateUtil.iso8601DateParse(utciso8601!!)
72+
class Timestamp(val utciso8601: String) {
73+
val instant: Instant by lazy {
74+
Instant.parse(utciso8601)
7875
}
7976
}
8077

app/src/main/java/org/wikipedia/util/DateUtil.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.content.Context
44
import android.icu.text.RelativeDateTimeFormatter
55
import android.os.Build
66
import android.text.format.DateFormat
7+
import android.text.format.DateUtils
78
import org.wikipedia.R
89
import org.wikipedia.WikipediaApp
910
import org.wikipedia.feed.model.UtcDate
@@ -15,6 +16,7 @@ import java.time.ZoneId
1516
import java.time.ZoneOffset
1617
import java.time.format.DateTimeFormatter
1718
import java.time.format.FormatStyle
19+
import java.time.temporal.ChronoUnit
1820
import java.time.temporal.TemporalAccessor
1921
import java.util.*
2022
import java.util.concurrent.ConcurrentHashMap
@@ -184,4 +186,11 @@ object DateUtil {
184186
else targetResource.getQuantityString(R.plurals.diff_years, diffInYears, diffInYears)
185187
}
186188
}
189+
190+
fun formatRelativeTime(instant: Instant): CharSequence {
191+
val localDate = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()).toLocalDate()
192+
val weeks = localDate.until(LocalDate.now(), ChronoUnit.WEEKS)
193+
val flags = if (weeks in 1..10) DateUtils.WEEK_IN_MILLIS else 0L
194+
return DateUtils.getRelativeTimeSpanString(instant.toEpochMilli(), System.currentTimeMillis(), flags)
195+
}
187196
}

0 commit comments

Comments
 (0)