mirror of
https://github.com/Docile-Alligator/Infinity-For-Reddit.git
synced 2026-03-06 15:59:17 +00:00
Fix unable to search subreddits.
This commit is contained in:
@ -180,7 +180,7 @@ public class SubredditListingFragment extends Fragment implements FragmentCommun
|
||||
}
|
||||
|
||||
SubredditListingViewModel.Factory factory = new SubredditListingViewModel.Factory(
|
||||
mOauthRetrofit, query, sortType, accessToken, nsfw);
|
||||
mOauthRetrofit, query, sortType, accessToken, accountName, nsfw);
|
||||
mSubredditListingViewModel = new ViewModelProvider(this, factory).get(SubredditListingViewModel.class);
|
||||
mSubredditListingViewModel.getSubreddits().observe(getViewLifecycleOwner(), subredditData -> mAdapter.submitList(subredditData));
|
||||
|
||||
|
||||
@ -1,11 +1,15 @@
|
||||
package ml.docilealligator.infinityforreddit.subreddit;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import ml.docilealligator.infinityforreddit.SortType;
|
||||
import ml.docilealligator.infinityforreddit.account.Account;
|
||||
import ml.docilealligator.infinityforreddit.apis.RedditAPI;
|
||||
import ml.docilealligator.infinityforreddit.utils.APIUtils;
|
||||
import retrofit2.Call;
|
||||
@ -51,11 +55,12 @@ public class FetchSubredditData {
|
||||
});
|
||||
}
|
||||
|
||||
static void fetchSubredditListingData(Retrofit retrofit, String query, String after, SortType.Type sortType, String accessToken,
|
||||
boolean nsfw, final FetchSubredditListingDataListener fetchSubredditListingDataListener) {
|
||||
static void fetchSubredditListingData(Retrofit retrofit, String query, String after, SortType.Type sortType, @Nullable String accessToken,
|
||||
@NonNull String accountName, boolean nsfw, final FetchSubredditListingDataListener fetchSubredditListingDataListener) {
|
||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||
|
||||
Map<String, String> headers = APIUtils.getOAuthHeader(accessToken);
|
||||
Map<String, String> map = new HashMap<>();
|
||||
Map<String, String> headers = accountName.equals(Account.ANONYMOUS_ACCOUNT) ? Collections.unmodifiableMap(map) : APIUtils.getOAuthHeader(accessToken);
|
||||
Call<String> subredditDataCall = api.searchSubreddits(query, after, sortType, nsfw ? 1 : 0, headers);
|
||||
subredditDataCall.enqueue(new Callback<String>() {
|
||||
@Override
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package ml.docilealligator.infinityforreddit.subreddit;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
import androidx.paging.PageKeyedDataSource;
|
||||
|
||||
@ -15,7 +16,10 @@ public class SubredditListingDataSource extends PageKeyedDataSource<String, Subr
|
||||
private final Retrofit retrofit;
|
||||
private final String query;
|
||||
private final SortType sortType;
|
||||
@Nullable
|
||||
private final String accessToken;
|
||||
@NonNull
|
||||
private final String accountName;
|
||||
private final boolean nsfw;
|
||||
|
||||
private final MutableLiveData<NetworkState> paginationNetworkStateLiveData;
|
||||
@ -25,11 +29,13 @@ public class SubredditListingDataSource extends PageKeyedDataSource<String, Subr
|
||||
private LoadParams<String> params;
|
||||
private LoadCallback<String, SubredditData> callback;
|
||||
|
||||
SubredditListingDataSource(Retrofit retrofit, String query, SortType sortType, String accessToken, boolean nsfw) {
|
||||
SubredditListingDataSource(Retrofit retrofit, String query, SortType sortType, @Nullable String accessToken,
|
||||
@NonNull String accountName, boolean nsfw) {
|
||||
this.retrofit = retrofit;
|
||||
this.query = query;
|
||||
this.sortType = sortType;
|
||||
this.accessToken = accessToken;
|
||||
this.accountName = accountName;
|
||||
this.nsfw = nsfw;
|
||||
paginationNetworkStateLiveData = new MutableLiveData<>();
|
||||
initialLoadStateLiveData = new MutableLiveData<>();
|
||||
@ -52,8 +58,8 @@ public class SubredditListingDataSource extends PageKeyedDataSource<String, Subr
|
||||
public void loadInitial(@NonNull LoadInitialParams<String> params, @NonNull LoadInitialCallback<String, SubredditData> callback) {
|
||||
initialLoadStateLiveData.postValue(NetworkState.LOADING);
|
||||
|
||||
FetchSubredditData.fetchSubredditListingData(retrofit, query, null, sortType.getType(), accessToken, nsfw,
|
||||
new FetchSubredditData.FetchSubredditListingDataListener() {
|
||||
FetchSubredditData.fetchSubredditListingData(retrofit, query, null, sortType.getType(), accessToken,
|
||||
accountName, nsfw, new FetchSubredditData.FetchSubredditListingDataListener() {
|
||||
@Override
|
||||
public void onFetchSubredditListingDataSuccess(ArrayList<SubredditData> subredditData, String after) {
|
||||
if (subredditData.size() == 0) {
|
||||
@ -87,8 +93,8 @@ public class SubredditListingDataSource extends PageKeyedDataSource<String, Subr
|
||||
return;
|
||||
}
|
||||
|
||||
FetchSubredditData.fetchSubredditListingData(retrofit, query, params.key, sortType.getType(), accessToken, nsfw,
|
||||
new FetchSubredditData.FetchSubredditListingDataListener() {
|
||||
FetchSubredditData.fetchSubredditListingData(retrofit, query, params.key, sortType.getType(), accessToken,
|
||||
accountName, nsfw, new FetchSubredditData.FetchSubredditListingDataListener() {
|
||||
@Override
|
||||
public void onFetchSubredditListingDataSuccess(ArrayList<SubredditData> subredditData, String after) {
|
||||
callback.onResult(subredditData, after);
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package ml.docilealligator.infinityforreddit.subreddit;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
import androidx.paging.DataSource;
|
||||
|
||||
@ -11,17 +12,22 @@ public class SubredditListingDataSourceFactory extends DataSource.Factory {
|
||||
private final Retrofit retrofit;
|
||||
private final String query;
|
||||
private SortType sortType;
|
||||
@Nullable
|
||||
private final String accessToken;
|
||||
@NonNull
|
||||
private final String accountName;
|
||||
private final boolean nsfw;
|
||||
|
||||
private SubredditListingDataSource subredditListingDataSource;
|
||||
private final MutableLiveData<SubredditListingDataSource> subredditListingDataSourceMutableLiveData;
|
||||
|
||||
SubredditListingDataSourceFactory(Retrofit retrofit, String query, SortType sortType, String accessToken, boolean nsfw) {
|
||||
SubredditListingDataSourceFactory(Retrofit retrofit, String query, SortType sortType, @Nullable String accessToken,
|
||||
@NonNull String accountName, boolean nsfw) {
|
||||
this.retrofit = retrofit;
|
||||
this.query = query;
|
||||
this.sortType = sortType;
|
||||
this.accessToken = accessToken;
|
||||
this.accountName = accountName;
|
||||
this.nsfw = nsfw;
|
||||
subredditListingDataSourceMutableLiveData = new MutableLiveData<>();
|
||||
}
|
||||
@ -29,7 +35,8 @@ public class SubredditListingDataSourceFactory extends DataSource.Factory {
|
||||
@NonNull
|
||||
@Override
|
||||
public DataSource create() {
|
||||
subredditListingDataSource = new SubredditListingDataSource(retrofit, query, sortType, accessToken, nsfw);
|
||||
subredditListingDataSource = new SubredditListingDataSource(retrofit, query, sortType, accessToken,
|
||||
accountName, nsfw);
|
||||
subredditListingDataSourceMutableLiveData.postValue(subredditListingDataSource);
|
||||
return subredditListingDataSource;
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package ml.docilealligator.infinityforreddit.subreddit;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
import androidx.lifecycle.Transformations;
|
||||
@ -21,8 +22,8 @@ public class SubredditListingViewModel extends ViewModel {
|
||||
private final LiveData<PagedList<SubredditData>> subreddits;
|
||||
private final MutableLiveData<SortType> sortTypeLiveData;
|
||||
|
||||
public SubredditListingViewModel(Retrofit retrofit, String query, SortType sortType, String accessToken, boolean nsfw) {
|
||||
subredditListingDataSourceFactory = new SubredditListingDataSourceFactory(retrofit, query, sortType, accessToken, nsfw);
|
||||
public SubredditListingViewModel(Retrofit retrofit, String query, SortType sortType, @Nullable String accessToken, @NonNull String accountName, boolean nsfw) {
|
||||
subredditListingDataSourceFactory = new SubredditListingDataSourceFactory(retrofit, query, sortType, accessToken, accountName, nsfw);
|
||||
|
||||
initialLoadingState = Transformations.switchMap(subredditListingDataSourceFactory.getSubredditListingDataSourceMutableLiveData(),
|
||||
SubredditListingDataSource::getInitialLoadStateLiveData);
|
||||
@ -77,21 +78,26 @@ public class SubredditListingViewModel extends ViewModel {
|
||||
private final Retrofit retrofit;
|
||||
private final String query;
|
||||
private final SortType sortType;
|
||||
@Nullable
|
||||
private final String accessToken;
|
||||
@NonNull
|
||||
private final String accountName;
|
||||
private final boolean nsfw;
|
||||
|
||||
public Factory(Retrofit retrofit, String query, SortType sortType, String accessToken, boolean nsfw) {
|
||||
public Factory(Retrofit retrofit, String query, SortType sortType, @Nullable String accessToken,
|
||||
@NonNull String accountName, boolean nsfw) {
|
||||
this.retrofit = retrofit;
|
||||
this.query = query;
|
||||
this.sortType = sortType;
|
||||
this.accessToken = accessToken;
|
||||
this.accountName = accountName;
|
||||
this.nsfw = nsfw;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
|
||||
return (T) new SubredditListingViewModel(retrofit, query, sortType, accessToken, nsfw);
|
||||
return (T) new SubredditListingViewModel(retrofit, query, sortType, accessToken, accountName, nsfw);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user