From eed13f0e5954ff22bae888bea4be97a6d813877c Mon Sep 17 00:00:00 2001 From: Balazs Toldi Date: Tue, 25 Jul 2023 08:07:01 +0200 Subject: [PATCH] Basic search functionality for users Signed-off-by: Balazs Toldi --- .../java/eu/toldi/infinityforlemmy/SortType.java | 2 +- .../adapters/UserListingRecyclerViewAdapter.java | 7 ++++--- .../fragments/UserListingFragment.java | 7 ++++--- .../infinityforlemmy/user/FetchUserData.java | 8 +++----- .../infinityforlemmy/user/ParseUserData.java | 8 ++++---- .../user/UserListingDataSource.java | 16 ++++++++-------- 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/eu/toldi/infinityforlemmy/SortType.java b/app/src/main/java/eu/toldi/infinityforlemmy/SortType.java index f4a24392..94457177 100644 --- a/app/src/main/java/eu/toldi/infinityforlemmy/SortType.java +++ b/app/src/main/java/eu/toldi/infinityforlemmy/SortType.java @@ -60,7 +60,7 @@ public class SortType { public static Type fromValue(String value) { for (Type type : values()) { - if (type.value.equals(value)) { + if (type.value.equalsIgnoreCase(value)) { return type; } } diff --git a/app/src/main/java/eu/toldi/infinityforlemmy/adapters/UserListingRecyclerViewAdapter.java b/app/src/main/java/eu/toldi/infinityforlemmy/adapters/UserListingRecyclerViewAdapter.java index b8987e39..2f3fa53b 100644 --- a/app/src/main/java/eu/toldi/infinityforlemmy/adapters/UserListingRecyclerViewAdapter.java +++ b/app/src/main/java/eu/toldi/infinityforlemmy/adapters/UserListingRecyclerViewAdapter.java @@ -27,7 +27,6 @@ import java.util.concurrent.Executor; import butterknife.BindView; import butterknife.ButterKnife; -import jp.wasabeef.glide.transformations.RoundedCornersTransformation; import eu.toldi.infinityforlemmy.NetworkState; import eu.toldi.infinityforlemmy.R; import eu.toldi.infinityforlemmy.RedditDataRoomDatabase; @@ -36,6 +35,8 @@ import eu.toldi.infinityforlemmy.asynctasks.CheckIsFollowingUser; import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper; import eu.toldi.infinityforlemmy.user.UserData; import eu.toldi.infinityforlemmy.user.UserFollowing; +import eu.toldi.infinityforlemmy.utils.LemmyUtils; +import jp.wasabeef.glide.transformations.RoundedCornersTransformation; import pl.droidsonroids.gif.GifImageView; import retrofit2.Retrofit; @@ -119,7 +120,7 @@ public class UserListingRecyclerViewAdapter extends PagedListAdapter userInfo = api.searchUsers(query, after, sortType, nsfw ? 1 : 0); + Call userInfo = api.search(query, null, null, null, "Users", sortType.value, "All", page, 25, null); userInfo.enqueue(new Callback<>() { @Override public void onResponse(@NonNull Call call, @NonNull retrofit2.Response response) { diff --git a/app/src/main/java/eu/toldi/infinityforlemmy/user/ParseUserData.java b/app/src/main/java/eu/toldi/infinityforlemmy/user/ParseUserData.java index 3237696e..0833a76a 100644 --- a/app/src/main/java/eu/toldi/infinityforlemmy/user/ParseUserData.java +++ b/app/src/main/java/eu/toldi/infinityforlemmy/user/ParseUserData.java @@ -27,7 +27,7 @@ public class ParseUserData { } - JSONObject personJson = userDataJson.getJSONObject("person_view").getJSONObject("person"); + JSONObject personJson = (userDataJson.has("person_view")) ? userDataJson.getJSONObject("person_view").getJSONObject("person") : userDataJson.getJSONObject("person"); String userName = personJson.getString(JSONUtils.NAME_KEY); String actor_id = personJson.getString("actor_id"); String iconImageUrl = ""; @@ -38,7 +38,7 @@ public class ParseUserData { if (!personJson.isNull("banner")) { bannerImageUrl = personJson.getString("banner"); } - JSONObject countsJson = userDataJson.getJSONObject("person_view").getJSONObject("counts"); + JSONObject countsJson = (userDataJson.has("person_view")) ? userDataJson.getJSONObject("person_view").getJSONObject("counts") : userDataJson.getJSONObject("counts"); int linkKarma = countsJson.getInt(JSONUtils.POST_SCORE_KEY); int commentKarma = countsJson.getInt(JSONUtils.COMMENT_SCORE_KEY); @@ -150,8 +150,8 @@ public class ParseUserData { protected Void doInBackground(Void... voids) { try { if (!parseFailed) { - after = jsonResponse.getJSONObject(JSONUtils.DATA_KEY).getString(JSONUtils.AFTER_KEY); - JSONArray children = jsonResponse.getJSONObject(JSONUtils.DATA_KEY).getJSONArray(JSONUtils.CHILDREN_KEY); + + JSONArray children = jsonResponse.getJSONArray("users"); for (int i = 0; i < children.length(); i++) { try { UserData userData = parseUserDataBase(children.getJSONObject(i), false); diff --git a/app/src/main/java/eu/toldi/infinityforlemmy/user/UserListingDataSource.java b/app/src/main/java/eu/toldi/infinityforlemmy/user/UserListingDataSource.java index 578e708f..1d503bb1 100644 --- a/app/src/main/java/eu/toldi/infinityforlemmy/user/UserListingDataSource.java +++ b/app/src/main/java/eu/toldi/infinityforlemmy/user/UserListingDataSource.java @@ -10,7 +10,7 @@ import eu.toldi.infinityforlemmy.NetworkState; import eu.toldi.infinityforlemmy.SortType; import retrofit2.Retrofit; -public class UserListingDataSource extends PageKeyedDataSource { +public class UserListingDataSource extends PageKeyedDataSource { private Retrofit retrofit; private String query; @@ -21,8 +21,8 @@ public class UserListingDataSource extends PageKeyedDataSource private MutableLiveData initialLoadStateLiveData; private MutableLiveData hasUserLiveData; - private PageKeyedDataSource.LoadParams params; - private PageKeyedDataSource.LoadCallback callback; + private PageKeyedDataSource.LoadParams params; + private PageKeyedDataSource.LoadCallback callback; UserListingDataSource(Retrofit retrofit, String query, SortType sortType, boolean nsfw) { this.retrofit = retrofit; @@ -47,7 +47,7 @@ public class UserListingDataSource extends PageKeyedDataSource } @Override - public void loadInitial(@NonNull PageKeyedDataSource.LoadInitialParams params, @NonNull PageKeyedDataSource.LoadInitialCallback callback) { + public void loadInitial(@NonNull PageKeyedDataSource.LoadInitialParams params, @NonNull PageKeyedDataSource.LoadInitialCallback callback) { initialLoadStateLiveData.postValue(NetworkState.LOADING); FetchUserData.fetchUserListingData(retrofit, query, null, sortType.getType(), nsfw, @@ -56,7 +56,7 @@ public class UserListingDataSource extends PageKeyedDataSource public void onFetchUserListingDataSuccess(ArrayList UserData, String after) { hasUserLiveData.postValue(UserData.size() != 0); - callback.onResult(UserData, null, after); + callback.onResult(UserData, null, 2); initialLoadStateLiveData.postValue(NetworkState.LOADED); } @@ -68,12 +68,12 @@ public class UserListingDataSource extends PageKeyedDataSource } @Override - public void loadBefore(@NonNull PageKeyedDataSource.LoadParams params, @NonNull PageKeyedDataSource.LoadCallback callback) { + public void loadBefore(@NonNull PageKeyedDataSource.LoadParams params, @NonNull PageKeyedDataSource.LoadCallback callback) { } @Override - public void loadAfter(@NonNull PageKeyedDataSource.LoadParams params, @NonNull PageKeyedDataSource.LoadCallback callback) { + public void loadAfter(@NonNull PageKeyedDataSource.LoadParams params, @NonNull PageKeyedDataSource.LoadCallback callback) { this.params = params; this.callback = callback; @@ -85,7 +85,7 @@ public class UserListingDataSource extends PageKeyedDataSource new FetchUserData.FetchUserListingDataListener() { @Override public void onFetchUserListingDataSuccess(ArrayList UserData, String after) { - callback.onResult(UserData, after); + callback.onResult(UserData, params.key + 1); paginationNetworkStateLiveData.postValue(NetworkState.LOADED); }