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:
parent
d8d3a4c88c
commit
7ca2b51d95
1 changed files with 22 additions and 28 deletions
|
@ -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) {
|
||||
|
|
Loading…
Reference in a new issue