Change summary
src/main/java/eu/siacs/conversations/ui/ConversationFragment.java | 11
1 file changed, 9 insertions(+), 2 deletions(-)
Detailed changes
@@ -26,6 +26,7 @@ import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.res.ColorStateList;
import android.icu.util.Calendar;
+import android.icu.util.TimeZone;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
@@ -935,6 +936,7 @@ public class ConversationFragment extends XmppFragment
}
private void sendMessage(Long sendAt) {
+ if (sendAt != null && sendAt < System.currentTimeMillis()) sendAt = null; // No sending in past plz
if (mediaPreviewAdapter.hasAttachments()) {
commitAttachments();
return;
@@ -2037,11 +2039,16 @@ public class ConversationFragment extends XmppFragment
final Calendar now = Calendar.getInstance();
final var timePicker = new com.google.android.material.timepicker.MaterialTimePicker.Builder()
.setTitleText("Schedule Message")
- .setHour(now.get(Calendar.HOUR))
+ .setHour(now.get(Calendar.HOUR_OF_DAY))
.setMinute(now.get(Calendar.MINUTE))
+ .setTimeFormat(android.text.format.DateFormat.is24HourFormat(activity) ? com.google.android.material.timepicker.TimeFormat.CLOCK_24H : com.google.android.material.timepicker.TimeFormat.CLOCK_12H)
.build();
timePicker.addOnPositiveButtonClickListener((v2) -> {
- final long timestamp = date + (timePicker.getHour() * 3600000) + (timePicker.getMinute() * 60000);
+ final var dateCal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
+ dateCal.setTimeInMillis(date);
+ final var time = Calendar.getInstance();
+ time.set(dateCal.get(Calendar.YEAR), dateCal.get(Calendar.MONTH), dateCal.get(Calendar.DAY_OF_MONTH), timePicker.getHour(), timePicker.getMinute(), 0);
+ final long timestamp = time.getTimeInMillis();
sendMessage(timestamp);
Log.d(Config.LOGTAG, conversation.getAccount().getJid().asBareJid() + ": scheduled message for " + timestamp);
});