diff options
3 files changed, 16 insertions, 0 deletions
diff --git a/WordPress/src/main/java/org/wordpress/android/datasets/PeopleTable.java b/WordPress/src/main/java/org/wordpress/android/datasets/PeopleTable.java index 6b5220952..d9221ad92 100644 --- a/WordPress/src/main/java/org/wordpress/android/datasets/PeopleTable.java +++ b/WordPress/src/main/java/org/wordpress/android/datasets/PeopleTable.java @@ -6,6 +6,7 @@ import android.database.sqlite.SQLiteDatabase; import org.wordpress.android.WordPress; import org.wordpress.android.models.Person; +import org.wordpress.android.ui.people.utils.PeopleUtils; import org.wordpress.android.util.AppLog; import org.wordpress.android.util.SqlUtils; @@ -93,6 +94,17 @@ public class PeopleTable { getWritableDb().delete(PEOPLE_TABLE, "local_blog_id=?", args); } + public static void deletePeopleForLocalBlogIdExceptForFirstPage(int localTableBlogId) { + int size = getPeopleCountForLocalBlogId(localTableBlogId); + int fetchLimit = PeopleUtils.FETCH_USERS_LIMIT; + if (size > fetchLimit) { + int deleteCount = size - fetchLimit; + String[] args = new String[]{Integer.toString(deleteCount), Integer.toString(localTableBlogId)}; + getWritableDb().delete(PEOPLE_TABLE, "person_id " + + "IN (SELECT person_id FROM people ORDER BY display_name DESC LIMIT ?) AND local_blog_id=?", args); + } + } + public static void deletePerson(long personID, int localTableBlogId) { String[] args = new String[]{Long.toString(personID), Integer.toString(localTableBlogId)}; getWritableDb().delete(PEOPLE_TABLE, "person_id=? AND local_blog_id=?", args); diff --git a/WordPress/src/main/java/org/wordpress/android/ui/people/PeopleManagementActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/people/PeopleManagementActivity.java index c9a2b11f6..f7da1d59f 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/people/PeopleManagementActivity.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/people/PeopleManagementActivity.java @@ -53,6 +53,8 @@ public class PeopleManagementActivity extends AppCompatActivity } if (savedInstanceState == null) { + PeopleTable.deletePeopleForLocalBlogIdExceptForFirstPage(blog.getLocalTableBlogId()); + PeopleListFragment peopleListFragment = PeopleListFragment.newInstance(blog.getLocalTableBlogId()); peopleListFragment.setOnPersonSelectedListener(this); peopleListFragment.setOnFetchMorePeopleListener(this); diff --git a/WordPress/src/main/java/org/wordpress/android/ui/people/utils/PeopleUtils.java b/WordPress/src/main/java/org/wordpress/android/ui/people/utils/PeopleUtils.java index d56950859..bb9de18ae 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/people/utils/PeopleUtils.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/people/utils/PeopleUtils.java @@ -17,6 +17,7 @@ import java.util.List; import java.util.Map; public class PeopleUtils { + public static int FETCH_USERS_LIMIT = 20; public static void fetchUsers(final String blogId, final int localTableBlogId, final int offset, final FetchUsersCallback callback) { com.wordpress.rest.RestRequest.Listener listener = new RestRequest.Listener() { @@ -49,6 +50,7 @@ public class PeopleUtils { }; Map<String, String> params = new HashMap<>(); + params.put("number", Integer.toString(PeopleUtils.FETCH_USERS_LIMIT)); params.put("offset", Integer.toString(offset)); params.put("order_by", "display_name"); params.put("order", "ASC"); |