Avoids NRA when too much toots in federated timeline
This commit is contained in:
parent
7b9776f808
commit
31f1fbff09
|
@ -7,8 +7,8 @@ android {
|
|||
applicationId "fr.gouv.etalab.mastodon"
|
||||
minSdkVersion 15
|
||||
targetSdkVersion 25
|
||||
versionCode 54
|
||||
versionName "1.4.9-beta-6"
|
||||
versionCode 55
|
||||
versionName "1.4.9-beta-7"
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
|
|
|
@ -16,6 +16,7 @@ package fr.gouv.etalab.mastodon.asynctasks;
|
|||
|
||||
import android.content.Context;
|
||||
import android.os.AsyncTask;
|
||||
import android.util.Log;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
@ -24,6 +25,7 @@ import fr.gouv.etalab.mastodon.activities.MainActivity;
|
|||
import fr.gouv.etalab.mastodon.client.API;
|
||||
import fr.gouv.etalab.mastodon.client.APIResponse;
|
||||
import fr.gouv.etalab.mastodon.client.Entities.Notification;
|
||||
import fr.gouv.etalab.mastodon.helper.Helper;
|
||||
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveMissingNotificationsInterface;
|
||||
|
||||
|
||||
|
|
|
@ -1372,8 +1372,16 @@ public class API {
|
|||
status.setContent(resobj.get("content").toString());
|
||||
status.setFavourites_count(Integer.valueOf(resobj.get("favourites_count").toString()));
|
||||
status.setReblogs_count(Integer.valueOf(resobj.get("reblogs_count").toString()));
|
||||
status.setReblogged(Boolean.valueOf(resobj.get("reblogged").toString()));
|
||||
status.setFavourited(Boolean.valueOf(resobj.get("favourited").toString()));
|
||||
try {
|
||||
status.setReblogged(Boolean.valueOf(resobj.get("reblogged").toString()));
|
||||
}catch (Exception e){
|
||||
status.setReblogged(false);
|
||||
}
|
||||
try {
|
||||
status.setFavourited(Boolean.valueOf(resobj.get("favourited").toString()));
|
||||
}catch (Exception e){
|
||||
status.setReblogged(false);
|
||||
}
|
||||
try {
|
||||
status.setPinned(Boolean.valueOf(resobj.get("pinned").toString()));
|
||||
}catch (JSONException e){
|
||||
|
|
|
@ -19,6 +19,7 @@ import android.os.AsyncTask;
|
|||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.widget.SwipeRefreshLayout;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
@ -30,10 +31,8 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
import fr.gouv.etalab.mastodon.activities.MainActivity;
|
||||
import fr.gouv.etalab.mastodon.asynctasks.RetrieveFeedsAsyncTask;
|
||||
import fr.gouv.etalab.mastodon.asynctasks.RetrieveMissingNotificationsAsyncTask;
|
||||
import fr.gouv.etalab.mastodon.client.APIResponse;
|
||||
import fr.gouv.etalab.mastodon.client.Entities.Status;
|
||||
import fr.gouv.etalab.mastodon.drawers.NotificationsListAdapter;
|
||||
import fr.gouv.etalab.mastodon.helper.Helper;
|
||||
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveMissingNotificationsInterface;
|
||||
|
@ -184,14 +183,17 @@ public class DisplayNotificationsFragment extends Fragment implements OnRetrieve
|
|||
lv_notifications.setAdapter(notificationsListAdapter);
|
||||
swiped = false;
|
||||
}
|
||||
|
||||
if( notifications != null && notifications.size() > 0) {
|
||||
for(Notification tmpNotification: notifications){
|
||||
if( lastReadNotifications != null && Long.parseLong(tmpNotification.getId()) > Long.parseLong(lastReadNotifications))
|
||||
if( lastReadNotifications != null && Long.parseLong(tmpNotification.getId()) > Long.parseLong(lastReadNotifications)) {
|
||||
MainActivity.countNewNotifications++;
|
||||
}
|
||||
this.notifications.add(tmpNotification);
|
||||
}
|
||||
if( firstLoad) {
|
||||
//Update the id of the last notification retrieved
|
||||
|
||||
MainActivity.lastNotificationId = notifications.get(0).getId();
|
||||
SharedPreferences.Editor editor = sharedpreferences.edit();
|
||||
editor.putString(Helper.LAST_NOTIFICATION_MAX_ID + this.userId, notifications.get(0).getId());
|
||||
|
|
|
@ -19,6 +19,7 @@ import android.content.SharedPreferences;
|
|||
import android.os.AsyncTask;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Parcelable;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
|
@ -347,26 +348,26 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
|
|||
}else if(type == RetrieveFeedsAsyncTask.Type.PUBLIC){
|
||||
if (context == null)
|
||||
return;
|
||||
if (status != null) {
|
||||
if (lv_status.getFirstVisiblePosition() > 3) {
|
||||
int index = lv_status.getFirstVisiblePosition() + 1;
|
||||
View v = lv_status.getChildAt(0);
|
||||
int top = (v == null) ? 0 : v.getTop();
|
||||
status.setReplies(new ArrayList<Status>());
|
||||
statuses.add(0, status);
|
||||
statusListAdapter.notifyDataSetChanged();
|
||||
lv_status.setSelectionFromTop(index, top);
|
||||
//Avoids the array to be too big...
|
||||
|
||||
} else {
|
||||
if (status != null) {
|
||||
|
||||
if (lv_status.getFirstVisiblePosition() < 3) {
|
||||
if( statuses.size() > 40)
|
||||
statuses.subList(0, 40).clear();
|
||||
status.setReplies(new ArrayList<Status>());
|
||||
status.setNew(false);
|
||||
statuses.add(0, status);
|
||||
statusListAdapter.notifyDataSetChanged();
|
||||
} else {
|
||||
status.setReplies(new ArrayList<Status>());
|
||||
statuses.add(0, status);
|
||||
}
|
||||
if (textviewNoAction.getVisibility() == View.VISIBLE)
|
||||
textviewNoAction.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -923,6 +923,8 @@ public class Helper {
|
|||
|
||||
final NavigationView navigationView = (NavigationView) activity.findViewById(R.id.nav_view);
|
||||
navigationView.getMenu().clear();
|
||||
MainActivity.lastNotificationId = null;
|
||||
MainActivity.lastHomeId = null;
|
||||
navigationView.inflateMenu(R.menu.activity_main_drawer);
|
||||
SQLiteDatabase db = Sqlite.getInstance(activity, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
|
||||
Account account = new AccountDAO(activity,db).getAccountByID(userID);
|
||||
|
|
|
@ -116,6 +116,8 @@ public class StreamingFederatedTimelineService extends IntentService {
|
|||
continue;
|
||||
}
|
||||
event = event.substring(6);
|
||||
if( event.matches("^[0-9]{1,}$"))
|
||||
continue;
|
||||
try {
|
||||
JSONObject eventJson = new JSONObject(event);
|
||||
onRetrieveStreaming(accountStream, eventJson);
|
||||
|
|
|
@ -39,6 +39,7 @@ import android.support.v7.app.AlertDialog;
|
|||
import android.support.v7.widget.PopupMenu;
|
||||
import android.support.v7.widget.SearchView;
|
||||
import android.support.v7.widget.SwitchCompat;
|
||||
import android.util.Log;
|
||||
import android.util.Patterns;
|
||||
import android.view.Gravity;
|
||||
import android.view.LayoutInflater;
|
||||
|
|
Loading…
Reference in New Issue