aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Ning <chineseperson5@gmail.com>2019-09-22 14:02:50 +0000
committerAlex Ning <chineseperson5@gmail.com>2019-09-22 14:02:50 +0000
commit41b0b31f2c04aa783620c3a26a6156e5de5691a2 (patch)
tree3dbbce405694da6d091d188fa9ee133ffae5d5e1
parent52b27971ffff6e57247ce06a7363cbaf37495d82 (diff)
downloadinfinity-for-reddit-41b0b31f2c04aa783620c3a26a6156e5de5691a2.tar
infinity-for-reddit-41b0b31f2c04aa783620c3a26a6156e5de5691a2.tar.gz
infinity-for-reddit-41b0b31f2c04aa783620c3a26a6156e5de5691a2.tar.bz2
infinity-for-reddit-41b0b31f2c04aa783620c3a26a6156e5de5691a2.tar.lz
infinity-for-reddit-41b0b31f2c04aa783620c3a26a6156e5de5691a2.tar.xz
infinity-for-reddit-41b0b31f2c04aa783620c3a26a6156e5de5691a2.tar.zst
infinity-for-reddit-41b0b31f2c04aa783620c3a26a6156e5de5691a2.zip
Only show the new messages within the the notification interval to prevent showing the same notifications over and over again. Version 1.1.1.
-rw-r--r--.idea/caches/build_file_checksums.serbin533 -> 533 bytes
-rw-r--r--.idea/caches/gradle_models.serbin307416 -> 307419 bytes
-rw-r--r--app/build.gradle4
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/PullNotificationWorker.java40
4 files changed, 31 insertions, 13 deletions
diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index b4e0cc0d..927cfcb0 100644
--- a/.idea/caches/build_file_checksums.ser
+++ b/.idea/caches/build_file_checksums.ser
Binary files differ
diff --git a/.idea/caches/gradle_models.ser b/.idea/caches/gradle_models.ser
index 974b9c36..14c7f69a 100644
--- a/.idea/caches/gradle_models.ser
+++ b/.idea/caches/gradle_models.ser
Binary files differ
diff --git a/app/build.gradle b/app/build.gradle
index 72b0264c..061022da 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -6,8 +6,8 @@ android {
applicationId "ml.docilealligator.infinityforreddit"
minSdkVersion 21
targetSdkVersion 29
- versionCode 11
- versionName "1.1.0"
+ versionCode 12
+ versionName "1.1.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PullNotificationWorker.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PullNotificationWorker.java
index ed7d104a..ef0281f5 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/PullNotificationWorker.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PullNotificationWorker.java
@@ -3,7 +3,9 @@ package ml.docilealligator.infinityforreddit;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.net.Uri;
+import android.util.Log;
import androidx.annotation.NonNull;
import androidx.core.app.NotificationCompat;
@@ -16,6 +18,7 @@ import org.json.JSONObject;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -42,7 +45,10 @@ public class PullNotificationWorker extends Worker {
Retrofit mRetrofit;
@Inject
- RedditDataRoomDatabase redditDataRoomDatabase;
+ RedditDataRoomDatabase mRedditDataRoomDatabase;
+
+ @Inject
+ SharedPreferences mSharedPreferences;
public PullNotificationWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
@@ -54,7 +60,7 @@ public class PullNotificationWorker extends Worker {
@Override
public Result doWork() {
try {
- List<Account> accounts = redditDataRoomDatabase.accountDao().getAllAccounts();
+ List<Account> accounts = mRedditDataRoomDatabase.accountDao().getAllAccounts();
for(int accountIndex = 0; accountIndex < accounts.size(); accountIndex++) {
Account account = accounts.get(accountIndex);
@@ -78,9 +84,19 @@ public class PullNotificationWorker extends Worker {
NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
int messageSize = messages.size() >= 5 ? 5 : messages.size();
+ long currentTime = Calendar.getInstance().getTimeInMillis();
+ long notificationInterval = Long.parseLong(
+ mSharedPreferences.getString(SharedPreferencesUtils.NOTIFICATION_INTERVAL_KEY, "1"))
+ * 1000 * 60 * 60;
+ boolean hasValidMessage = false;
for(int messageIndex = messageSize - 1; messageIndex >= 0; messageIndex--) {
Message message = messages.get(messageIndex);
+ if(currentTime - message.getTimeUTC() > notificationInterval) {
+ continue;
+ }
+
+ hasValidMessage = true;
inboxStyle.addLine(message.getAuthor() + " " + message.getBody());
@@ -149,17 +165,19 @@ public class PullNotificationWorker extends Worker {
notificationManager.notify(NotificationUtils.getNotificationIdUnreadMessage(accountIndex, messageIndex), builder.build());
}
- inboxStyle.setBigContentTitle(context.getString(R.string.notification_new_messages, messages.size()))
- .setSummaryText(accountName);
+ if(hasValidMessage) {
+ inboxStyle.setBigContentTitle(context.getString(R.string.notification_new_messages, messages.size()))
+ .setSummaryText(accountName);
- summaryBuilder.setStyle(inboxStyle);
+ summaryBuilder.setStyle(inboxStyle);
- Intent summaryIntent = new Intent(context, ViewMessageActivity.class);
- summaryIntent.putExtra(ViewMessageActivity.EXTRA_NEW_ACCOUNT_NAME, accountName);
- PendingIntent summaryPendingIntent = PendingIntent.getActivity(context, accountIndex * 6 + 6, summaryIntent, PendingIntent.FLAG_UPDATE_CURRENT);
- summaryBuilder.setContentIntent(summaryPendingIntent);
+ Intent summaryIntent = new Intent(context, ViewMessageActivity.class);
+ summaryIntent.putExtra(ViewMessageActivity.EXTRA_NEW_ACCOUNT_NAME, accountName);
+ PendingIntent summaryPendingIntent = PendingIntent.getActivity(context, accountIndex * 6 + 6, summaryIntent, PendingIntent.FLAG_UPDATE_CURRENT);
+ summaryBuilder.setContentIntent(summaryPendingIntent);
- notificationManager.notify(NotificationUtils.getSummaryIdUnreadMessage(accountIndex), summaryBuilder.build());
+ notificationManager.notify(NotificationUtils.getSummaryIdUnreadMessage(accountIndex), summaryBuilder.build());
+ }
} else {
return Result.success();
}
@@ -218,7 +236,7 @@ public class PullNotificationWorker extends Worker {
if(response.isSuccessful() && response.body() != null) {
JSONObject jsonObject = new JSONObject(response.body().toString());
String newAccessToken = jsonObject.getString(RedditUtils.ACCESS_TOKEN_KEY);
- redditDataRoomDatabase.accountDao().changeAccessToken(account.getUsername(), newAccessToken);
+ mRedditDataRoomDatabase.accountDao().changeAccessToken(account.getUsername(), newAccessToken);
return newAccessToken;
}
return "";