mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 17:29:32 +01:00
Cancel scheduled message alarm if no messages are scheduled.
This commit is contained in:
committed by
Greyson Parrelli
parent
ad70baf557
commit
583860053b
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user