kopia lustrzana https://github.com/ryukoposting/Signal-Android
Cancel scheduled message alarm if no messages are scheduled.
rodzic
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);
|
||||
}
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue