Skip to content

Commit 099a569

Browse files
Clean up unnecessary uses of Date.toInstant()
1 parent ac6025d commit 099a569

File tree

9 files changed

+49
-67
lines changed

9 files changed

+49
-67
lines changed

app/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryResult.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ import org.wikipedia.page.PageTitle
1414
import org.wikipedia.settings.SiteInfo
1515
import org.wikipedia.util.DateUtil
1616
import org.wikipedia.util.StringUtil
17-
import java.util.*
17+
import java.time.*
18+
import java.util.Date
1819

1920
@Serializable
2021
class MwQueryResult {
@@ -212,7 +213,10 @@ class MwQueryResult {
212213
private val tags: List<String>? = null
213214
private val oresscores: JsonElement? = null
214215

215-
val parsedDateTime by lazy { DateUtil.iso8601LocalDateTimeParse(timestamp) }
216+
val parsedInstant: Instant by lazy { Instant.parse(timestamp) }
217+
val parsedDateTime: LocalDateTime by lazy {
218+
LocalDateTime.ofInstant(parsedInstant, ZoneId.systemDefault())
219+
}
216220
val joinedTags by lazy { tags?.joinToString(separator = ", ").orEmpty() }
217221

218222
override fun toString(): String {

app/src/main/java/org/wikipedia/dataclient/mwapi/UserInfo.kt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import kotlinx.serialization.SerialName
44
import kotlinx.serialization.Serializable
55
import org.wikipedia.dataclient.mwapi.MwServiceError.BlockInfo
66
import org.wikipedia.util.DateUtil
7-
import java.util.*
7+
import java.time.LocalDate
8+
import java.util.Date
89

910
@Serializable
1011
class UserInfo : BlockInfo() {
@@ -38,16 +39,15 @@ class UserInfo : BlockInfo() {
3839
return date
3940
}
4041

41-
val registrationDate: Date
42-
get() {
43-
var date = Date(0)
44-
if (!regDate.isNullOrEmpty()) {
45-
date = DateUtil.iso8601DateParse(regDate)
46-
} else if (!registration.isNullOrEmpty()) {
47-
date = DateUtil.iso8601DateParse(registration)
48-
}
49-
return date
42+
val registrationDate: LocalDate by lazy {
43+
if (!regDate.isNullOrEmpty()) {
44+
DateUtil.iso8601LocalDateParse(regDate)
45+
} else if (!registration.isNullOrEmpty()) {
46+
DateUtil.iso8601LocalDateParse(registration)
47+
} else {
48+
LocalDate.EPOCH
5049
}
50+
}
5151

5252
@Serializable
5353
class Options {

app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsRecentEditsViewModel.kt

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,7 @@ package org.wikipedia.suggestededits
22

33
import androidx.lifecycle.ViewModel
44
import androidx.lifecycle.viewModelScope
5-
import androidx.paging.Pager
6-
import androidx.paging.PagingConfig
7-
import androidx.paging.PagingSource
8-
import androidx.paging.PagingState
9-
import androidx.paging.cachedIn
10-
import androidx.paging.filter
11-
import androidx.paging.insertSeparators
12-
import androidx.paging.map
5+
import androidx.paging.*
136
import kotlinx.coroutines.flow.map
147
import org.wikipedia.WikipediaApp
158
import org.wikipedia.dataclient.ServiceFactory
@@ -21,9 +14,9 @@ import org.wikipedia.suggestededits.provider.EditingSuggestionsProvider
2114
import org.wikipedia.util.DateUtil
2215
import retrofit2.HttpException
2316
import java.io.IOException
24-
import java.time.Duration
25-
import java.util.Calendar
26-
import java.util.Date
17+
import java.time.Instant
18+
import java.time.LocalDate
19+
import java.time.temporal.ChronoUnit
2720
import kotlin.math.max
2821

2922
class SuggestedEditsRecentEditsViewModel : ViewModel() {
@@ -86,7 +79,7 @@ class SuggestedEditsRecentEditsViewModel : ViewModel() {
8679
return LoadResult.Page(cachedRecentEdits, null, cachedContinueKey)
8780
}
8881

89-
val triple = getRecentEditsCall(wikiSite, params.loadSize, Date().toInstant().toString(), "older", params.key, cachedUserInfo)
82+
val triple = getRecentEditsCall(wikiSite, params.loadSize, Instant.now(), "older", params.key, cachedUserInfo)
9083

9184
cachedContinueKey = triple.third
9285
cachedRecentEdits.addAll(triple.first)
@@ -109,12 +102,11 @@ class SuggestedEditsRecentEditsViewModel : ViewModel() {
109102
class RecentEditsSeparator(val date: String) : RecentEditsItemModel()
110103

111104
companion object {
112-
113-
suspend fun getRecentEditsCall(wikiSite: WikiSite, count: Int, startTimeStamp: String, direction: String,
105+
suspend fun getRecentEditsCall(wikiSite: WikiSite, count: Int, startTimeStamp: Instant, direction: String,
114106
continueStr: String? = null, userInfoCache: MutableList<UserInfo>): Triple<List<MwQueryResult.RecentChange>, List<MwQueryResult.RecentChange>, String?> {
115107

116108
val response = ServiceFactory.get(wikiSite)
117-
.getRecentEdits(count, startTimeStamp, direction, latestRevisions(), showCriteriaString(), continueStr)
109+
.getRecentEdits(count, startTimeStamp.toString(), direction, latestRevisions(), showCriteriaString(), continueStr)
118110

119111
val allRecentChanges = response.query?.recentChanges.orEmpty()
120112

@@ -219,7 +211,7 @@ class SuggestedEditsRecentEditsViewModel : ViewModel() {
219211
var qualifiedUser = false
220212
userInfo?.let {
221213
val editsCount = userInfo.editCount
222-
val diffDays = diffDays(userInfo.registrationDate)
214+
val diffDays = userInfo.registrationDate.until(LocalDate.now(), ChronoUnit.DAYS)
223215
findUserExperienceFilters.forEach { type ->
224216
val userExperienceArray = type.value.split("|")
225217
val requiredEdits = userExperienceArray.first().split(",")
@@ -293,11 +285,5 @@ class SuggestedEditsRecentEditsViewModel : ViewModel() {
293285
}
294286
return recentChanges
295287
}
296-
297-
private fun diffDays(date: Date): Long {
298-
val nowDate = Calendar.getInstance().toInstant()
299-
val beginDate = date.toInstant()
300-
return Duration.between(beginDate, nowDate).toDays()
301-
}
302288
}
303289
}

app/src/main/java/org/wikipedia/suggestededits/provider/EditingSuggestionsProvider.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import org.wikipedia.dataclient.mwapi.MwQueryResult
1313
import org.wikipedia.dataclient.page.PageSummary
1414
import org.wikipedia.page.PageTitle
1515
import org.wikipedia.suggestededits.SuggestedEditsRecentEditsViewModel
16-
import java.util.Date
16+
import java.time.Instant
1717
import java.util.Stack
1818
import java.util.concurrent.Semaphore
1919
import kotlin.math.abs
@@ -43,7 +43,7 @@ object EditingSuggestionsProvider {
4343
private var revertCandidateLang: String = ""
4444
private val revertCandidateCache: ArrayDeque<MwQueryResult.RecentChange> = ArrayDeque()
4545
private var revertCandidateLastRevId = 0L
46-
private var revertCandidateLastTimeStamp = Date().toInstant().toString()
46+
private var revertCandidateLastTimeStamp = Instant.now()
4747

4848
private const val MAX_RETRY_LIMIT: Long = 50
4949

@@ -355,7 +355,7 @@ object EditingSuggestionsProvider {
355355
revertCandidateCache.addFirst(it)
356356
if (it.curRev > revertCandidateLastRevId) {
357357
revertCandidateLastRevId = it.curRev
358-
revertCandidateLastTimeStamp = it.timestamp
358+
revertCandidateLastTimeStamp = it.parsedInstant
359359
}
360360
}
361361
}
@@ -385,7 +385,7 @@ object EditingSuggestionsProvider {
385385
// starting from the last recorded timestamp.
386386
val triple = if (revertCandidateLastRevId == 0L)
387387
SuggestedEditsRecentEditsViewModel.getRecentEditsCall(wikiSite,
388-
10, Date().toInstant().toString(), "older", null, mutableListOf())
388+
10, Instant.now(), "older", null, mutableListOf())
389389
else SuggestedEditsRecentEditsViewModel.getRecentEditsCall(wikiSite,
390390
10, revertCandidateLastTimeStamp, "newer", null, mutableListOf())
391391

@@ -400,8 +400,8 @@ object EditingSuggestionsProvider {
400400
if (candidate.curRev > maxRevId) {
401401
maxRevId = candidate.curRev
402402
}
403-
if (candidate.timestamp > revertCandidateLastTimeStamp) {
404-
revertCandidateLastTimeStamp = candidate.timestamp
403+
if (candidate.parsedInstant > revertCandidateLastTimeStamp) {
404+
revertCandidateLastTimeStamp = candidate.parsedInstant
405405
}
406406
}
407407
for (candidate in filteredChanges) {

app/src/main/java/org/wikipedia/usercontrib/UserContribListViewModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import org.wikipedia.util.Resource
2121
import org.wikipedia.util.log.L
2222
import retrofit2.HttpException
2323
import java.io.IOException
24-
import java.util.*
24+
import java.time.LocalDate
2525

2626
class UserContribListViewModel(bundle: Bundle) : ViewModel() {
2727

@@ -128,7 +128,7 @@ class UserContribListViewModel(bundle: Bundle) : ViewModel() {
128128
open class UserContribItemModel
129129
class UserContribItem(val item: UserContribution) : UserContribItemModel()
130130
class UserContribSeparator(val date: String) : UserContribItemModel()
131-
class UserContribStats(val totalEdits: Int, val registrationDate: Date, val projectName: String) : UserContribItemModel()
131+
class UserContribStats(val totalEdits: Int, val registrationDate: LocalDate, val projectName: String) : UserContribItemModel()
132132

133133
class Factory(private val bundle: Bundle) : ViewModelProvider.Factory {
134134
@Suppress("unchecked_cast")

app/src/main/java/org/wikipedia/usercontrib/UserInformationDialog.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,7 @@ import org.wikipedia.suggestededits.SuggestedEditsRecentEditsActivity
1919
import org.wikipedia.suggestededits.SuggestionsActivity
2020
import org.wikipedia.util.DateUtil
2121
import org.wikipedia.util.StringUtil
22-
import java.time.LocalDateTime
23-
import java.time.ZoneId
24-
import java.util.Date
22+
import java.time.LocalDate
2523

2624
class UserInformationDialog : DialogFragment() {
2725

@@ -74,13 +72,12 @@ class UserInformationDialog : DialogFragment() {
7472
binding.dialogErrorView.isVisible = false
7573
}
7674

77-
private fun onSuccess(editCount: String, registrationDate: Date) {
75+
private fun onSuccess(editCount: String, registrationDate: LocalDate) {
7876
sendPatrollerExperienceEvent()
7977
binding.userInformationContainer.isVisible = true
8078
binding.dialogProgressBar.isVisible = false
8179
binding.dialogErrorView.isVisible = false
82-
val localDate = LocalDateTime.ofInstant(registrationDate.toInstant(), ZoneId.systemDefault()).toLocalDate()
83-
val dateStr = DateUtil.getShortDateString(localDate)
80+
val dateStr = DateUtil.getShortDateString(registrationDate)
8481
binding.userTenure.text = StringUtil.fromHtml(getString(R.string.patroller_tasks_edits_list_user_information_dialog_joined_date_text, dateStr))
8582
binding.editCount.text = StringUtil.fromHtml(getString(R.string.patroller_tasks_edits_list_user_information_dialog_edit_count_text, editCount))
8683
}

app/src/main/java/org/wikipedia/usercontrib/UserInformationDialogViewModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import kotlinx.coroutines.flow.asStateFlow
1010
import org.wikipedia.WikipediaApp
1111
import org.wikipedia.dataclient.ServiceFactory
1212
import org.wikipedia.dataclient.WikiSite
13-
import java.util.*
13+
import java.time.LocalDate
1414

1515
class UserInformationDialogViewModel(bundle: Bundle) : ViewModel() {
1616

@@ -44,7 +44,7 @@ class UserInformationDialogViewModel(bundle: Bundle) : ViewModel() {
4444

4545
open class UiState {
4646
class Loading : UiState()
47-
class Success(val editCount: String, val registrationDate: Date) : UiState()
47+
class Success(val editCount: String, val registrationDate: LocalDate) : UiState()
4848
class Error(val throwable: Throwable) : UiState()
4949
}
5050

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

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,11 @@ import org.wikipedia.R
88
import org.wikipedia.WikipediaApp
99
import org.wikipedia.feed.model.UtcDate
1010
import java.text.SimpleDateFormat
11-
import java.time.Instant
12-
import java.time.LocalDate
13-
import java.time.LocalDateTime
14-
import java.time.ZoneId
15-
import java.time.ZoneOffset
11+
import java.time.*
1612
import java.time.format.DateTimeFormatter
1713
import java.time.format.FormatStyle
1814
import java.time.temporal.TemporalAccessor
19-
import java.util.Calendar
20-
import java.util.Date
21-
import java.util.GregorianCalendar
22-
import java.util.Locale
23-
import java.util.TimeZone
15+
import java.util.*
2416
import java.util.concurrent.ConcurrentHashMap
2517

2618
object DateUtil {
@@ -36,6 +28,10 @@ object DateUtil {
3628
return LocalDateTime.ofInstant(Instant.parse(timestamp), ZoneId.systemDefault())
3729
}
3830

31+
fun iso8601LocalDateParse(timestamp: String): LocalDate {
32+
return LocalDate.ofInstant(Instant.parse(timestamp), ZoneId.systemDefault())
33+
}
34+
3935
fun dbDateFormat(date: Date): String {
4036
return getCachedDateFormat("yyyyMMddHHmmss", Locale.ROOT, true).format(date)
4137
}
@@ -64,7 +60,7 @@ object DateUtil {
6460
return getDateStringWithSkeletonPattern(date, "MMMM")
6561
}
6662

67-
fun getYearOnlyDateString(date: Date): String {
63+
fun getYearOnlyDateString(date: LocalDate): String {
6864
return getDateStringWithSkeletonPattern(date, "yyyy")
6965
}
7066

app/src/main/java/org/wikipedia/views/EditHistoryStatsView.kt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import org.wikipedia.util.DateUtil
1616
import org.wikipedia.util.DimenUtil
1717
import org.wikipedia.util.FeedbackUtil
1818
import org.wikipedia.util.StringUtil
19-
import java.util.*
19+
import java.time.LocalDate
2020

2121
class EditHistoryStatsView constructor(context: Context, attrs: AttributeSet? = null) : ConstraintLayout(context, attrs) {
2222

@@ -34,11 +34,10 @@ class EditHistoryStatsView constructor(context: Context, attrs: AttributeSet? =
3434
editHistoryStats?.let { stats ->
3535
val timestamp = stats.revision.timeStamp
3636
if (timestamp.isNotBlank()) {
37-
val createdYear = DateUtil.getYearOnlyDateString(DateUtil.iso8601DateParse(timestamp))
38-
val calendar = Calendar.getInstance()
39-
val today = DateUtil.getShortDateString(calendar.time)
40-
calendar.add(Calendar.YEAR, -1)
41-
val lastYear = DateUtil.getShortDateString(calendar.time)
37+
val createdYear = DateUtil.getYearOnlyDateString(DateUtil.iso8601LocalDateParse(timestamp))
38+
val now = LocalDate.now()
39+
val today = DateUtil.getShortDateString(now)
40+
val lastYear = DateUtil.getShortDateString(now.minusYears(1))
4241
binding.editCountsView.text = context.resources.getQuantityString(R.plurals.page_edit_history_article_edits_since_year,
4342
stats.allEdits.count, stats.allEdits.count, createdYear)
4443
binding.statsGraphView.setData(stats.metrics.map { it.edits.toFloat() })

0 commit comments

Comments
 (0)