diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ScheduleMessageTimePickerBottomSheet.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/ScheduleMessageTimePickerBottomSheet.kt index 57e02af9aa..3b68d9a124 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ScheduleMessageTimePickerBottomSheet.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ScheduleMessageTimePickerBottomSheet.kt @@ -9,6 +9,7 @@ import androidx.fragment.app.FragmentManager import com.google.android.material.datepicker.CalendarConstraints import com.google.android.material.datepicker.DateValidatorPointForward import com.google.android.material.datepicker.MaterialDatePicker +import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.timepicker.MaterialTimePicker import com.google.android.material.timepicker.TimeFormat import org.thoughtcrime.securesms.R @@ -64,15 +65,14 @@ class ScheduleMessageTimePickerBottomSheet : FixedRoundedCornerBottomSheetDialog scheduledMinute = scheduledLocalDateTime.minute binding.scheduleSend.setOnClickListener { - dismiss() - val messageId = arguments?.getLong(KEY_MESSAGE_ID) - if (messageId == null) { - findListener()?.onScheduleSend(getSelectedTimestamp()) + if (getSelectedTimestamp() < System.currentTimeMillis()) { + MaterialAlertDialogBuilder(requireContext()) + .setMessage(R.string.ScheduleMessageTimePickerBottomSheet__select_time_in_past_dialog_warning) + .setPositiveButton(R.string.ScheduleMessageTimePickerBottomSheet__select_time_in_past_dialog_positive_button) { _, _ -> scheduleMessageSend() } + .setNegativeButton(android.R.string.cancel, null) + .show() } else { - val selectedTime = getSelectedTimestamp() - if (selectedTime != arguments?.getLong(KEY_INITIAL_TIME)) { - findListener()?.onReschedule(selectedTime, messageId) - } + scheduleMessageSend() } } @@ -166,6 +166,19 @@ class ScheduleMessageTimePickerBottomSheet : FixedRoundedCornerBottomSheetDialog binding.timeText.text = scheduledTime.formatHours(requireContext()) } + private fun scheduleMessageSend() { + dismissAllowingStateLoss() + val messageId = arguments?.getLong(KEY_MESSAGE_ID) + if (messageId == null) { + findListener()?.onScheduleSend(getSelectedTimestamp()) + } else { + val selectedTime = getSelectedTimestamp() + if (selectedTime != arguments?.getLong(KEY_INITIAL_TIME)) { + findListener()?.onReschedule(selectedTime, messageId) + } + } + } + interface ScheduleCallback { fun onScheduleSend(scheduledTime: Long) } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f47544e6b2..fdfda3635f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -660,9 +660,12 @@ Schedule message Schedule send - All times in (%1$s) %2$s + + Selected time is in the past. This will send the message immediately. + + Send immediately Send now