diff --git a/app/src/main/java/eu/faircode/email/EntityRule.java b/app/src/main/java/eu/faircode/email/EntityRule.java
index 2388d0382d..6ead7e556d 100644
--- a/app/src/main/java/eu/faircode/email/EntityRule.java
+++ b/app/src/main/java/eu/faircode/email/EntityRule.java
@@ -499,6 +499,14 @@ public class EntityRule {
return false;
}
+ if (jcondition.has("younger")) {
+ int younger = jcondition.getInt("younger");
+ Calendar y = Calendar.getInstance();
+ y.add(Calendar.HOUR_OF_DAY, -younger);
+ if (message.received < y.getTimeInMillis())
+ return false;
+ }
+
// Safeguard
if (jsender == null &&
jrecipient == null &&
@@ -507,7 +515,8 @@ public class EntityRule {
jheader == null &&
jbody == null &&
jdate == null &&
- jschedule == null)
+ jschedule == null &&
+ !jcondition.has("younger"))
return false;
} catch (JSONException ex) {
Log.e(ex);
diff --git a/app/src/main/java/eu/faircode/email/FragmentRule.java b/app/src/main/java/eu/faircode/email/FragmentRule.java
index e9ee492c92..d3359d3086 100644
--- a/app/src/main/java/eu/faircode/email/FragmentRule.java
+++ b/app/src/main/java/eu/faircode/email/FragmentRule.java
@@ -127,6 +127,7 @@ public class FragmentRule extends FragmentBase {
private TextView tvScheduleHourStart;
private TextView tvScheduleHourEnd;
private CheckBox cbEveryDay;
+ private EditText etYounger;
private Spinner spAction;
private TextView tvActionRemark;
@@ -311,6 +312,7 @@ public class FragmentRule extends FragmentBase {
tvScheduleHourStart = view.findViewById(R.id.tvScheduleHourStart);
tvScheduleHourEnd = view.findViewById(R.id.tvScheduleHourEnd);
cbEveryDay = view.findViewById(R.id.cbEveryDay);
+ etYounger = view.findViewById(R.id.etYounger);
spAction = view.findViewById(R.id.spAction);
tvActionRemark = view.findViewById(R.id.tvActionRemark);
@@ -1224,6 +1226,8 @@ public class FragmentRule extends FragmentBase {
int end = (jschedule != null && jschedule.has("end") ? jschedule.getInt("end") : 0);
cbEveryDay.setChecked(jschedule != null && jschedule.optBoolean("all"));
+ etYounger.setText(jcondition.has("younger")
+ ? Integer.toString(jcondition.optInt("younger")) : null);
spScheduleDayStart.setSelection(start / (24 * 60));
spScheduleDayEnd.setSelection(end / (24 * 60));
@@ -1625,6 +1629,14 @@ public class FragmentRule extends FragmentBase {
jcondition.put("schedule", jschedule);
}
+ String younger = etYounger.getText().toString().trim();
+ if (!TextUtils.isEmpty(younger) && TextUtils.isDigitsOnly(younger))
+ try {
+ jcondition.put("younger", Integer.parseInt(younger));
+ } catch (Throwable ex) {
+ Log.e(ex);
+ }
+
return jcondition;
}
diff --git a/app/src/main/res/layout/fragment_rule.xml b/app/src/main/res/layout/fragment_rule.xml
index 2bf4c06d4e..bf4808392f 100644
--- a/app/src/main/res/layout/fragment_rule.xml
+++ b/app/src/main/res/layout/fragment_rule.xml
@@ -139,7 +139,6 @@
android:layout_marginTop="12dp"
android:text="@string/title_rule_age"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
- android:textColor="?android:attr/textColorPrimary"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/cbDaily" />
@@ -715,6 +714,49 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvScheduleHourEnd" />
+
+
+
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/etYounger" />
Received before
Relative time (received) between
Every day
+ Messages younger than (hours)
Regex
AND
Action