Reset notification marker when clearing cache

This commit is contained in:
Thomas 2022-11-16 14:24:29 +01:00
parent bf0c44e905
commit 23cecbf3c4
2 changed files with 15 additions and 5 deletions

View file

@ -140,6 +140,11 @@ public class CacheHelper {
editor.putString(entry.getKey(), null);
editor.apply();
}
//Delete last notification ref
if (entry.getKey().startsWith(context.getString(R.string.LAST_NOTIFICATION_ID) + cacheAccount.account.user_id + cacheAccount.account.instance) && !entry.getKey().endsWith(Timeline.TimeLineEnum.HOME.getValue())) {
editor.putString(entry.getKey(), null);
editor.apply();
}
}
} catch (DBException e) {
e.printStackTrace();

View file

@ -42,7 +42,6 @@ import com.bumptech.glide.request.target.CustomTarget;
import com.bumptech.glide.request.target.Target;
import com.bumptech.glide.request.transition.Transition;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@ -117,7 +116,7 @@ public class NotificationsHelper {
}
notifications.pagination = MastodonHelper.getPagination(notificationsResponse.headers());
}
} catch (IOException e) {
} catch (Exception e) {
e.printStackTrace();
}
}
@ -145,19 +144,23 @@ public class NotificationsHelper {
}
public static void onRetrieveNotifications(Context context, Notifications newNotifications, final BaseAccount account) {
List<Notification> notificationsReceived = newNotifications.notifications;
if (notificationsReceived == null || notificationsReceived.size() == 0 || account == null)
if (newNotifications == null || newNotifications.notifications == null || newNotifications.notifications.size() == 0 || account == null) {
return;
}
List<Notification> notificationsReceived = newNotifications.notifications;
String key = account.user_id + "@" + account.instance;
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(context);
boolean notif_follow = prefs.getBoolean(context.getString(R.string.SET_NOTIF_FOLLOW), true);
boolean notif_mention = prefs.getBoolean(context.getString(R.string.SET_NOTIF_MENTION), true);
boolean notif_share = prefs.getBoolean(context.getString(R.string.SET_NOTIF_SHARE), true);
boolean notif_poll = prefs.getBoolean(context.getString(R.string.SET_NOTIF_POLL), true);
boolean notif_fav = prefs.getBoolean(context.getString(R.string.SET_NOTIF_FAVOURITE), true);
boolean notif_status = prefs.getBoolean(context.getString(R.string.SET_NOTIF_STATUS), true);
final String max_id = prefs.getString(context.getString(R.string.LAST_NOTIFICATION_ID) + key, null);
final List<Notification> notifications = new ArrayList<>();
int pos = 0;
for (Notification notif : notificationsReceived) {
@ -166,8 +169,10 @@ public class NotificationsHelper {
pos++;
}
}
if (notifications.size() == 0)
if (notifications.size() == 0) {
return;
}
//No previous notifications in cache, so no notification will be sent
for (Notification notification : notifications) {