diff --git a/app/src/fdroid/java/fr.gouv.etalab.mastodon/activities/MainActivity.java b/app/src/fdroid/java/fr.gouv.etalab.mastodon/activities/MainActivity.java index 198d06092..e324217ba 100644 --- a/app/src/fdroid/java/fr.gouv.etalab.mastodon/activities/MainActivity.java +++ b/app/src/fdroid/java/fr.gouv.etalab.mastodon/activities/MainActivity.java @@ -133,8 +133,8 @@ public class MainActivity extends AppCompatActivity private DisplayNotificationsFragment notificationsFragment; private BroadcastReceiver receive_data; private boolean display_local, display_global; - private int countNewStatus = 0; - private int countNewNotifications = 0; + public static int countNewStatus = 0; + public static int countNewNotifications = 0; public MainActivity() { } diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayNotificationsFragment.java b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayNotificationsFragment.java index bdcf20828..fb39c26b3 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayNotificationsFragment.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayNotificationsFragment.java @@ -29,6 +29,8 @@ import android.widget.RelativeLayout; import android.widget.Toast; import java.util.ArrayList; import java.util.List; + +import fr.gouv.etalab.mastodon.activities.MainActivity; import fr.gouv.etalab.mastodon.client.APIResponse; import fr.gouv.etalab.mastodon.client.Entities.Account; import fr.gouv.etalab.mastodon.drawers.NotificationsListAdapter; @@ -60,6 +62,8 @@ public class DisplayNotificationsFragment extends Fragment implements OnRetrieve private SwipeRefreshLayout swipeRefreshLayout; private boolean swiped; private ListView lv_notifications; + private String userId; + private String lastReadNotifications; public DisplayNotificationsFragment(){ } @@ -85,6 +89,8 @@ public class DisplayNotificationsFragment extends Fragment implements OnRetrieve nextElementLoader.setVisibility(View.GONE); boolean isOnWifi = Helper.isOnWIFI(context); int behaviorWithAttachments = sharedpreferences.getInt(Helper.SET_ATTACHMENT_ACTION, Helper.ATTACHMENT_ALWAYS); + userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null); + lastReadNotifications = sharedpreferences.getString(Helper.LAST_NOTIFICATION_MAX_ID + userId, null); notificationsListAdapter = new NotificationsListAdapter(context,isOnWifi, behaviorWithAttachments,this.notifications); lv_notifications.setAdapter(notificationsListAdapter); lv_notifications.setOnScrollListener(new AbsListView.OnScrollListener() { @@ -186,17 +192,13 @@ public class DisplayNotificationsFragment extends Fragment implements OnRetrieve lv_notifications.setAdapter(notificationsListAdapter); swiped = false; } - ArrayList added = new ArrayList<>(); - for(Notification notification : this.notifications){ - added.add(notification.getId()); - } if( notifications != null && notifications.size() > 0) { for(Notification tmpNotification: notifications){ - if( !added.contains(tmpNotification.getId())) { - this.notifications.add(tmpNotification); - added.add(tmpNotification.getId()); - } + if( Long.parseLong(tmpNotification.getId()) > Long.parseLong(lastReadNotifications)) + MainActivity.countNewNotifications++; + this.notifications.add(tmpNotification); } + ((MainActivity)context).updateNotifCounter(); notificationsListAdapter.notifyDataSetChanged(); } swipeRefreshLayout.setRefreshing(false); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java index a9661ee52..66bb428b4 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/fragments/DisplayStatusFragment.java @@ -34,6 +34,8 @@ import android.widget.RelativeLayout; import android.widget.Toast; import java.util.ArrayList; import java.util.List; + +import fr.gouv.etalab.mastodon.activities.MainActivity; import fr.gouv.etalab.mastodon.asynctasks.RetrieveRepliesAsyncTask; import fr.gouv.etalab.mastodon.client.APIResponse; import fr.gouv.etalab.mastodon.client.Entities.Account; @@ -272,24 +274,18 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn lv_status.setAdapter(statusListAdapter); swiped = false; } - //Avoids to add a second time the same status, can happen due call in on resume - ArrayList added = new ArrayList<>(); - for(Status status : this.statuses){ - added.add(status.getId()); - } if( statuses != null && statuses.size() > 0) { for(Status tmpStatus: statuses){ - if( !added.contains(tmpStatus.getId())) { - this.statuses.add(tmpStatus); - added.add(tmpStatus.getId()); - if( Long.parseLong(tmpStatus.getId()) > Long.parseLong(lastReadStatus)){ - tmpStatus.setNew(true); - }else { - tmpStatus.setNew(false); - } + if( type == RetrieveFeedsAsyncTask.Type.HOME && firstLoad && Long.parseLong(tmpStatus.getId()) > Long.parseLong(lastReadStatus)){ + tmpStatus.setNew(true); + MainActivity.countNewStatus++; + }else { + tmpStatus.setNew(false); } + this.statuses.add(tmpStatus); } statusListAdapter.notifyDataSetChanged(); + ((MainActivity)context).updateHomeCounter(); } swipeRefreshLayout.setRefreshing(false);