Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0f76636b authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Ignore deleted voicemail for notification"

parents d55b09c7 f2a5a278
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.provider.CallLog.Calls;
import android.provider.VoicemailContract.Voicemails;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
@@ -365,6 +366,11 @@ public class CallLogNotificationsQueryHelper {
              .and(Selection.column(Calls.NEW).is("= 1"))
              .and(Selection.column(Calls.TYPE).is("=", type))
              .and(Selection.column(Calls.IS_READ).is("IS NOT 1"));

      if (type == Calls.VOICEMAIL_TYPE) {
        selectionBuilder.and(Selection.column(Voicemails.DELETED).is(" = 0"));
      }

      if (thresholdMillis != NO_THRESHOLD) {
        selectionBuilder =
            selectionBuilder.and(
+23 −2
Original line number Diff line number Diff line
@@ -67,9 +67,11 @@ class VisualVoicemailUpdateTask implements Worker<VisualVoicemailUpdateTask.Inpu
      // Query failed, just return
      return;
    }
    boolean shouldAlert = !voicemailsToNotify.isEmpty();
    voicemailsToNotify.addAll(getAndUpdateVoicemailsWithExistingNotification(context, queryHelper));
    voicemailsToNotify = filterBlockedNumbers(context, queryHandler, voicemailsToNotify);
    boolean shouldAlert =
        !voicemailsToNotify.isEmpty()
            && voicemailsToNotify.size() > getExistingNotificationCount(context);
    voicemailsToNotify.addAll(getAndUpdateVoicemailsWithExistingNotification(context, queryHelper));
    if (voicemailsToNotify.isEmpty()) {
      LogUtil.i("VisualVoicemailUpdateTask.updateNotification", "no voicemails to notify about");
      VisualVoicemailNotifier.cancelAllVoicemailNotifications(context);
@@ -107,6 +109,25 @@ class VisualVoicemailUpdateTask implements Worker<VisualVoicemailUpdateTask.Inpu
    VoicemailNotificationJobService.scheduleJob(context);
  }

  @WorkerThread
  @NonNull
  private static int getExistingNotificationCount(Context context) {
    Assert.isWorkerThread();
    int result = 0;
    for (StatusBarNotification notification :
        DialerNotificationManager.getActiveNotifications(context)) {
      if (notification.getId() != VisualVoicemailNotifier.NOTIFICATION_ID) {
        continue;
      }
      if (TextUtils.isEmpty(notification.getTag())
          || !notification.getTag().startsWith(VisualVoicemailNotifier.NOTIFICATION_TAG_PREFIX)) {
        continue;
      }
      result++;
    }
    return result;
  }

  /**
   * Cancel notification for voicemail that is already deleted. Returns a list of voicemails that
   * already has notifications posted and should be updated.