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.IndividualSendJob
|
||||||
import org.thoughtcrime.securesms.jobs.PushGroupSendJob
|
import org.thoughtcrime.securesms.jobs.PushGroupSendJob
|
||||||
import org.thoughtcrime.securesms.recipients.RecipientId
|
import org.thoughtcrime.securesms.recipients.RecipientId
|
||||||
import org.thoughtcrime.securesms.util.ServiceUtil
|
|
||||||
import kotlin.time.Duration.Companion.seconds
|
import kotlin.time.Duration.Companion.seconds
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -38,7 +37,12 @@ class ScheduledMessageManager(
|
||||||
@Suppress("UsePropertyAccessSyntax")
|
@Suppress("UsePropertyAccessSyntax")
|
||||||
@WorkerThread
|
@WorkerThread
|
||||||
override fun getNextClosestEvent(): Event? {
|
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)
|
val delay = (oldestMessage.scheduledDate - System.currentTimeMillis()).coerceAtLeast(0)
|
||||||
Log.i(TAG, "The next scheduled message needs to be sent in $delay ms.")
|
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) {
|
override fun scheduleAlarm(application: Application, event: Event, delay: Long) {
|
||||||
val conversationIntent = ConversationIntents.createBuilder(application, event.recipientId, event.threadId).build()
|
val conversationIntent = ConversationIntents.createBuilder(application, event.recipientId, event.threadId).build()
|
||||||
|
|
||||||
ServiceUtil.getAlarmManager(application)
|
|
||||||
|
|
||||||
trySetExactAlarm(
|
trySetExactAlarm(
|
||||||
application,
|
application,
|
||||||
System.currentTimeMillis() + delay,
|
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);
|
Log.w(TAG, "Unable to schedule exact alarm, falling back to inexact alarm, scheduling alarm for: " + timestamp);
|
||||||
alarmManager.set(AlarmManager.RTC_WAKEUP, timestamp, pendingIntent);
|
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