Cancel scheduled message alarm if no messages are scheduled.

main
Cody Henthorne 2023-02-15 17:06:27 -05:00 zatwierdzone przez Greyson Parrelli
rodzic ad70baf557
commit 583860053b
2 zmienionych plików z 14 dodań i 4 usunięć

Wyświetl plik

@ -15,7 +15,6 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.jobs.IndividualSendJob
import org.thoughtcrime.securesms.jobs.PushGroupSendJob
import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.util.ServiceUtil
import kotlin.time.Duration.Companion.seconds
/**
@ -38,7 +37,12 @@ class ScheduledMessageManager(
@Suppress("UsePropertyAccessSyntax")
@WorkerThread
override fun getNextClosestEvent(): Event? {
val oldestMessage = messagesTable.getOldestScheduledSendTimestamp() as? MediaMmsMessageRecord ?: return null
val oldestMessage: MediaMmsMessageRecord? = messagesTable.getOldestScheduledSendTimestamp() as? MediaMmsMessageRecord
if (oldestMessage == null) {
cancelAlarm(application, ScheduledMessagesAlarm::class.java)
return null
}
val delay = (oldestMessage.scheduledDate - System.currentTimeMillis()).coerceAtLeast(0)
Log.i(TAG, "The next scheduled message needs to be sent in $delay ms.")
@ -69,8 +73,6 @@ class ScheduledMessageManager(
override fun scheduleAlarm(application: Application, event: Event, delay: Long) {
val conversationIntent = ConversationIntents.createBuilder(application, event.recipientId, event.threadId).build()
ServiceUtil.getAlarmManager(application)
trySetExactAlarm(
application,
System.currentTimeMillis() + delay,

Wyświetl plik

@ -117,4 +117,12 @@ public abstract class TimedEventManager<E> {
Log.w(TAG, "Unable to schedule exact alarm, falling back to inexact alarm, scheduling alarm for: " + timestamp);
alarmManager.set(AlarmManager.RTC_WAKEUP, timestamp, pendingIntent);
}
protected static void cancelAlarm(@NonNull Context context, @NonNull Class<? extends BroadcastReceiver> alarmClass) {
Intent intent = new Intent(context, alarmClass);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntentFlags.mutable());
pendingIntent.cancel();
ServiceUtil.getAlarmManager(context).cancel(pendingIntent);
}
}