1
0
Fork 0
mirror of https://github.com/M66B/FairEmail.git synced 2025-02-24 15:11:03 +00:00

Ensure future time condition

This commit is contained in:
M66B 2019-08-23 19:50:50 +02:00
parent d8d3a4c88c
commit 7ca2b51d95

View file

@ -180,25 +180,8 @@ public class EntityRule {
int start = jschedule.optInt("start", 0);
int end = jschedule.optInt("end", 0);
int dstart = start / (24 * 60);
int hstart = start / 60 % 24;
int mstart = start % 60;
int dend = end / (24 * 60);
int hend = end / 60 % 24;
int mend = end % 60;
Calendar cal_start = Calendar.getInstance();
cal_start.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY + dstart);
cal_start.set(Calendar.HOUR_OF_DAY, hstart);
cal_start.set(Calendar.MINUTE, mstart);
cal_start.set(Calendar.SECOND, 0);
Calendar cal_end = Calendar.getInstance();
cal_end.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY + dend);
cal_end.set(Calendar.HOUR_OF_DAY, hend);
cal_end.set(Calendar.MINUTE, mend);
cal_end.set(Calendar.SECOND, 0);
Calendar cal_start = getRelativeCalendar(start);
Calendar cal_end = getRelativeCalendar(end);
if (cal_start.getTimeInMillis() > cal_end.getTimeInMillis())
cal_start.add(Calendar.HOUR_OF_DAY, -7 * 24);
@ -372,15 +355,7 @@ public class EntityRule {
throw new IllegalArgumentException("Rule snooze schedule not found");
int end = jschedule.optInt("end", 0);
int day = end / (24 * 60);
int hour = end / 60 % 24;
int minute = end % 60;
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY + day);
cal.set(Calendar.HOUR_OF_DAY, hour);
cal.set(Calendar.MINUTE, minute);
cal.set(Calendar.SECOND, 0);
Calendar cal = getRelativeCalendar(end);
wakeup = cal.getTimeInMillis() + duration * 3600 * 1000L;
} else
wakeup = message.received + duration * 3600 * 1000L;
@ -403,6 +378,25 @@ public class EntityRule {
return true;
}
private static Calendar getRelativeCalendar(int minutes) {
int d = minutes / (24 * 60);
int h = minutes / 60 % 24;
int m = minutes % 60;
Calendar cal = Calendar.getInstance();
long now = cal.getTimeInMillis();
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY + d);
if (cal.getTimeInMillis() < now)
cal.add(Calendar.HOUR_OF_DAY, 7 * 24);
cal.set(Calendar.HOUR_OF_DAY, h);
cal.set(Calendar.MINUTE, m);
cal.set(Calendar.SECOND, 0);
return cal;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof EntityRule) {