From fd16e3d61976e4edbbb9531c9a9554cfbdaaecf3 Mon Sep 17 00:00:00 2001 From: Gibran Chevalley Date: Tue, 18 Feb 2025 09:19:07 +0100 Subject: [PATCH] feat: Display year date when the date is on another year --- app/src/main/java/com/infomaniak/mail/ui/MainActivity.kt | 4 ++-- .../ui/bottomSheetDialogs/ScheduleSendBottomSheetDialog.kt | 6 +++--- .../com/infomaniak/mail/ui/main/thread/ThreadAdapter.kt | 6 +++--- .../java/com/infomaniak/mail/utils/date/DateFormatUtils.kt | 5 ++++- .../com/infomaniak/mail/utils/date/MailDateFormatUtils.kt | 7 +++++++ 5 files changed, 19 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/infomaniak/mail/ui/MainActivity.kt b/app/src/main/java/com/infomaniak/mail/ui/MainActivity.kt index 742bed5ab6..b84732376f 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/MainActivity.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/MainActivity.kt @@ -70,7 +70,7 @@ import com.infomaniak.mail.utils.* import com.infomaniak.mail.utils.UiUtils.progressivelyColorSystemBars import com.infomaniak.mail.utils.Utils.Shortcuts import com.infomaniak.mail.utils.Utils.openShortcutHelp -import com.infomaniak.mail.utils.date.DateFormatUtils.dayOfWeekDate +import com.infomaniak.mail.utils.date.MailDateFormatUtils.formatDayOfWeekAdaptiveYear import com.infomaniak.mail.utils.extensions.isUserAlreadySynchronized import com.infomaniak.mail.workers.DraftsActionsWorker import dagger.hilt.android.AndroidEntryPoint @@ -333,7 +333,7 @@ class MainActivity : BaseActivity() { private fun showScheduledDraftSnackbar(scheduleDate: Date, unscheduleDraftUrl: String) { showSendingSnackbarTimer.cancel() - val dateString = dayOfWeekDate(date = scheduleDate) + val dateString = formatDayOfWeekAdaptiveYear(scheduleDate) snackbarManager.setValue( title = String.format(getString(R.string.snackbarScheduleSaved), dateString), diff --git a/app/src/main/java/com/infomaniak/mail/ui/bottomSheetDialogs/ScheduleSendBottomSheetDialog.kt b/app/src/main/java/com/infomaniak/mail/ui/bottomSheetDialogs/ScheduleSendBottomSheetDialog.kt index ecb026026c..41bb05c3d8 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/bottomSheetDialogs/ScheduleSendBottomSheetDialog.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/bottomSheetDialogs/ScheduleSendBottomSheetDialog.kt @@ -33,7 +33,7 @@ import com.infomaniak.mail.R import com.infomaniak.mail.databinding.BottomSheetScheduleSendBinding import com.infomaniak.mail.ui.alertDialogs.SelectDateAndTimeForScheduledDraftDialog.Companion.MIN_SCHEDULE_DELAY_MINUTES import com.infomaniak.mail.ui.main.thread.actions.ActionItemView -import com.infomaniak.mail.utils.date.DateFormatUtils.dayOfWeekDate +import com.infomaniak.mail.utils.date.DateFormatUtils.dayOfWeekDateWithoutYear import dagger.hilt.android.AndroidEntryPoint import java.util.Date import javax.inject.Inject @@ -74,7 +74,7 @@ class ScheduleSendBottomSheetDialog @Inject constructor() : BottomSheetDialogFra private fun computeLastScheduleItem() = with(binding) { if (Date(lastSelectedScheduleEpoch).isAtLeastXMinutesInTheFuture(MIN_SCHEDULE_DELAY_MINUTES)) { lastScheduleItem.isVisible = true - lastScheduleItem.setDescription(context.dayOfWeekDate(date = Date(lastSelectedScheduleEpoch))) + lastScheduleItem.setDescription(context.dayOfWeekDateWithoutYear(date = Date(lastSelectedScheduleEpoch))) } } @@ -102,7 +102,7 @@ class ScheduleSendBottomSheetDialog @Inject constructor() : BottomSheetDialogFra private fun createScheduleItem(schedule: Schedule): ActionItemView = ActionItemView(requireContext()).apply { setTitle(schedule.scheduleTitleRes) - setDescription(context.dayOfWeekDate(date = schedule.date())) + setDescription(context.dayOfWeekDateWithoutYear(date = schedule.date())) setIconResource(schedule.scheduleIconRes) setOnClickListener { trackScheduleSendEvent(schedule.matomoValue) diff --git a/app/src/main/java/com/infomaniak/mail/ui/main/thread/ThreadAdapter.kt b/app/src/main/java/com/infomaniak/mail/ui/main/thread/ThreadAdapter.kt index 22d61843e4..820bff63d9 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/main/thread/ThreadAdapter.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/main/thread/ThreadAdapter.kt @@ -39,7 +39,7 @@ import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView.ViewHolder import androidx.viewbinding.ViewBinding -import com.infomaniak.lib.core.utils.FORMAT_DATE_DAY_FULL_MONTH_WITH_TIME +import com.infomaniak.lib.core.utils.FORMAT_DATE_DAY_FULL_MONTH_YEAR_WITH_TIME import com.infomaniak.lib.core.utils.FormatterFileSize.formatShortFileSize import com.infomaniak.lib.core.utils.context import com.infomaniak.lib.core.utils.format @@ -57,7 +57,6 @@ import com.infomaniak.mail.databinding.ItemMessageBinding import com.infomaniak.mail.databinding.ItemSuperCollapsedBlockBinding import com.infomaniak.mail.ui.main.thread.ThreadAdapter.ThreadAdapterViewHolder import com.infomaniak.mail.utils.* -import com.infomaniak.mail.utils.date.MailDateFormatUtils.mailFormattedDate import com.infomaniak.mail.utils.SharedUtils.Companion.createHtmlForPlainText import com.infomaniak.mail.utils.UiUtils.getPrettyNameAndEmail import com.infomaniak.mail.utils.Utils.TEXT_HTML @@ -66,6 +65,7 @@ import com.infomaniak.mail.utils.Utils.runCatchingRealm import com.infomaniak.mail.utils.WebViewUtils.Companion.setupThreadWebViewSettings import com.infomaniak.mail.utils.WebViewUtils.Companion.toggleWebViewTheme import com.infomaniak.mail.utils.date.DateFormatUtils.fullDateWithYear +import com.infomaniak.mail.utils.date.MailDateFormatUtils.mailFormattedDate import com.infomaniak.mail.utils.extensions.* import com.infomaniak.mail.utils.extensions.AttachmentExtensions.AttachmentIntentType import io.sentry.Sentry @@ -356,7 +356,7 @@ class ThreadAdapter( scheduleAlert.setDescription( context.getString( R.string.scheduledEmailHeader, - message.date.toDate().format(FORMAT_DATE_DAY_FULL_MONTH_WITH_TIME), + message.date.toDate().format(FORMAT_DATE_DAY_FULL_MONTH_YEAR_WITH_TIME), ), ) scheduleSendIcon.isVisible = true diff --git a/app/src/main/java/com/infomaniak/mail/utils/date/DateFormatUtils.kt b/app/src/main/java/com/infomaniak/mail/utils/date/DateFormatUtils.kt index 2a6329fb2f..13a92a5b69 100644 --- a/app/src/main/java/com/infomaniak/mail/utils/date/DateFormatUtils.kt +++ b/app/src/main/java/com/infomaniak/mail/utils/date/DateFormatUtils.kt @@ -20,6 +20,7 @@ package com.infomaniak.mail.utils.date import android.content.Context import android.text.format.DateFormat import com.infomaniak.lib.core.utils.FORMAT_DATE_DAY_MONTH +import com.infomaniak.lib.core.utils.FORMAT_DATE_DAY_MONTH_YEAR import com.infomaniak.lib.core.utils.format import com.infomaniak.mail.R import java.util.Date @@ -38,7 +39,9 @@ object DateFormatUtils { fun Context.fullDateWithYear(date: Date): String = formatDateTime(date, FORMAT_DATE_WITH_YEAR, localHourFormat()) - fun Context.dayOfWeekDate(date: Date): String = formatDateTime(date, FORMAT_DATE_DAY_MONTH, localHourFormat()) + fun Context.dayOfWeekDateWithoutYear(date: Date): String = formatDateTime(date, FORMAT_DATE_DAY_MONTH, localHourFormat()) + + fun Context.dayOfWeekDateWithYear(date: Date): String = formatDateTime(date, FORMAT_DATE_DAY_MONTH_YEAR, localHourFormat()) private fun Context.formatDateTime(date: Date, dateFormat: String, timeFormat: String) = getString( R.string.messageDetailsDateAt, diff --git a/app/src/main/java/com/infomaniak/mail/utils/date/MailDateFormatUtils.kt b/app/src/main/java/com/infomaniak/mail/utils/date/MailDateFormatUtils.kt index 1af6ad0120..c6323c32d6 100644 --- a/app/src/main/java/com/infomaniak/mail/utils/date/MailDateFormatUtils.kt +++ b/app/src/main/java/com/infomaniak/mail/utils/date/MailDateFormatUtils.kt @@ -21,6 +21,8 @@ import android.content.Context import android.os.Build import com.infomaniak.lib.core.utils.* import com.infomaniak.mail.R +import com.infomaniak.mail.utils.date.DateFormatUtils.dayOfWeekDateWithYear +import com.infomaniak.mail.utils.date.DateFormatUtils.dayOfWeekDateWithoutYear import com.infomaniak.mail.utils.date.DateFormatUtils.formatTime import com.infomaniak.mail.utils.date.DateFormatUtils.fullDateWithYear import com.infomaniak.mail.utils.date.DateFormatUtils.fullDateWithoutYear @@ -49,4 +51,9 @@ object MailDateFormatUtils { format(FORMAT_DATE_DAY_FULL_MONTH_YEAR_WITH_TIME) } } + + fun Context.formatDayOfWeekAdaptiveYear(date: Date): String = when { + date.isThisYear() -> dayOfWeekDateWithoutYear(date) + else -> dayOfWeekDateWithYear(date) + } }