From 0216e22fcc2c6175b8851d9289e15a223f877d54 Mon Sep 17 00:00:00 2001 From: sk Date: Tue, 21 Mar 2023 15:25:01 +0100 Subject: [PATCH] don't remove badge if loaded from cache --- .../org/joinmastodon/android/api/CacheController.java | 8 ++++---- .../android/fragments/NotificationsListFragment.java | 5 +++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/api/CacheController.java b/mastodon/src/main/java/org/joinmastodon/android/api/CacheController.java index 9609bfa34b..a7a0ed78b2 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/api/CacheController.java +++ b/mastodon/src/main/java/org/joinmastodon/android/api/CacheController.java @@ -128,7 +128,7 @@ public void putHomeTimeline(List posts, boolean clear){ }); } - public void getNotifications(String maxID, int count, boolean onlyMentions, boolean onlyPosts, boolean forceReload, Callback>> callback){ + public void getNotifications(String maxID, int count, boolean onlyMentions, boolean onlyPosts, boolean forceReload, Callback>> callback){ cancelDelayedClose(); databaseThread.postRunnable(()->{ try{ @@ -156,7 +156,7 @@ public void getNotifications(String maxID, int count, boolean onlyMentions, bool result.add(ntf); }while(cursor.moveToNext()); String _newMaxID=newMaxID; - uiHandler.post(()->callback.onSuccess(new PaginatedResponse<>(result, _newMaxID))); + uiHandler.post(()->callback.onSuccess(new CacheablePaginatedResponse<>(result, _newMaxID, true))); return; } }catch(IOException x){ @@ -168,7 +168,7 @@ public void getNotifications(String maxID, int count, boolean onlyMentions, bool .setCallback(new Callback<>(){ @Override public void onSuccess(List result){ - callback.onSuccess(new PaginatedResponse<>(result.stream().filter(ntf->{ + callback.onSuccess(new CacheablePaginatedResponse<>(result.stream().filter(ntf->{ if(ntf.status!=null){ for(Filter filter:filters){ if(filter.matches(ntf.status)){ @@ -177,7 +177,7 @@ public void onSuccess(List result){ } } return true; - }).collect(Collectors.toList()), result.isEmpty() ? null : result.get(result.size()-1).id)); + }).collect(Collectors.toList()), result.isEmpty() ? null : result.get(result.size()-1).id, false)); putNotifications(result, onlyMentions, onlyPosts, maxID==null); } diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsListFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsListFragment.java index 6463117352..a0cad1855d 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsListFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/NotificationsListFragment.java @@ -15,6 +15,7 @@ import org.joinmastodon.android.events.PollUpdatedEvent; import org.joinmastodon.android.events.RemoveAccountPostsEvent; import org.joinmastodon.android.model.Account; +import org.joinmastodon.android.model.CacheablePaginatedResponse; import org.joinmastodon.android.model.Filter; import org.joinmastodon.android.model.Notification; import org.joinmastodon.android.model.PaginatedResponse; @@ -128,7 +129,7 @@ protected void doLoadData(int offset, int count){ .getAccount(accountID).getCacheController() .getNotifications(offset>0 ? maxID : null, count, onlyMentions, onlyPosts, refreshing, new SimpleCallback<>(this){ @Override - public void onSuccess(PaginatedResponse> result){ + public void onSuccess(CacheablePaginatedResponse> result){ if (getActivity() == null) return; if(refreshing) relationships.clear(); @@ -140,7 +141,7 @@ public void onSuccess(PaginatedResponse> result){ loadRelationships(needRelationships); maxID=result.maxID; - if(offset==0 && !result.items.isEmpty()){ + if(offset==0 && !result.items.isEmpty() && !result.isFromCache()){ E.post(new AllNotificationsSeenEvent()); new SaveMarkers(null, result.items.get(0).id).exec(accountID); AccountSessionManager.getInstance().getAccount(accountID).markers