(Context context, long id, Long wakeup)
| 720 | } |
| 721 | |
| 722 | static void snooze(Context context, long id, Long wakeup) { |
| 723 | if (wakeup != null && wakeup != Long.MAX_VALUE) { |
| 724 | /* |
| 725 | java.lang.IllegalStateException: Maximum limit of concurrent alarms 500 reached for uid: u0a601, callingPackage: eu.faircode.email |
| 726 | at android.os.Parcel.createExceptionOrNull(Parcel.java:2433) |
| 727 | at android.os.Parcel.createException(Parcel.java:2409) |
| 728 | at android.os.Parcel.readException(Parcel.java:2392) |
| 729 | at android.os.Parcel.readException(Parcel.java:2334) |
| 730 | at android.app.IAlarmManager$Stub$Proxy.set(IAlarmManager.java:359) |
| 731 | at android.app.AlarmManager.setImpl(AlarmManager.java:947) |
| 732 | at android.app.AlarmManager.setImpl(AlarmManager.java:907) |
| 733 | at android.app.AlarmManager.setExactAndAllowWhileIdle(AlarmManager.java:1175) |
| 734 | at androidx.core.app.AlarmManagerCompat$Api23Impl.setExactAndAllowWhileIdle(Unknown Source:0) |
| 735 | at androidx.core.app.AlarmManagerCompat.setExactAndAllowWhileIdle(SourceFile:2) |
| 736 | at eu.faircode.email.AlarmManagerCompatEx.setAndAllowWhileIdle(SourceFile:2) |
| 737 | at eu.faircode.email.EntityMessage.snooze(SourceFile:7) |
| 738 | */ |
| 739 | DB db = DB.getInstance(context); |
| 740 | int count = db.message().getSnoozedCount(); |
| 741 | Log.i("Snoozed=" + count + "/" + MAX_SNOOZED); |
| 742 | if (count > MAX_SNOOZED) |
| 743 | throw new IllegalArgumentException( |
| 744 | String.format("Due to Android limitations, no more than %d messages can be snoozed or delayed", MAX_SNOOZED)); |
| 745 | } |
| 746 | |
| 747 | Intent snoozed = new Intent(context, ServiceSynchronize.class); |
| 748 | snoozed.setAction("unsnooze:" + id); |
| 749 | PendingIntent pi = PendingIntentCompat.getForegroundService( |
| 750 | context, ServiceSynchronize.PI_UNSNOOZE, snoozed, PendingIntent.FLAG_UPDATE_CURRENT); |
| 751 | |
| 752 | AlarmManager am = Helper.getSystemService(context, AlarmManager.class); |
| 753 | if (wakeup == null || wakeup == Long.MAX_VALUE) { |
| 754 | Log.i("Cancel snooze id=" + id); |
| 755 | am.cancel(pi); |
| 756 | } else { |
| 757 | Log.i("Set snooze id=" + id + " wakeup=" + new Date(wakeup)); |
| 758 | AlarmManagerCompatEx.setAndAllowWhileIdle(context, am, AlarmManager.RTC_WAKEUP, wakeup, pi); |
| 759 | } |
| 760 | } |
| 761 | |
| 762 | static String getSwipeType(Long type) { |
| 763 | if (type == null) |
no test coverage detected