Fix timezone weirdness with scheduled messages.

This commit is contained in:
Clark
2023-11-13 12:29:56 -05:00
committed by Greyson Parrelli
parent f189188563
commit b7e1863526
5 changed files with 12 additions and 16 deletions

View File

@@ -317,7 +317,7 @@ public class ConversationItemFooter extends ConstraintLayout {
} else if (messageRecord.isRateLimited()) {
dateView.setText(R.string.ConversationItem_send_paused);
} else if (MessageRecordUtil.isScheduled(messageRecord)) {
dateView.setText(DateUtils.getOnlyTimeString(getContext(), locale, ((MmsMessageRecord) messageRecord).getScheduledDate()));
dateView.setText(DateUtils.getOnlyTimeString(getContext(), ((MmsMessageRecord) messageRecord).getScheduledDate()));
} else {
long timestamp = messageRecord.getTimestamp();
if (messageRecord.isEditMessage()) {

View File

@@ -11,7 +11,6 @@ import org.thoughtcrime.securesms.util.adapter.mapping.BindingFactory
import org.thoughtcrime.securesms.util.adapter.mapping.BindingViewHolder
import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter
import org.thoughtcrime.securesms.util.adapter.mapping.MappingModel
import java.util.Locale
/**
* Renders a single call preference row when displaying call info.
@@ -82,7 +81,7 @@ object CallPreference {
}
private fun getCallTime(messageRecord: MessageRecord): String {
return DateUtils.getOnlyTimeString(context, Locale.getDefault(), messageRecord.timestamp)
return DateUtils.getOnlyTimeString(context, messageRecord.timestamp)
}
}
}

View File

@@ -161,7 +161,7 @@ public class ConversationMessage {
}
public static @NonNull FormattedDate getFormattedDate(@NonNull Context context, @NonNull MessageRecord messageRecord) {
return MessageRecordUtil.isScheduled(messageRecord) ? new FormattedDate(false, DateUtils.getOnlyTimeString(context, Locale.getDefault(), ((MmsMessageRecord) messageRecord).getScheduledDate()))
return MessageRecordUtil.isScheduled(messageRecord) ? new FormattedDate(false, DateUtils.getOnlyTimeString(context, ((MmsMessageRecord) messageRecord).getScheduledDate()))
: DateUtils.getDatelessRelativeTimeSpanFormattedDate(context, Locale.getDefault(), messageRecord.getTimestamp());
}

View File

@@ -10,7 +10,6 @@ import org.thoughtcrime.securesms.components.menu.SignalContextMenu
import org.thoughtcrime.securesms.util.DateUtils
import org.thoughtcrime.securesms.util.toLocalDateTime
import org.thoughtcrime.securesms.util.toMillis
import java.util.Locale
class ScheduleMessageContextMenu {
@@ -24,7 +23,7 @@ class ScheduleMessageContextMenu {
val scheduledTimes = getNextScheduleTimes(currentTime)
val actionItems = scheduledTimes.map {
if (it > 0) {
ActionItem(getIconForTime(it), DateUtils.getScheduledMessageDateString(anchor.context, Locale.getDefault(), it)) {
ActionItem(getIconForTime(it), DateUtils.getScheduledMessageDateString(anchor.context, it)) {
action(it)
}
} else {

View File

@@ -26,7 +26,6 @@ import org.thoughtcrime.securesms.conversation.v2.computed.FormattedDate
import java.text.DateFormatSymbols
import java.text.ParseException
import java.text.SimpleDateFormat
import java.util.Calendar
import java.util.Date
import java.util.Locale
import java.util.concurrent.TimeUnit
@@ -139,7 +138,7 @@ object DateUtils : android.text.format.DateUtils() {
FormattedDate(true, context.resources.getString(R.string.DateUtils_minutes_ago, minutes))
}
else -> {
FormattedDate(false, getOnlyTimeString(context, locale, timestamp))
FormattedDate(false, getOnlyTimeString(context, timestamp))
}
}
}
@@ -152,9 +151,8 @@ object DateUtils : android.text.format.DateUtils() {
* For 24 hour locale: 19:23
*/
@JvmStatic
fun getOnlyTimeString(context: Context, locale: Locale, timestamp: Long): String {
val format = if (context.is24HourFormat()) "HH:mm" else "hh:mm a"
return timestamp.toDateString(format, locale)
fun getOnlyTimeString(context: Context, timestamp: Long): String {
return timestamp.toLocalTime().formatHours(context)
}
/**
@@ -260,10 +258,11 @@ object DateUtils : android.text.format.DateUtils() {
}
}
fun getScheduledMessageDateString(context: Context, locale: Locale, timestamp: Long): String {
fun getScheduledMessageDateString(context: Context, timestamp: Long): String {
val localDateTime = timestamp.toLocalDateTime()
val dayModifier: String = if (isToday(timestamp)) {
val calendar = Calendar.getInstance(locale)
if (calendar[Calendar.HOUR_OF_DAY] >= 19) {
if (localDateTime.hour >= 19) {
context.getString(R.string.DateUtils_tonight)
} else {
context.getString(R.string.DateUtils_today)
@@ -271,8 +270,7 @@ object DateUtils : android.text.format.DateUtils() {
} else {
context.getString(R.string.DateUtils_tomorrow)
}
val format = if (context.is24HourFormat()) "HH:mm" else "hh:mm a"
val time = timestamp.toDateString(format, locale)
val time = localDateTime.toLocalTime().formatHours(context)
return context.getString(R.string.DateUtils_schedule_at, dayModifier, time)
}