Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clean up unnecessary uses of Date.toInstant() #4399

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,9 @@ class MwQueryPage {

var diffSize = 0

val localDateTime by lazy { DateUtil.iso8601LocalDateTimeParse(timeStamp) }
val localDateTime by lazy {
if (timeStamp.isNotBlank()) DateUtil.iso8601LocalDateTimeParse(timeStamp) else null
}

fun getContentFromSlot(slot: String): String {
return slots?.get(slot)?.content.orEmpty()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import org.wikipedia.util.StringUtil
import java.time.Instant
import java.time.LocalDateTime
import java.time.ZoneId
import java.util.*
import java.util.Date

@Serializable
class MwQueryResult {
Expand Down
20 changes: 10 additions & 10 deletions app/src/main/java/org/wikipedia/dataclient/mwapi/UserInfo.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ import kotlinx.serialization.Serializable
import kotlinx.serialization.json.JsonElement
import org.wikipedia.dataclient.mwapi.MwServiceError.BlockInfo
import org.wikipedia.util.DateUtil
import java.util.*
import java.time.LocalDate
import java.util.Date

@Serializable
class UserInfo : BlockInfo() {
Expand Down Expand Up @@ -39,16 +40,15 @@ class UserInfo : BlockInfo() {
return date
}

val registrationDate: Date
get() {
var date = Date(0)
if (!regDate.isNullOrEmpty()) {
date = DateUtil.iso8601DateParse(regDate)
} else if (!registration.isNullOrEmpty()) {
date = DateUtil.iso8601DateParse(registration)
}
return date
val registrationDate: LocalDate by lazy {
if (!regDate.isNullOrEmpty()) {
DateUtil.iso8601LocalDateParse(regDate)
} else if (!registration.isNullOrEmpty()) {
DateUtil.iso8601LocalDateParse(registration)
} else {
LocalDate.EPOCH
}
}

@Serializable
class Options {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,9 @@ import org.wikipedia.suggestededits.provider.EditingSuggestionsProvider
import org.wikipedia.util.DateUtil
import retrofit2.HttpException
import java.io.IOException
import java.time.Duration
import java.time.Instant
import java.util.Calendar
import java.util.Date
import java.time.LocalDate
import java.time.temporal.ChronoUnit
import kotlin.math.max

class SuggestedEditsRecentEditsViewModel : ViewModel() {
Expand Down Expand Up @@ -220,7 +219,7 @@ class SuggestedEditsRecentEditsViewModel : ViewModel() {
var qualifiedUser = false
userInfo?.let {
val editsCount = userInfo.editCount
val diffDays = diffDays(userInfo.registrationDate)
val diffDays = userInfo.registrationDate.until(LocalDate.now(), ChronoUnit.DAYS)
findUserExperienceFilters.forEach { type ->
val userExperienceArray = type.value.split("|")
val requiredEdits = userExperienceArray.first().split(",")
Expand Down Expand Up @@ -294,11 +293,5 @@ class SuggestedEditsRecentEditsViewModel : ViewModel() {
}
return recentChanges
}

private fun diffDays(date: Date): Long {
val nowDate = Calendar.getInstance().toInstant()
val beginDate = date.toInstant()
return Duration.between(beginDate, nowDate).toDays()
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import org.wikipedia.util.Resource
import org.wikipedia.util.log.L
import retrofit2.HttpException
import java.io.IOException
import java.util.Date
import java.time.LocalDate

class UserContribListViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {
val userContribStatsData = MutableLiveData<Resource<UserContribStats>>()
Expand Down Expand Up @@ -123,5 +123,5 @@ class UserContribListViewModel(savedStateHandle: SavedStateHandle) : ViewModel()
open class UserContribItemModel
class UserContribItem(val item: UserContribution) : UserContribItemModel()
class UserContribSeparator(val date: String) : UserContribItemModel()
class UserContribStats(val totalEdits: Int, val registrationDate: Date, val projectName: String) : UserContribItemModel()
class UserContribStats(val totalEdits: Int, val registrationDate: LocalDate, val projectName: String) : UserContribItemModel()
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@ import org.wikipedia.suggestededits.SuggestionsActivity
import org.wikipedia.util.DateUtil
import org.wikipedia.util.Resource
import org.wikipedia.util.StringUtil
import java.time.LocalDateTime
import java.time.ZoneId
import java.util.Date
import java.time.LocalDate

class UserInformationDialog : DialogFragment() {

Expand Down Expand Up @@ -75,13 +73,12 @@ class UserInformationDialog : DialogFragment() {
binding.dialogErrorView.isVisible = false
}

private fun onSuccess(editCount: String, registrationDate: Date) {
private fun onSuccess(editCount: String, registrationDate: LocalDate) {
sendPatrollerExperienceEvent()
binding.userInformationContainer.isVisible = true
binding.dialogProgressBar.isVisible = false
binding.dialogErrorView.isVisible = false
val localDate = LocalDateTime.ofInstant(registrationDate.toInstant(), ZoneId.systemDefault()).toLocalDate()
val dateStr = DateUtil.getShortDateString(localDate)
val dateStr = DateUtil.getShortDateString(registrationDate)
binding.userTenure.text = StringUtil.fromHtml(getString(R.string.patroller_tasks_edits_list_user_information_dialog_joined_date_text, dateStr))
binding.editCount.text = StringUtil.fromHtml(getString(R.string.patroller_tasks_edits_list_user_information_dialog_edit_count_text, editCount))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ import org.wikipedia.WikipediaApp
import org.wikipedia.dataclient.ServiceFactory
import org.wikipedia.dataclient.WikiSite
import org.wikipedia.util.Resource
import java.util.Date
import java.time.LocalDate

class UserInformationDialogViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {
var userName = savedStateHandle.get<String>(UserInformationDialog.USERNAME_ARG)!!

private val _uiState = MutableStateFlow(Resource<Pair<String, Date>>())
private val _uiState = MutableStateFlow(Resource<Pair<String, LocalDate>>())
val uiState = _uiState.asStateFlow()

init {
Expand All @@ -31,7 +31,7 @@ class UserInformationDialogViewModel(savedStateHandle: SavedStateHandle) : ViewM
val userInfo = ServiceFactory.get(WikiSite.forLanguageCode(WikipediaApp.instance.appOrSystemLanguageCode)).globalUserInfo(userName)
userInfo.query?.globalUserInfo?.let {
val editCount = String.format("%,d", it.editCount)
_uiState.value = Resource.Success(Pair(editCount, it.registrationDate))
_uiState.value = Resource.Success(editCount to it.registrationDate)
} ?: run {
_uiState.value = Resource.Error(Throwable("Cannot fetch user information."))
}
Expand Down
18 changes: 7 additions & 11 deletions app/src/main/java/org/wikipedia/util/DateUtil.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,11 @@ import org.wikipedia.R
import org.wikipedia.WikipediaApp
import org.wikipedia.feed.model.UtcDate
import java.text.SimpleDateFormat
import java.time.Instant
import java.time.LocalDate
import java.time.LocalDateTime
import java.time.ZoneId
import java.time.ZoneOffset
import java.time.*
import java.time.format.DateTimeFormatter
import java.time.format.FormatStyle
import java.time.temporal.TemporalAccessor
import java.util.Calendar
import java.util.Date
import java.util.GregorianCalendar
import java.util.Locale
import java.util.TimeZone
import java.util.*
import java.util.concurrent.ConcurrentHashMap

object DateUtil {
Expand All @@ -36,6 +28,10 @@ object DateUtil {
return LocalDateTime.ofInstant(Instant.parse(timestamp), ZoneId.systemDefault())
}

fun iso8601LocalDateParse(timestamp: String): LocalDate {
return LocalDate.ofInstant(Instant.parse(timestamp), ZoneId.systemDefault())
}

fun dbDateFormat(date: Date): String {
return getCachedDateFormat("yyyyMMddHHmmss", Locale.ROOT, true).format(date)
}
Expand Down Expand Up @@ -64,7 +60,7 @@ object DateUtil {
return getDateStringWithSkeletonPattern(date, "MMMM")
}

fun getYearOnlyDateString(date: Date): String {
fun getYearOnlyDateString(date: LocalDate): String {
return getDateStringWithSkeletonPattern(date, "yyyy")
}

Expand Down
25 changes: 11 additions & 14 deletions app/src/main/java/org/wikipedia/views/EditHistoryStatsView.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import org.wikipedia.util.DateUtil
import org.wikipedia.util.DimenUtil
import org.wikipedia.util.FeedbackUtil
import org.wikipedia.util.StringUtil
import java.time.LocalDateTime
import java.time.LocalDate

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

Expand All @@ -31,19 +31,16 @@ class EditHistoryStatsView constructor(context: Context, attrs: AttributeSet? =
fun setup(pageTitle: PageTitle, editHistoryStats: EditHistoryListViewModel.EditHistoryStats?) {
binding.articleTitleView.text = StringUtil.fromHtml(context.getString(R.string.page_edit_history_activity_title,
"<a href=\"#\">${pageTitle.displayText}</a>"))
editHistoryStats?.let { stats ->
val timestamp = stats.revision.timeStamp
if (timestamp.isNotBlank()) {
val createdYear = DateUtil.getYearOnlyDateString(DateUtil.iso8601DateParse(timestamp))
val localDateTime = LocalDateTime.now()
val today = DateUtil.getShortDateString(localDateTime.toLocalDate())
val lastYear = DateUtil.getShortDateString(localDateTime.minusYears(1).toLocalDate())
binding.editCountsView.text = context.resources.getQuantityString(R.plurals.page_edit_history_article_edits_since_year,
stats.allEdits.count, stats.allEdits.count, createdYear)
binding.statsGraphView.setData(stats.metrics.map { it.edits.toFloat() })
binding.statsGraphView.contentDescription = context.getString(R.string.page_edit_history_metrics_content_description, lastYear, today)
FeedbackUtil.setButtonTooltip(binding.statsGraphView)
}
editHistoryStats?.revision?.localDateTime?.let { dateTime ->
val createdYear = DateUtil.getYearOnlyDateString(dateTime.toLocalDate())
val localDate = LocalDate.now()
val today = DateUtil.getShortDateString(localDate)
val lastYear = DateUtil.getShortDateString(localDate.minusYears(1))
binding.editCountsView.text = context.resources.getQuantityString(R.plurals.page_edit_history_article_edits_since_year,
editHistoryStats.allEdits.count, editHistoryStats.allEdits.count, createdYear)
binding.statsGraphView.setData(editHistoryStats.metrics.map { it.edits.toFloat() })
binding.statsGraphView.contentDescription = context.getString(R.string.page_edit_history_metrics_content_description, lastYear, today)
FeedbackUtil.setButtonTooltip(binding.statsGraphView)
}
binding.articleTitleView.movementMethod = LinkMovementMethodExt { _ ->
context.startActivity(PageActivity.newIntentForNewTab(context, HistoryEntry(pageTitle, HistoryEntry.SOURCE_EDIT_HISTORY), pageTitle))
Expand Down
Loading