diff --git a/clients/android/NewsBlur/src/com/newsblur/util/NotificationUtils.java b/clients/android/NewsBlur/src/com/newsblur/util/NotificationUtils.java index d63d7731f..79eaac70f 100644 --- a/clients/android/NewsBlur/src/com/newsblur/util/NotificationUtils.java +++ b/clients/android/NewsBlur/src/com/newsblur/util/NotificationUtils.java @@ -9,6 +9,7 @@ import android.content.Intent; import android.database.Cursor; import android.graphics.Bitmap; import android.os.Build; + import androidx.core.app.NotificationCompat; import androidx.core.app.NotificationManagerCompat; @@ -44,6 +45,11 @@ public class NotificationUtils { nm.cancel(story.hashCode()); continue; } + if (StoryUtils.hasOldTimestamp(story.timestamp)) { + FeedUtils.dbHelper.putStoryDismissed(story.storyHash); + nm.cancel(story.hashCode()); + continue; + } if (count < MAX_CONCUR_NOTIFY) { Notification n = buildStoryNotification(story, storiesFocus, context, iconCache); nm.notify(story.hashCode(), n); @@ -63,6 +69,11 @@ public class NotificationUtils { nm.cancel(story.hashCode()); continue; } + if (StoryUtils.hasOldTimestamp(story.timestamp)) { + FeedUtils.dbHelper.putStoryDismissed(story.storyHash); + nm.cancel(story.hashCode()); + continue; + } if (count < MAX_CONCUR_NOTIFY) { Notification n = buildStoryNotification(story, storiesUnread, context, iconCache); nm.notify(story.hashCode(), n); @@ -131,15 +142,14 @@ public class NotificationUtils { .setContentIntent(pendingIntent) .setDeleteIntent(dismissPendingIntent) .setAutoCancel(true) + .setOnlyAlertOnce(true) .setWhen(story.timestamp) .addAction(0, "Save", savePendingIntent) - .addAction(0, "Mark Read", markreadPendingIntent); + .addAction(0, "Mark Read", markreadPendingIntent) + .setColor(NOTIFY_COLOUR); if (feedIcon != null) { nb.setLargeIcon(feedIcon); } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - nb.setColor(NOTIFY_COLOUR); - } return nb.build(); } @@ -153,6 +163,4 @@ public class NotificationUtils { NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); nm.cancel(nid); } - - } diff --git a/clients/android/NewsBlur/src/com/newsblur/util/StoryUtils.java b/clients/android/NewsBlur/src/com/newsblur/util/StoryUtils.java index 3a20beaca..b79119bac 100644 --- a/clients/android/NewsBlur/src/com/newsblur/util/StoryUtils.java +++ b/clients/android/NewsBlur/src/com/newsblur/util/StoryUtils.java @@ -189,4 +189,8 @@ public class StoryUtils { return shortDateFormat.get().format(storyDate) +", " + timeFormat.format(storyDate); } } + + public static boolean hasOldTimestamp(long storyTimestamp) { + return (System.currentTimeMillis() - storyTimestamp) > (2 * DateUtils.DAY_IN_MILLIS); + } }