mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-12-25 18:38:22 +01:00
Filtering posts to specific type when the type chip is clicked in posts. Minor bugs fixed related to PostDataSource to continue loading posts.
This commit is contained in:
parent
0d1fcecde6
commit
199690355b
BIN
.idea/caches/build_file_checksums.ser
generated
BIN
.idea/caches/build_file_checksums.ser
generated
Binary file not shown.
BIN
.idea/caches/gradle_models.ser
generated
BIN
.idea/caches/gradle_models.ser
generated
Binary file not shown.
@ -19,6 +19,10 @@
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme"
|
||||
android:usesCleartextTraffic="true">
|
||||
<activity
|
||||
android:name=".FilteredPostsActivity"
|
||||
android:parentActivityName=".MainActivity"
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
<activity
|
||||
android:name=".SearchSubredditsResultActivity"
|
||||
android:label="@string/search_subreddits_activity_label"
|
||||
@ -74,8 +78,8 @@
|
||||
android:name=".PostTextActivity"
|
||||
android:label="@string/post_text_activity_label"
|
||||
android:parentActivityName=".MainActivity"
|
||||
android:windowSoftInputMode="adjustResize"
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
android:theme="@style/AppTheme.NoActionBar"
|
||||
android:windowSoftInputMode="adjustResize" />
|
||||
<activity
|
||||
android:name=".CommentActivity"
|
||||
android:label="@string/comment_activity_label"
|
||||
|
@ -0,0 +1,111 @@
|
||||
package ml.docilealligator.infinityforreddit;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
|
||||
public class FilteredPostsActivity extends AppCompatActivity {
|
||||
|
||||
static final String EXTRA_NAME = "ESN";
|
||||
static final String EXTRA_QUERY = "EQ";
|
||||
static final String EXTRA_FILTER = "EF";
|
||||
static final String EXTRA_POST_TYPE = "EPT";
|
||||
static final String EXTRA_SORT_TYPE = "EST";
|
||||
|
||||
private static final String FRAGMENT_OUT_STATE = "FOS";
|
||||
|
||||
@BindView(R.id.toolbar_filtered_posts_activity) Toolbar toolbar;
|
||||
|
||||
private Fragment mFragment;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_filtered_posts);
|
||||
|
||||
ButterKnife.bind(this);
|
||||
|
||||
setSupportActionBar(toolbar);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
String name = getIntent().getExtras().getString(EXTRA_NAME);
|
||||
int filter = getIntent().getExtras().getInt(EXTRA_FILTER);
|
||||
int postType = getIntent().getExtras().getInt(EXTRA_POST_TYPE);
|
||||
String sortType = getIntent().getExtras().getString(EXTRA_SORT_TYPE);
|
||||
|
||||
switch (postType) {
|
||||
case PostDataSource.TYPE_FRONT_PAGE:
|
||||
getSupportActionBar().setTitle(name);
|
||||
break;
|
||||
case PostDataSource.TYPE_SEARCH:
|
||||
getSupportActionBar().setTitle(R.string.search);
|
||||
break;
|
||||
case PostDataSource.TYPE_SUBREDDIT:
|
||||
String subredditNamePrefixed = "r/" + name;
|
||||
getSupportActionBar().setTitle(subredditNamePrefixed);
|
||||
case PostDataSource.TYPE_USER:
|
||||
String usernamePrefixed = "u/" + name;
|
||||
getSupportActionBar().setTitle(usernamePrefixed);
|
||||
break;
|
||||
}
|
||||
|
||||
switch (filter) {
|
||||
case Post.TEXT_TYPE:
|
||||
toolbar.setSubtitle(R.string.text);
|
||||
break;
|
||||
case Post.LINK_TYPE:
|
||||
case Post.NO_PREVIEW_LINK_TYPE:
|
||||
toolbar.setSubtitle(R.string.link);
|
||||
break;
|
||||
case Post.IMAGE_TYPE:
|
||||
toolbar.setSubtitle(R.string.image);
|
||||
break;
|
||||
case Post.VIDEO_TYPE:
|
||||
toolbar.setSubtitle(R.string.video);
|
||||
break;
|
||||
case Post.GIF_VIDEO_TYPE:
|
||||
toolbar.setSubtitle(R.string.gif);
|
||||
}
|
||||
|
||||
if(savedInstanceState == null) {
|
||||
mFragment = new PostFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(PostFragment.EXTRA_NAME, name);
|
||||
bundle.putInt(PostFragment.EXTRA_POST_TYPE, postType);
|
||||
bundle.putString(PostFragment.EXTRA_SORT_TYPE, sortType);
|
||||
bundle.putInt(PostFragment.EXTRA_FILTER, filter);
|
||||
if(postType == PostDataSource.TYPE_SEARCH) {
|
||||
bundle.putString(PostFragment.EXTRA_QUERY, getIntent().getExtras().getString(EXTRA_QUERY));
|
||||
}
|
||||
mFragment.setArguments(bundle);
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout_filtered_posts_activity, mFragment).commit();
|
||||
} else {
|
||||
mFragment = getSupportFragmentManager().getFragment(savedInstanceState, FRAGMENT_OUT_STATE);
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout_filtered_posts_activity, mFragment).commit();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||
if(item.getItemId() == android.R.id.home) {
|
||||
finish();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSaveInstanceState(@NonNull Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
if (mFragment != null) {
|
||||
getSupportFragmentManager().putFragment(outState, FRAGMENT_OUT_STATE, mFragment);
|
||||
}
|
||||
}
|
||||
}
|
@ -389,22 +389,25 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_FRONT_PAGE);
|
||||
bundle.putString(PostFragment.EXTRA_SORT_TYPE, PostDataSource.SORT_TYPE_BEST);
|
||||
bundle.putInt(PostFragment.EXTRA_FILTER, PostFragment.EXTRA_NO_FILTER);
|
||||
fragment.setArguments(bundle);
|
||||
return fragment;
|
||||
} else if(position == 1) {
|
||||
PostFragment fragment = new PostFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
|
||||
bundle.putString(PostFragment.EXTRA_SUBREDDIT_NAME, "popular");
|
||||
bundle.putString(PostFragment.EXTRA_NAME, "popular");
|
||||
bundle.putString(PostFragment.EXTRA_SORT_TYPE, PostDataSource.SORT_TYPE_HOT);
|
||||
bundle.putInt(PostFragment.EXTRA_FILTER, PostFragment.EXTRA_NO_FILTER);
|
||||
fragment.setArguments(bundle);
|
||||
return fragment;
|
||||
} else {
|
||||
PostFragment fragment = new PostFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
|
||||
bundle.putString(PostFragment.EXTRA_SUBREDDIT_NAME, "all");
|
||||
bundle.putString(PostFragment.EXTRA_NAME, "all");
|
||||
bundle.putString(PostFragment.EXTRA_SORT_TYPE, PostDataSource.SORT_TYPE_HOT);
|
||||
bundle.putInt(PostFragment.EXTRA_FILTER, PostFragment.EXTRA_NO_FILTER);
|
||||
fragment.setArguments(bundle);
|
||||
return fragment;
|
||||
}
|
||||
|
@ -28,8 +28,8 @@ class ParsePost {
|
||||
void onParsePostFail();
|
||||
}
|
||||
|
||||
static void parsePosts(String response, Locale locale, int nPosts, ParsePostsListingListener parsePostsListingListener) {
|
||||
new ParsePostDataAsyncTask(response, locale, nPosts, parsePostsListingListener).execute();
|
||||
static void parsePosts(String response, Locale locale, int nPosts, int filter, ParsePostsListingListener parsePostsListingListener) {
|
||||
new ParsePostDataAsyncTask(response, locale, nPosts, filter, parsePostsListingListener).execute();
|
||||
}
|
||||
|
||||
static void parsePost(String response, Locale locale, ParsePostListener parsePostListener) {
|
||||
@ -40,6 +40,7 @@ class ParsePost {
|
||||
private JSONArray allData;
|
||||
private Locale locale;
|
||||
private int nPosts;
|
||||
private int filter;
|
||||
private ParsePostsListingListener parsePostsListingListener;
|
||||
private ParsePostListener parsePostListener;
|
||||
private ArrayList<Post> newPosts;
|
||||
@ -47,7 +48,7 @@ class ParsePost {
|
||||
private String lastItem;
|
||||
private boolean parseFailed;
|
||||
|
||||
ParsePostDataAsyncTask(String response, Locale locale, int nPosts,
|
||||
ParsePostDataAsyncTask(String response, Locale locale, int nPosts, int filter,
|
||||
ParsePostsListingListener parsePostsListingListener) {
|
||||
this.parsePostsListingListener = parsePostsListingListener;
|
||||
try {
|
||||
@ -56,6 +57,7 @@ class ParsePost {
|
||||
lastItem = jsonResponse.getJSONObject(JSONUtils.DATA_KEY).getString(JSONUtils.AFTER_KEY);
|
||||
this.locale = locale;
|
||||
this.nPosts = nPosts;
|
||||
this.filter = filter;
|
||||
newPosts = new ArrayList<>();
|
||||
parseFailed = false;
|
||||
} catch (JSONException e) {
|
||||
@ -104,7 +106,14 @@ class ParsePost {
|
||||
|
||||
for(int i = 0; i < size; i++) {
|
||||
JSONObject data = allData.getJSONObject(i).getJSONObject(JSONUtils.DATA_KEY);
|
||||
newPosts.add(parseBasicData(data, locale, i));
|
||||
Post post = parseBasicData(data, locale, i);
|
||||
if(filter == PostFragment.EXTRA_NO_FILTER) {
|
||||
newPosts.add(post);
|
||||
} else if(filter == post.getPostType()) {
|
||||
newPosts.add(post);
|
||||
} else if(filter == Post.LINK_TYPE && post.getPostType() == Post.NO_PREVIEW_LINK_TYPE) {
|
||||
newPosts.add(post);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (JSONException e) {
|
||||
@ -192,7 +201,8 @@ class ParsePost {
|
||||
String subredditNamePrefixed, String author, String formattedPostTime,
|
||||
String title, String previewUrl, int previewWidth, int previewHeight,
|
||||
int score, int voteType, int gilded, String flair, boolean spoiler,
|
||||
boolean nsfw, boolean stickied, boolean archived, boolean isCrosspost, int i) throws JSONException {
|
||||
boolean nsfw, boolean stickied, boolean archived, boolean isCrosspost,
|
||||
int i) throws JSONException {
|
||||
Post post;
|
||||
|
||||
boolean isVideo = data.getBoolean(JSONUtils.IS_VIDEO_KEY);
|
||||
|
@ -54,7 +54,7 @@ class ParseSubredditData {
|
||||
JSONObject data = jsonResponse.getJSONObject(JSONUtils.DATA_KEY);
|
||||
mNCurrentOnlineSubscribers = data.getInt(JSONUtils.ACTIVE_USER_COUNT_KEY);
|
||||
subredditData = parseSubredditData(data);
|
||||
/*String id = data.getString(JSONUtils.EXTRA_SUBREDDIT_NAME);
|
||||
/*String id = data.getString(JSONUtils.EXTRA_NAME);
|
||||
String subredditFullName = data.getString(JSONUtils.DISPLAY_NAME);
|
||||
String description = data.getString(JSONUtils.PUBLIC_DESCRIPTION_KEY).trim();
|
||||
|
||||
|
@ -37,10 +37,11 @@ class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
private Retrofit retrofit;
|
||||
private String accessToken;
|
||||
private Locale locale;
|
||||
private String subredditName;
|
||||
private String subredditOrUserName;
|
||||
private String query;
|
||||
private int postType;
|
||||
private String sortType;
|
||||
private int filter;
|
||||
private OnPostFetchedCallback onPostFetchedCallback;
|
||||
|
||||
private MutableLiveData<NetworkState> paginationNetworkStateLiveData;
|
||||
@ -52,7 +53,7 @@ class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
private LoadCallback<String, Post> callback;
|
||||
|
||||
PostDataSource(Retrofit retrofit, String accessToken, Locale locale, int postType, String sortType,
|
||||
OnPostFetchedCallback onPostFetchedCallback) {
|
||||
int filter, OnPostFetchedCallback onPostFetchedCallback) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
this.locale = locale;
|
||||
@ -60,45 +61,49 @@ class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
initialLoadStateLiveData = new MutableLiveData();
|
||||
this.postType = postType;
|
||||
this.sortType = sortType;
|
||||
this.filter = filter;
|
||||
this.onPostFetchedCallback = onPostFetchedCallback;
|
||||
}
|
||||
|
||||
PostDataSource(Retrofit retrofit, String accessToken, Locale locale, String subredditName, int postType,
|
||||
String sortType, OnPostFetchedCallback onPostFetchedCallback) {
|
||||
PostDataSource(Retrofit retrofit, String accessToken, Locale locale, String subredditOrUserName, int postType,
|
||||
String sortType, int filter, OnPostFetchedCallback onPostFetchedCallback) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
this.locale = locale;
|
||||
this.subredditName = subredditName;
|
||||
this.subredditOrUserName = subredditOrUserName;
|
||||
paginationNetworkStateLiveData = new MutableLiveData();
|
||||
initialLoadStateLiveData = new MutableLiveData();
|
||||
this.postType = postType;
|
||||
this.sortType = sortType;
|
||||
this.filter = filter;
|
||||
this.onPostFetchedCallback = onPostFetchedCallback;
|
||||
}
|
||||
|
||||
PostDataSource(Retrofit retrofit, String accessToken, Locale locale, String subredditName, int postType,
|
||||
OnPostFetchedCallback onPostFetchedCallback) {
|
||||
PostDataSource(Retrofit retrofit, String accessToken, Locale locale, String subredditOrUserName, int postType,
|
||||
int filter, OnPostFetchedCallback onPostFetchedCallback) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
this.locale = locale;
|
||||
this.subredditName = subredditName;
|
||||
this.subredditOrUserName = subredditOrUserName;
|
||||
paginationNetworkStateLiveData = new MutableLiveData();
|
||||
initialLoadStateLiveData = new MutableLiveData();
|
||||
this.postType = postType;
|
||||
this.filter = filter;
|
||||
this.onPostFetchedCallback = onPostFetchedCallback;
|
||||
}
|
||||
|
||||
PostDataSource(Retrofit retrofit, String accessToken, Locale locale, String subredditName, String query,
|
||||
int postType, String sortType, OnPostFetchedCallback onPostFetchedCallback) {
|
||||
PostDataSource(Retrofit retrofit, String accessToken, Locale locale, String subredditOrUserName, String query,
|
||||
int postType, String sortType, int filter, OnPostFetchedCallback onPostFetchedCallback) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
this.locale = locale;
|
||||
this.subredditName = subredditName;
|
||||
this.subredditOrUserName = subredditOrUserName;
|
||||
this.query = query;
|
||||
paginationNetworkStateLiveData = new MutableLiveData();
|
||||
initialLoadStateLiveData = new MutableLiveData();
|
||||
this.postType = postType;
|
||||
this.sortType = sortType;
|
||||
this.filter = filter;
|
||||
this.onPostFetchedCallback = onPostFetchedCallback;
|
||||
}
|
||||
|
||||
@ -119,16 +124,16 @@ class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
|
||||
switch (postType) {
|
||||
case TYPE_FRONT_PAGE:
|
||||
loadBestPostsInitial(callback);
|
||||
loadBestPostsInitial(callback, null);
|
||||
break;
|
||||
case TYPE_SUBREDDIT:
|
||||
loadSubredditPostsInitial(callback);
|
||||
loadSubredditPostsInitial(callback, null);
|
||||
break;
|
||||
case TYPE_USER:
|
||||
loadUserPostsInitial(callback, null);
|
||||
break;
|
||||
case TYPE_SEARCH:
|
||||
loadSearchPostsInitial(callback);
|
||||
loadSearchPostsInitial(callback, null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -143,7 +148,7 @@ class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
this.params = params;
|
||||
this.callback = callback;
|
||||
|
||||
if(params.key.equals("null")) {
|
||||
if(params.key.equals("") || params.key.equals("null")) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -151,24 +156,24 @@ class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
|
||||
switch (postType) {
|
||||
case TYPE_FRONT_PAGE:
|
||||
loadBestPostsAfter(params, callback);
|
||||
loadBestPostsAfter(params, callback, null);
|
||||
break;
|
||||
case TYPE_SUBREDDIT:
|
||||
loadSubredditPostsAfter(params, callback);
|
||||
loadSubredditPostsAfter(params, callback, null);
|
||||
break;
|
||||
case TYPE_USER:
|
||||
loadUserPostsAfter(params, callback, null);
|
||||
break;
|
||||
case TYPE_SEARCH:
|
||||
loadSearchPostsAfter(params, callback);
|
||||
loadSearchPostsAfter(params, callback, null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void loadBestPostsInitial(@NonNull final LoadInitialCallback<String, Post> callback) {
|
||||
private void loadBestPostsInitial(@NonNull final LoadInitialCallback<String, Post> callback, String lastItem) {
|
||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||
|
||||
Call<String> bestPost = api.getBestPosts(sortType, null, RedditUtils.getOAuthHeader(accessToken));
|
||||
Call<String> bestPost = api.getBestPosts(sortType, lastItem, RedditUtils.getOAuthHeader(accessToken));
|
||||
bestPost.enqueue(new Callback<String>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) {
|
||||
@ -191,21 +196,27 @@ class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
}
|
||||
});
|
||||
} else {
|
||||
ParsePost.parsePosts(response.body(), locale, -1,
|
||||
ParsePost.parsePosts(response.body(), locale, -1, filter,
|
||||
new ParsePost.ParsePostsListingListener() {
|
||||
@Override
|
||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
||||
if(newPosts.size() == 0) {
|
||||
onPostFetchedCallback.noPost();
|
||||
String nextPageKey;
|
||||
if(lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
||||
nextPageKey = null;
|
||||
} else {
|
||||
onPostFetchedCallback.hasPost();
|
||||
nextPageKey = lastItem;
|
||||
}
|
||||
|
||||
if(lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
||||
callback.onResult(newPosts, null, null);
|
||||
if(newPosts.size() != 0) {
|
||||
onPostFetchedCallback.hasPost();
|
||||
} else if(nextPageKey != null) {
|
||||
loadBestPostsInitial(callback, nextPageKey);
|
||||
return;
|
||||
} else {
|
||||
callback.onResult(newPosts, null, lastItem);
|
||||
onPostFetchedCallback.noPost();
|
||||
}
|
||||
|
||||
callback.onResult(newPosts, null, nextPageKey);
|
||||
initialLoadStateLiveData.postValue(NetworkState.LOADED);
|
||||
}
|
||||
|
||||
@ -230,23 +241,25 @@ class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
});
|
||||
}
|
||||
|
||||
private void loadBestPostsAfter(@NonNull LoadParams<String> params, @NonNull final LoadCallback<String, Post> callback) {
|
||||
private void loadBestPostsAfter(@NonNull LoadParams<String> params, @NonNull final LoadCallback<String, Post> callback, String lastItem) {
|
||||
String after = lastItem == null ? params.key : lastItem;
|
||||
|
||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||
Call<String> bestPost = api.getBestPosts(sortType, params.key, RedditUtils.getOAuthHeader(accessToken));
|
||||
Call<String> bestPost = api.getBestPosts(sortType, after, RedditUtils.getOAuthHeader(accessToken));
|
||||
|
||||
bestPost.enqueue(new Callback<String>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) {
|
||||
if(response.isSuccessful()) {
|
||||
ParsePost.parsePosts(response.body(), locale, -1, new ParsePost.ParsePostsListingListener() {
|
||||
ParsePost.parsePosts(response.body(), locale, -1, filter, new ParsePost.ParsePostsListingListener() {
|
||||
@Override
|
||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
||||
if(lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
||||
callback.onResult(newPosts, null);
|
||||
if(newPosts.size() == 0 && lastItem != null && !lastItem.equals("") && !lastItem.equals("null")) {
|
||||
loadBestPostsAfter(params, callback, lastItem);
|
||||
} else {
|
||||
callback.onResult(newPosts, lastItem);
|
||||
paginationNetworkStateLiveData.postValue(NetworkState.LOADED);
|
||||
}
|
||||
paginationNetworkStateLiveData.postValue(NetworkState.LOADED);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -269,9 +282,9 @@ class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
});
|
||||
}
|
||||
|
||||
private void loadSubredditPostsInitial(@NonNull final LoadInitialCallback<String, Post> callback) {
|
||||
private void loadSubredditPostsInitial(@NonNull final LoadInitialCallback<String, Post> callback, String lastItem) {
|
||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||
Call<String> getPost = api.getSubredditBestPosts(subredditName, sortType, null, RedditUtils.getOAuthHeader(accessToken));
|
||||
Call<String> getPost = api.getSubredditBestPosts(subredditOrUserName, sortType, lastItem, RedditUtils.getOAuthHeader(accessToken));
|
||||
getPost.enqueue(new Callback<String>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) {
|
||||
@ -294,21 +307,27 @@ class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
}
|
||||
});
|
||||
} else {
|
||||
ParsePost.parsePosts(response.body(), locale, -1,
|
||||
ParsePost.parsePosts(response.body(), locale, -1, filter,
|
||||
new ParsePost.ParsePostsListingListener() {
|
||||
@Override
|
||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
||||
if(newPosts.size() == 0) {
|
||||
onPostFetchedCallback.noPost();
|
||||
String nextPageKey;
|
||||
if(lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
||||
nextPageKey = null;
|
||||
} else {
|
||||
onPostFetchedCallback.hasPost();
|
||||
nextPageKey = lastItem;
|
||||
}
|
||||
|
||||
if(lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
||||
callback.onResult(newPosts, null, null);
|
||||
if(newPosts.size() != 0) {
|
||||
onPostFetchedCallback.hasPost();
|
||||
} else if(nextPageKey != null) {
|
||||
loadSubredditPostsInitial(callback, nextPageKey);
|
||||
return;
|
||||
} else {
|
||||
callback.onResult(newPosts, null, lastItem);
|
||||
onPostFetchedCallback.noPost();
|
||||
}
|
||||
|
||||
callback.onResult(newPosts, null, nextPageKey);
|
||||
initialLoadStateLiveData.postValue(NetworkState.LOADED);
|
||||
}
|
||||
|
||||
@ -333,22 +352,24 @@ class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
});
|
||||
}
|
||||
|
||||
private void loadSubredditPostsAfter(@NonNull LoadParams<String> params, @NonNull final LoadCallback<String, Post> callback) {
|
||||
private void loadSubredditPostsAfter(@NonNull LoadParams<String> params, @NonNull final LoadCallback<String, Post> callback, String lastItem) {
|
||||
String after = lastItem == null ? params.key : lastItem;
|
||||
|
||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||
Call<String> getPost = api.getSubredditBestPosts(subredditName, sortType, params.key, RedditUtils.getOAuthHeader(accessToken));
|
||||
Call<String> getPost = api.getSubredditBestPosts(subredditOrUserName, sortType, after, RedditUtils.getOAuthHeader(accessToken));
|
||||
getPost.enqueue(new Callback<String>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) {
|
||||
if(response.isSuccessful()) {
|
||||
ParsePost.parsePosts(response.body(), locale, -1, new ParsePost.ParsePostsListingListener() {
|
||||
ParsePost.parsePosts(response.body(), locale, -1, filter, new ParsePost.ParsePostsListingListener() {
|
||||
@Override
|
||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
||||
if(lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
||||
callback.onResult(newPosts, null);
|
||||
if(newPosts.size() == 0 && lastItem != null && !lastItem.equals("") && !lastItem.equals("null")) {
|
||||
loadSubredditPostsAfter(params, callback, lastItem);
|
||||
} else {
|
||||
callback.onResult(newPosts, lastItem);
|
||||
paginationNetworkStateLiveData.postValue(NetworkState.LOADED);
|
||||
}
|
||||
paginationNetworkStateLiveData.postValue(NetworkState.LOADED);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -373,26 +394,32 @@ class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
|
||||
private void loadUserPostsInitial(@NonNull final LoadInitialCallback<String, Post> callback, String lastItem) {
|
||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||
Call<String> getPost = api.getUserBestPosts(subredditName, lastItem, RedditUtils.getOAuthHeader(accessToken));
|
||||
Call<String> getPost = api.getUserBestPosts(subredditOrUserName, lastItem, RedditUtils.getOAuthHeader(accessToken));
|
||||
getPost.enqueue(new Callback<String>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) {
|
||||
if(response.isSuccessful()) {
|
||||
ParsePost.parsePosts(response.body(), locale, -1,
|
||||
ParsePost.parsePosts(response.body(), locale, -1, filter,
|
||||
new ParsePost.ParsePostsListingListener() {
|
||||
@Override
|
||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
||||
if(newPosts.size() == 0) {
|
||||
onPostFetchedCallback.noPost();
|
||||
String nextPageKey;
|
||||
if(lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
||||
nextPageKey = null;
|
||||
} else {
|
||||
onPostFetchedCallback.hasPost();
|
||||
nextPageKey = lastItem;
|
||||
}
|
||||
|
||||
if(lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
||||
callback.onResult(newPosts, null, null);
|
||||
if(newPosts.size() != 0) {
|
||||
onPostFetchedCallback.hasPost();
|
||||
} else if(nextPageKey != null) {
|
||||
loadUserPostsInitial(callback, nextPageKey);
|
||||
return;
|
||||
} else {
|
||||
callback.onResult(newPosts, null, lastItem);
|
||||
onPostFetchedCallback.noPost();
|
||||
}
|
||||
|
||||
callback.onResult(newPosts, null, nextPageKey);
|
||||
initialLoadStateLiveData.postValue(NetworkState.LOADED);
|
||||
}
|
||||
|
||||
@ -420,15 +447,15 @@ class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
String after = lastItem == null ? params.key : lastItem;
|
||||
|
||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||
Call<String> getPost = api.getUserBestPosts(subredditName, after, RedditUtils.getOAuthHeader(accessToken));
|
||||
Call<String> getPost = api.getUserBestPosts(subredditOrUserName, after, RedditUtils.getOAuthHeader(accessToken));
|
||||
getPost.enqueue(new Callback<String>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) {
|
||||
if(response.isSuccessful()) {
|
||||
ParsePost.parsePosts(response.body(), locale, -1, new ParsePost.ParsePostsListingListener() {
|
||||
ParsePost.parsePosts(response.body(), locale, -1, filter, new ParsePost.ParsePostsListingListener() {
|
||||
@Override
|
||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
||||
if(newPosts.size() == 0 && !lastItem.equals("null")) {
|
||||
if(newPosts.size() == 0 && lastItem != null && !lastItem.equals("") && !lastItem.equals("null")) {
|
||||
loadUserPostsAfter(params, callback, lastItem);
|
||||
} else {
|
||||
callback.onResult(newPosts, lastItem);
|
||||
@ -456,31 +483,41 @@ class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
});
|
||||
}
|
||||
|
||||
private void loadSearchPostsInitial(@NonNull final LoadInitialCallback<String, Post> callback) {
|
||||
private void loadSearchPostsInitial(@NonNull final LoadInitialCallback<String, Post> callback, String lastItem) {
|
||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||
Call<String> getPost;
|
||||
|
||||
if(subredditName == null) {
|
||||
if(subredditOrUserName == null) {
|
||||
getPost = api.searchPosts(query, null, sortType, RedditUtils.getOAuthHeader(accessToken));
|
||||
} else {
|
||||
getPost = api.searchPostsInSpecificSubreddit(subredditName, query, null, RedditUtils.getOAuthHeader(accessToken));
|
||||
getPost = api.searchPostsInSpecificSubreddit(subredditOrUserName, query, null, RedditUtils.getOAuthHeader(accessToken));
|
||||
}
|
||||
|
||||
getPost.enqueue(new Callback<String>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) {
|
||||
if(response.isSuccessful()) {
|
||||
ParsePost.parsePosts(response.body(), locale, -1,
|
||||
ParsePost.parsePosts(response.body(), locale, -1, filter,
|
||||
new ParsePost.ParsePostsListingListener() {
|
||||
@Override
|
||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
||||
if(newPosts.size() == 0) {
|
||||
onPostFetchedCallback.noPost();
|
||||
String nextPageKey;
|
||||
if(lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
||||
nextPageKey = null;
|
||||
} else {
|
||||
onPostFetchedCallback.hasPost();
|
||||
nextPageKey = lastItem;
|
||||
}
|
||||
|
||||
callback.onResult(newPosts, null, lastItem);
|
||||
if(newPosts.size() != 0) {
|
||||
onPostFetchedCallback.hasPost();
|
||||
} else if(nextPageKey != null) {
|
||||
loadSearchPostsInitial(callback, nextPageKey);
|
||||
return;
|
||||
} else {
|
||||
onPostFetchedCallback.noPost();
|
||||
}
|
||||
|
||||
callback.onResult(newPosts, null, nextPageKey);
|
||||
initialLoadStateLiveData.postValue(NetworkState.LOADED);
|
||||
}
|
||||
|
||||
@ -504,29 +541,31 @@ class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
});
|
||||
}
|
||||
|
||||
private void loadSearchPostsAfter(@NonNull LoadParams<String> params, @NonNull final LoadCallback<String, Post> callback) {
|
||||
private void loadSearchPostsAfter(@NonNull LoadParams<String> params, @NonNull final LoadCallback<String, Post> callback, String lastItem) {
|
||||
String after = lastItem == null ? params.key : lastItem;
|
||||
|
||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||
Call<String> getPost;
|
||||
|
||||
if(subredditName == null) {
|
||||
getPost = api.searchPosts(query, params.key, sortType, RedditUtils.getOAuthHeader(accessToken));
|
||||
if(subredditOrUserName == null) {
|
||||
getPost = api.searchPosts(query, after, sortType, RedditUtils.getOAuthHeader(accessToken));
|
||||
} else {
|
||||
getPost = api.searchPostsInSpecificSubreddit(subredditName, query, params.key, RedditUtils.getOAuthHeader(accessToken));
|
||||
getPost = api.searchPostsInSpecificSubreddit(subredditOrUserName, query, after, RedditUtils.getOAuthHeader(accessToken));
|
||||
}
|
||||
|
||||
getPost.enqueue(new Callback<String>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) {
|
||||
if(response.isSuccessful()) {
|
||||
ParsePost.parsePosts(response.body(), locale, -1, new ParsePost.ParsePostsListingListener() {
|
||||
ParsePost.parsePosts(response.body(), locale, -1, filter, new ParsePost.ParsePostsListingListener() {
|
||||
@Override
|
||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
||||
if(lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
||||
callback.onResult(newPosts, null);
|
||||
if(newPosts.size() == 0 && lastItem != null && !lastItem.equals("") && !lastItem.equals("null")) {
|
||||
loadSearchPostsAfter(params, callback, lastItem);
|
||||
} else {
|
||||
callback.onResult(newPosts, lastItem);
|
||||
paginationNetworkStateLiveData.postValue(NetworkState.LOADED);
|
||||
}
|
||||
paginationNetworkStateLiveData.postValue(NetworkState.LOADED);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -15,47 +15,54 @@ class PostDataSourceFactory extends DataSource.Factory {
|
||||
private String query;
|
||||
private int postType;
|
||||
private String sortType;
|
||||
private int filter;
|
||||
private PostDataSource.OnPostFetchedCallback onPostFetchedCallback;
|
||||
|
||||
private PostDataSource postDataSource;
|
||||
private MutableLiveData<PostDataSource> postDataSourceLiveData;
|
||||
|
||||
PostDataSourceFactory(Retrofit retrofit, String accessToken, Locale locale, int postType, String sortType,
|
||||
int filter, PostDataSource.OnPostFetchedCallback onPostFetchedCallback) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
this.locale = locale;
|
||||
postDataSourceLiveData = new MutableLiveData<>();
|
||||
this.postType = postType;
|
||||
this.sortType = sortType;
|
||||
this.filter = filter;
|
||||
this.onPostFetchedCallback = onPostFetchedCallback;
|
||||
}
|
||||
|
||||
PostDataSourceFactory(Retrofit retrofit, String accessToken, Locale locale, String subredditName,
|
||||
int postType, String sortType, int filter,
|
||||
PostDataSource.OnPostFetchedCallback onPostFetchedCallback) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
this.locale = locale;
|
||||
this.subredditName = subredditName;
|
||||
postDataSourceLiveData = new MutableLiveData<>();
|
||||
this.postType = postType;
|
||||
this.sortType = sortType;
|
||||
this.filter = filter;
|
||||
this.onPostFetchedCallback = onPostFetchedCallback;
|
||||
}
|
||||
|
||||
PostDataSourceFactory(Retrofit retrofit, String accessToken, Locale locale, String subredditName,
|
||||
int postType, String sortType, PostDataSource.OnPostFetchedCallback onPostFetchedCallback) {
|
||||
int postType, int filter,
|
||||
PostDataSource.OnPostFetchedCallback onPostFetchedCallback) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
this.locale = locale;
|
||||
this.subredditName = subredditName;
|
||||
postDataSourceLiveData = new MutableLiveData<>();
|
||||
this.postType = postType;
|
||||
this.sortType = sortType;
|
||||
this.filter = filter;
|
||||
this.onPostFetchedCallback = onPostFetchedCallback;
|
||||
}
|
||||
|
||||
PostDataSourceFactory(Retrofit retrofit, String accessToken, Locale locale, String subredditName,
|
||||
int postType, PostDataSource.OnPostFetchedCallback onPostFetchedCallback) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
this.locale = locale;
|
||||
this.subredditName = subredditName;
|
||||
postDataSourceLiveData = new MutableLiveData<>();
|
||||
this.postType = postType;
|
||||
this.onPostFetchedCallback = onPostFetchedCallback;
|
||||
}
|
||||
|
||||
PostDataSourceFactory(Retrofit retrofit, String accessToken, Locale locale, String subredditName,
|
||||
String query, int postType, String sortType, PostDataSource.OnPostFetchedCallback onPostFetchedCallback) {
|
||||
String query, int postType, String sortType, int filter,
|
||||
PostDataSource.OnPostFetchedCallback onPostFetchedCallback) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
this.locale = locale;
|
||||
@ -64,19 +71,24 @@ class PostDataSourceFactory extends DataSource.Factory {
|
||||
postDataSourceLiveData = new MutableLiveData<>();
|
||||
this.postType = postType;
|
||||
this.sortType = sortType;
|
||||
this.filter = filter;
|
||||
this.onPostFetchedCallback = onPostFetchedCallback;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataSource create() {
|
||||
if(postType == PostDataSource.TYPE_FRONT_PAGE) {
|
||||
postDataSource = new PostDataSource(retrofit, accessToken, locale, postType, sortType, onPostFetchedCallback);
|
||||
postDataSource = new PostDataSource(retrofit, accessToken, locale, postType, sortType,
|
||||
filter, onPostFetchedCallback);
|
||||
} else if(postType == PostDataSource.TYPE_SEARCH) {
|
||||
postDataSource = new PostDataSource(retrofit, accessToken, locale, subredditName, query, postType, sortType, onPostFetchedCallback);
|
||||
postDataSource = new PostDataSource(retrofit, accessToken, locale, subredditName, query,
|
||||
postType, sortType, filter, onPostFetchedCallback);
|
||||
} else if(postType == PostDataSource.TYPE_SUBREDDIT) {
|
||||
postDataSource = new PostDataSource(retrofit, accessToken, locale, subredditName, postType, sortType, onPostFetchedCallback);
|
||||
postDataSource = new PostDataSource(retrofit, accessToken, locale, subredditName, postType,
|
||||
sortType, filter, onPostFetchedCallback);
|
||||
} else {
|
||||
postDataSource = new PostDataSource(retrofit, accessToken, locale, subredditName, postType, onPostFetchedCallback);
|
||||
postDataSource = new PostDataSource(retrofit, accessToken, locale, subredditName, postType,
|
||||
filter, onPostFetchedCallback);
|
||||
}
|
||||
|
||||
postDataSourceLiveData.postValue(postDataSource);
|
||||
|
@ -3,6 +3,7 @@ package ml.docilealligator.infinityforreddit;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.os.CountDownTimer;
|
||||
@ -45,10 +46,13 @@ import retrofit2.Retrofit;
|
||||
*/
|
||||
public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
|
||||
static final String EXTRA_SUBREDDIT_NAME = "EN";
|
||||
static final String EXTRA_NAME = "EN";
|
||||
static final String EXTRA_USER_NAME = "EN";
|
||||
static final String EXTRA_QUERY = "EQ";
|
||||
static final String EXTRA_POST_TYPE = "EPT";
|
||||
static final String EXTRA_SORT_TYPE = "EST";
|
||||
static final String EXTRA_FILTER = "EF";
|
||||
static final int EXTRA_NO_FILTER = -1;
|
||||
|
||||
private static final String IS_IN_LAZY_MODE_STATE = "IILMS";
|
||||
|
||||
@ -168,6 +172,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
|
||||
int postType = getArguments().getInt(EXTRA_POST_TYPE);
|
||||
String sortType = getArguments().getString(EXTRA_SORT_TYPE);
|
||||
int filter = getArguments().getInt(EXTRA_FILTER);
|
||||
|
||||
String accessToken = activity.getSharedPreferences(SharedPreferencesUtils.AUTH_CODE_FILE_KEY, Context.MODE_PRIVATE)
|
||||
.getString(SharedPreferencesUtils.ACCESS_TOKEN_KEY, "");
|
||||
@ -175,13 +180,30 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
PostViewModel.Factory factory;
|
||||
|
||||
if(postType == PostDataSource.TYPE_SEARCH) {
|
||||
String subredditName = getArguments().getString(EXTRA_SUBREDDIT_NAME);
|
||||
String subredditName = getArguments().getString(EXTRA_NAME);
|
||||
String query = getArguments().getString(EXTRA_QUERY);
|
||||
|
||||
mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit,
|
||||
mSharedPreferences, postType, true, () -> mPostViewModel.retryLoadingMore());
|
||||
mSharedPreferences, postType, true, new PostRecyclerViewAdapter.Callback() {
|
||||
@Override
|
||||
public void retryLoadingMore() {
|
||||
mPostViewModel.retryLoadingMore();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void typeChipClicked(int filter) {
|
||||
Intent intent = new Intent(activity, FilteredPostsActivity.class);
|
||||
intent.putExtra(FilteredPostsActivity.EXTRA_NAME, subredditName);
|
||||
intent.putExtra(FilteredPostsActivity.EXTRA_QUERY, query);
|
||||
intent.putExtra(FilteredPostsActivity.EXTRA_POST_TYPE, postType);
|
||||
intent.putExtra(FilteredPostsActivity.EXTRA_SORT_TYPE, sortType);
|
||||
intent.putExtra(FilteredPostsActivity.EXTRA_FILTER, filter);
|
||||
startActivity(intent);
|
||||
}
|
||||
});
|
||||
|
||||
factory = new PostViewModel.Factory(mOauthRetrofit, accessToken,
|
||||
getResources().getConfiguration().locale, subredditName, query, postType, sortType, new PostDataSource.OnPostFetchedCallback() {
|
||||
getResources().getConfiguration().locale, subredditName, query, postType, sortType, filter, new PostDataSource.OnPostFetchedCallback() {
|
||||
@Override
|
||||
public void hasPost() {
|
||||
mFetchPostInfoLinearLayout.setVisibility(View.GONE);
|
||||
@ -196,14 +218,29 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
}
|
||||
});
|
||||
} else if(postType == PostDataSource.TYPE_SUBREDDIT) {
|
||||
String subredditName = getArguments().getString(EXTRA_SUBREDDIT_NAME);
|
||||
String subredditName = getArguments().getString(EXTRA_NAME);
|
||||
|
||||
boolean displaySubredditName = subredditName.equals("popular") || subredditName.equals("all");
|
||||
mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit,
|
||||
mSharedPreferences, postType, displaySubredditName, () -> mPostViewModel.retryLoadingMore());
|
||||
mSharedPreferences, postType, displaySubredditName, new PostRecyclerViewAdapter.Callback() {
|
||||
@Override
|
||||
public void retryLoadingMore() {
|
||||
mPostViewModel.retryLoadingMore();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void typeChipClicked(int filter) {
|
||||
Intent intent = new Intent(activity, FilteredPostsActivity.class);
|
||||
intent.putExtra(FilteredPostsActivity.EXTRA_NAME, subredditName);
|
||||
intent.putExtra(FilteredPostsActivity.EXTRA_POST_TYPE, postType);
|
||||
intent.putExtra(FilteredPostsActivity.EXTRA_SORT_TYPE, sortType);
|
||||
intent.putExtra(FilteredPostsActivity.EXTRA_FILTER, filter);
|
||||
startActivity(intent);
|
||||
}
|
||||
});
|
||||
|
||||
factory = new PostViewModel.Factory(mOauthRetrofit, accessToken,
|
||||
getResources().getConfiguration().locale, subredditName, postType, sortType, new PostDataSource.OnPostFetchedCallback() {
|
||||
getResources().getConfiguration().locale, subredditName, postType, sortType, filter, new PostDataSource.OnPostFetchedCallback() {
|
||||
@Override
|
||||
public void hasPost() {
|
||||
mFetchPostInfoLinearLayout.setVisibility(View.GONE);
|
||||
@ -222,13 +259,28 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
|
||||
mFetchPostInfoLinearLayout.setLayoutParams(params);
|
||||
|
||||
String subredditName = getArguments().getString(EXTRA_SUBREDDIT_NAME);
|
||||
String username = getArguments().getString(EXTRA_USER_NAME);
|
||||
|
||||
mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit,
|
||||
mSharedPreferences, postType, true, () -> mPostViewModel.retryLoadingMore());
|
||||
mSharedPreferences, postType, true, new PostRecyclerViewAdapter.Callback() {
|
||||
@Override
|
||||
public void retryLoadingMore() {
|
||||
mPostViewModel.retryLoadingMore();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void typeChipClicked(int filter) {
|
||||
Intent intent = new Intent(activity, FilteredPostsActivity.class);
|
||||
intent.putExtra(FilteredPostsActivity.EXTRA_NAME, username);
|
||||
intent.putExtra(FilteredPostsActivity.EXTRA_POST_TYPE, postType);
|
||||
intent.putExtra(FilteredPostsActivity.EXTRA_SORT_TYPE, sortType);
|
||||
intent.putExtra(FilteredPostsActivity.EXTRA_FILTER, filter);
|
||||
startActivity(intent);
|
||||
}
|
||||
});
|
||||
|
||||
factory = new PostViewModel.Factory(mOauthRetrofit, accessToken,
|
||||
getResources().getConfiguration().locale, subredditName, postType, sortType,
|
||||
getResources().getConfiguration().locale, username, postType, sortType, filter,
|
||||
new PostDataSource.OnPostFetchedCallback() {
|
||||
@Override
|
||||
public void hasPost() {
|
||||
@ -245,10 +297,25 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
});
|
||||
} else {
|
||||
mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit,
|
||||
mSharedPreferences, postType, true, () -> mPostViewModel.retryLoadingMore());
|
||||
mSharedPreferences, postType, true, new PostRecyclerViewAdapter.Callback() {
|
||||
@Override
|
||||
public void retryLoadingMore() {
|
||||
mPostViewModel.retryLoadingMore();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void typeChipClicked(int filter) {
|
||||
Intent intent = new Intent(activity, FilteredPostsActivity.class);
|
||||
intent.putExtra(FilteredPostsActivity.EXTRA_NAME, activity.getString(R.string.best));
|
||||
intent.putExtra(FilteredPostsActivity.EXTRA_POST_TYPE, postType);
|
||||
intent.putExtra(FilteredPostsActivity.EXTRA_SORT_TYPE, sortType);
|
||||
intent.putExtra(FilteredPostsActivity.EXTRA_FILTER, filter);
|
||||
startActivity(intent);
|
||||
}
|
||||
});
|
||||
|
||||
factory = new PostViewModel.Factory(mOauthRetrofit, accessToken,
|
||||
getResources().getConfiguration().locale, postType, sortType, new PostDataSource.OnPostFetchedCallback() {
|
||||
getResources().getConfiguration().locale, postType, sortType, filter, new PostDataSource.OnPostFetchedCallback() {
|
||||
@Override
|
||||
public void hasPost() {
|
||||
mFetchPostInfoLinearLayout.setVisibility(View.GONE);
|
||||
|
@ -73,15 +73,16 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
|
||||
private static final int VIEW_TYPE_LOADING = 2;
|
||||
|
||||
private NetworkState networkState;
|
||||
private RetryLoadingMoreCallback retryLoadingMoreCallback;
|
||||
private Callback callback;
|
||||
|
||||
interface RetryLoadingMoreCallback {
|
||||
interface Callback {
|
||||
void retryLoadingMore();
|
||||
void typeChipClicked(int filter);
|
||||
}
|
||||
|
||||
PostRecyclerViewAdapter(Context context, Retrofit oauthRetrofit, Retrofit retrofit,
|
||||
SharedPreferences sharedPreferences, int postType, boolean displaySubredditName,
|
||||
RetryLoadingMoreCallback retryLoadingMoreCallback) {
|
||||
SharedPreferences sharedPreferences, int postType,
|
||||
boolean displaySubredditName, Callback callback) {
|
||||
super(DIFF_CALLBACK);
|
||||
if(context != null) {
|
||||
mContext = context;
|
||||
@ -93,7 +94,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
|
||||
glide = Glide.with(mContext.getApplicationContext());
|
||||
subredditDao = SubredditRoomDatabase.getDatabase(mContext.getApplicationContext()).subredditDao();
|
||||
userDao = UserRoomDatabase.getDatabase(mContext.getApplicationContext()).userDao();
|
||||
this.retryLoadingMoreCallback = retryLoadingMoreCallback;
|
||||
this.callback = callback;
|
||||
}
|
||||
}
|
||||
|
||||
@ -360,9 +361,11 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
|
||||
((DataViewHolder) holder).crosspostImageView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
((DataViewHolder) holder).typeChip.setOnClickListener(view -> callback.typeChipClicked(post.getPostType()));
|
||||
|
||||
switch (post.getPostType()) {
|
||||
case Post.IMAGE_TYPE:
|
||||
((DataViewHolder) holder).typeChip.setText("IMAGE");
|
||||
((DataViewHolder) holder).typeChip.setText(R.string.image);
|
||||
|
||||
final String imageUrl = post.getUrl();
|
||||
((DataViewHolder) holder).imageView.setOnClickListener(view -> {
|
||||
@ -375,7 +378,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
|
||||
});
|
||||
break;
|
||||
case Post.LINK_TYPE:
|
||||
((DataViewHolder) holder).typeChip.setText("LINK");
|
||||
((DataViewHolder) holder).typeChip.setText(R.string.link);
|
||||
((DataViewHolder) holder).linkTextView.setVisibility(View.VISIBLE);
|
||||
String domain = Uri.parse(post.getUrl()).getHost();
|
||||
((DataViewHolder) holder).linkTextView.setText(domain);
|
||||
@ -390,7 +393,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
|
||||
});
|
||||
break;
|
||||
case Post.GIF_VIDEO_TYPE:
|
||||
((DataViewHolder) holder).typeChip.setText("GIF");
|
||||
((DataViewHolder) holder).typeChip.setText(R.string.gif);
|
||||
|
||||
final Uri gifVideoUri = Uri.parse(post.getVideoUrl());
|
||||
((DataViewHolder) holder).imageView.setOnClickListener(view -> {
|
||||
@ -408,7 +411,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
|
||||
});
|
||||
break;
|
||||
case Post.VIDEO_TYPE:
|
||||
((DataViewHolder) holder).typeChip.setText("VIDEO");
|
||||
((DataViewHolder) holder).typeChip.setText(R.string.video);
|
||||
|
||||
final Uri videoUri = Uri.parse(post.getVideoUrl());
|
||||
((DataViewHolder) holder).imageView.setOnClickListener(view -> {
|
||||
@ -426,7 +429,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
|
||||
});
|
||||
break;
|
||||
case Post.NO_PREVIEW_LINK_TYPE:
|
||||
((DataViewHolder) holder).typeChip.setText("LINK");
|
||||
((DataViewHolder) holder).typeChip.setText(R.string.link);
|
||||
String noPreviewLinkUrl = post.getUrl();
|
||||
((DataViewHolder) holder).linkTextView.setVisibility(View.VISIBLE);
|
||||
String noPreviewLinkDomain = Uri.parse(noPreviewLinkUrl).getHost();
|
||||
@ -442,7 +445,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
|
||||
});
|
||||
break;
|
||||
case Post.TEXT_TYPE:
|
||||
((DataViewHolder) holder).typeChip.setText("TEXT");
|
||||
((DataViewHolder) holder).typeChip.setText(R.string.text);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -692,7 +695,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
|
||||
super(itemView);
|
||||
ButterKnife.bind(this, itemView);
|
||||
errorTextView.setText(R.string.load_posts_error);
|
||||
retryButton.setOnClickListener(view -> retryLoadingMoreCallback.retryLoadingMore());
|
||||
retryButton.setOnClickListener(view -> callback.retryLoadingMore());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -22,8 +22,8 @@ public class PostViewModel extends ViewModel {
|
||||
private MutableLiveData<String> sortTypeLiveData;
|
||||
|
||||
public PostViewModel(Retrofit retrofit, String accessToken, Locale locale, int postType, String sortType,
|
||||
PostDataSource.OnPostFetchedCallback onPostFetchedCallback) {
|
||||
postDataSourceFactory = new PostDataSourceFactory(retrofit, accessToken, locale, postType, sortType, onPostFetchedCallback);
|
||||
int filter, PostDataSource.OnPostFetchedCallback onPostFetchedCallback) {
|
||||
postDataSourceFactory = new PostDataSourceFactory(retrofit, accessToken, locale, postType, sortType, filter, onPostFetchedCallback);
|
||||
|
||||
initialLoadingState = Transformations.switchMap(postDataSourceFactory.getPostDataSourceLiveData(),
|
||||
(Function<PostDataSource, LiveData<NetworkState>>) PostDataSource::getInitialLoadStateLiveData);
|
||||
@ -46,8 +46,9 @@ public class PostViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
public PostViewModel(Retrofit retrofit, String accessToken, Locale locale, String subredditName, int postType,
|
||||
String sortType, PostDataSource.OnPostFetchedCallback onPostFetchedCallback) {
|
||||
postDataSourceFactory = new PostDataSourceFactory(retrofit, accessToken, locale, subredditName, postType, sortType, onPostFetchedCallback);
|
||||
String sortType, int filter, PostDataSource.OnPostFetchedCallback onPostFetchedCallback) {
|
||||
postDataSourceFactory = new PostDataSourceFactory(retrofit, accessToken, locale, subredditName,
|
||||
postType, sortType, filter, onPostFetchedCallback);
|
||||
|
||||
initialLoadingState = Transformations.switchMap(postDataSourceFactory.getPostDataSourceLiveData(),
|
||||
(Function<PostDataSource, LiveData<NetworkState>>) PostDataSource::getInitialLoadStateLiveData);
|
||||
@ -70,8 +71,9 @@ public class PostViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
public PostViewModel(Retrofit retrofit, String accessToken, Locale locale, String subredditName, int postType,
|
||||
PostDataSource.OnPostFetchedCallback onPostFetchedCallback) {
|
||||
postDataSourceFactory = new PostDataSourceFactory(retrofit, accessToken, locale, subredditName, postType, onPostFetchedCallback);
|
||||
int filter, PostDataSource.OnPostFetchedCallback onPostFetchedCallback) {
|
||||
postDataSourceFactory = new PostDataSourceFactory(retrofit, accessToken, locale, subredditName,
|
||||
postType, filter, onPostFetchedCallback);
|
||||
|
||||
initialLoadingState = Transformations.switchMap(postDataSourceFactory.getPostDataSourceLiveData(),
|
||||
dataSource -> dataSource.getInitialLoadStateLiveData());
|
||||
@ -88,9 +90,9 @@ public class PostViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
public PostViewModel(Retrofit retrofit, String accessToken, Locale locale, String subredditName, String query,
|
||||
int postType, String sortType, PostDataSource.OnPostFetchedCallback onPostFetchedCallback) {
|
||||
int postType, String sortType, int filter, PostDataSource.OnPostFetchedCallback onPostFetchedCallback) {
|
||||
postDataSourceFactory = new PostDataSourceFactory(retrofit, accessToken, locale, subredditName,
|
||||
query, postType, sortType, onPostFetchedCallback);
|
||||
query, postType, sortType, filter, onPostFetchedCallback);
|
||||
|
||||
initialLoadingState = Transformations.switchMap(postDataSourceFactory.getPostDataSourceLiveData(),
|
||||
dataSource -> dataSource.getInitialLoadStateLiveData());
|
||||
@ -148,41 +150,45 @@ public class PostViewModel extends ViewModel {
|
||||
private String query;
|
||||
private int postType;
|
||||
private String sortType;
|
||||
private int filter;
|
||||
private PostDataSource.OnPostFetchedCallback onPostFetchedCallback;
|
||||
|
||||
public Factory(Retrofit retrofit, String accessToken, Locale locale, int postType, String sortType,
|
||||
PostDataSource.OnPostFetchedCallback onPostFetchedCallback) {
|
||||
int filter, PostDataSource.OnPostFetchedCallback onPostFetchedCallback) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
this.locale = locale;
|
||||
this.postType = postType;
|
||||
this.sortType = sortType;
|
||||
this.filter = filter;
|
||||
this.onPostFetchedCallback = onPostFetchedCallback;
|
||||
}
|
||||
|
||||
public Factory(Retrofit retrofit, String accessToken, Locale locale, String subredditName, int postType,
|
||||
String sortType, PostDataSource.OnPostFetchedCallback onPostFetchedCallback) {
|
||||
String sortType, int filter, PostDataSource.OnPostFetchedCallback onPostFetchedCallback) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
this.locale = locale;
|
||||
this.subredditName = subredditName;
|
||||
this.postType = postType;
|
||||
this.sortType = sortType;
|
||||
this.filter = filter;
|
||||
this.onPostFetchedCallback = onPostFetchedCallback;
|
||||
}
|
||||
|
||||
public Factory(Retrofit retrofit, String accessToken, Locale locale, String subredditName, int postType,
|
||||
PostDataSource.OnPostFetchedCallback onPostFetchedCallback) {
|
||||
int filter, PostDataSource.OnPostFetchedCallback onPostFetchedCallback) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
this.locale = locale;
|
||||
this.subredditName = subredditName;
|
||||
this.postType = postType;
|
||||
this.filter = filter;
|
||||
this.onPostFetchedCallback = onPostFetchedCallback;
|
||||
}
|
||||
|
||||
public Factory(Retrofit retrofit, String accessToken, Locale locale, String subredditName, String query,
|
||||
int postType, String sortType, PostDataSource.OnPostFetchedCallback onPostFetchedCallback) {
|
||||
int postType, String sortType, int filter, PostDataSource.OnPostFetchedCallback onPostFetchedCallback) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
this.locale = locale;
|
||||
@ -190,6 +196,7 @@ public class PostViewModel extends ViewModel {
|
||||
this.query = query;
|
||||
this.postType = postType;
|
||||
this.sortType = sortType;
|
||||
this.filter = filter;
|
||||
this.onPostFetchedCallback = onPostFetchedCallback;
|
||||
}
|
||||
|
||||
@ -197,13 +204,13 @@ public class PostViewModel extends ViewModel {
|
||||
@Override
|
||||
public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
|
||||
if(postType == PostDataSource.TYPE_FRONT_PAGE) {
|
||||
return (T) new PostViewModel(retrofit, accessToken, locale, postType, sortType, onPostFetchedCallback);
|
||||
return (T) new PostViewModel(retrofit, accessToken, locale, postType, sortType, filter, onPostFetchedCallback);
|
||||
} else if(postType == PostDataSource.TYPE_SEARCH){
|
||||
return (T) new PostViewModel(retrofit, accessToken, locale, subredditName, query, postType, sortType, onPostFetchedCallback);
|
||||
return (T) new PostViewModel(retrofit, accessToken, locale, subredditName, query, postType, sortType, filter, onPostFetchedCallback);
|
||||
} else if(postType == PostDataSource.TYPE_SUBREDDIT) {
|
||||
return (T) new PostViewModel(retrofit, accessToken, locale, subredditName, postType, sortType, onPostFetchedCallback);
|
||||
return (T) new PostViewModel(retrofit, accessToken, locale, subredditName, postType, sortType, filter, onPostFetchedCallback);
|
||||
} else {
|
||||
return (T) new PostViewModel(retrofit, accessToken, locale, subredditName, postType, onPostFetchedCallback);
|
||||
return (T) new PostViewModel(retrofit, accessToken, locale, subredditName, postType, filter, onPostFetchedCallback);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -102,6 +102,7 @@ public class SearchResultActivity extends AppCompatActivity implements SearchPos
|
||||
return true;
|
||||
case R.id.action_search_search_result_activity:
|
||||
Intent intent = new Intent(this, SearchActivity.class);
|
||||
intent.putExtra(SearchActivity.EXTRA_SEARCH_ONLY_SUBREDDITS, false);
|
||||
finish();
|
||||
startActivity(intent);
|
||||
return true;
|
||||
@ -141,8 +142,9 @@ public class SearchResultActivity extends AppCompatActivity implements SearchPos
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_SEARCH);
|
||||
bundle.putString(PostFragment.EXTRA_SORT_TYPE, PostDataSource.SORT_TYPE_RELEVANCE);
|
||||
bundle.putString(PostFragment.EXTRA_SUBREDDIT_NAME, mSubredditName);
|
||||
bundle.putString(PostFragment.EXTRA_NAME, mSubredditName);
|
||||
bundle.putString(PostFragment.EXTRA_QUERY, mQuery);
|
||||
bundle.putInt(PostFragment.EXTRA_FILTER, PostFragment.EXTRA_NO_FILTER);
|
||||
mFragment.setArguments(bundle);
|
||||
return mFragment;
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package ml.docilealligator.infinityforreddit;
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
@ -58,6 +59,15 @@ public class SearchSubredditsResultActivity extends AppCompatActivity {
|
||||
finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||
if(item.getItemId() == android.R.id.home) {
|
||||
finish();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSaveInstanceState(@NonNull Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
|
@ -259,9 +259,10 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
||||
if(savedInstanceState == null) {
|
||||
mFragment = new PostFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(PostFragment.EXTRA_SUBREDDIT_NAME, subredditName);
|
||||
bundle.putString(PostFragment.EXTRA_NAME, subredditName);
|
||||
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
|
||||
bundle.putString(PostFragment.EXTRA_SORT_TYPE, PostDataSource.SORT_TYPE_BEST);
|
||||
bundle.putInt(PostFragment.EXTRA_FILTER, PostFragment.EXTRA_NO_FILTER);
|
||||
mFragment.setArguments(bundle);
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout_view_subreddit_detail_activity, mFragment).commit();
|
||||
} else {
|
||||
@ -269,9 +270,10 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
||||
if(mFragment == null) {
|
||||
mFragment = new PostFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(PostFragment.EXTRA_SUBREDDIT_NAME, subredditName);
|
||||
bundle.putString(PostFragment.EXTRA_NAME, subredditName);
|
||||
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
|
||||
bundle.putString(PostFragment.EXTRA_SORT_TYPE, PostDataSource.SORT_TYPE_BEST);
|
||||
bundle.putInt(PostFragment.EXTRA_FILTER, PostFragment.EXTRA_NO_FILTER);
|
||||
mFragment.setArguments(bundle);
|
||||
}
|
||||
isInLazyMode = savedInstanceState.getBoolean(IS_IN_LAZY_MODE_STATE);
|
||||
|
@ -70,7 +70,7 @@ public class ViewUserDetailActivity extends AppCompatActivity {
|
||||
private Menu mMenu;
|
||||
private AppBarLayout.LayoutParams params;
|
||||
|
||||
private String userName;
|
||||
private String username;
|
||||
private boolean subscriptionReady = false;
|
||||
private boolean isInLazyMode = false;
|
||||
private int expandedTabTextColor;
|
||||
@ -110,8 +110,8 @@ public class ViewUserDetailActivity extends AppCompatActivity {
|
||||
statusBarHeight = getResources().getDimensionPixelSize(resourceId);
|
||||
}
|
||||
|
||||
userName = getIntent().getExtras().getString(EXTRA_USER_NAME_KEY);
|
||||
String title = "u/" + userName;
|
||||
username = getIntent().getExtras().getString(EXTRA_USER_NAME_KEY);
|
||||
String title = "u/" + username;
|
||||
userNameTextView.setText(title);
|
||||
|
||||
Toolbar toolbar = findViewById(R.id.toolbar);
|
||||
@ -152,7 +152,7 @@ public class ViewUserDetailActivity extends AppCompatActivity {
|
||||
subscribedUserDao = SubscribedUserRoomDatabase.getDatabase(this).subscribedUserDao();
|
||||
glide = Glide.with(this);
|
||||
|
||||
userViewModel = ViewModelProviders.of(this, new UserViewModel.Factory(getApplication(), userName))
|
||||
userViewModel = ViewModelProviders.of(this, new UserViewModel.Factory(getApplication(), username))
|
||||
.get(UserViewModel.class);
|
||||
userViewModel.getUserLiveData().observe(this, userData -> {
|
||||
if(userData != null) {
|
||||
@ -166,7 +166,7 @@ public class ViewUserDetailActivity extends AppCompatActivity {
|
||||
Intent intent = new Intent(this, ViewImageActivity.class);
|
||||
intent.putExtra(ViewImageActivity.TITLE_KEY, title);
|
||||
intent.putExtra(ViewImageActivity.IMAGE_URL_KEY, userData.getBanner());
|
||||
intent.putExtra(ViewImageActivity.FILE_NAME_KEY, userName + "-banner");
|
||||
intent.putExtra(ViewImageActivity.FILE_NAME_KEY, username + "-banner");
|
||||
startActivity(intent);
|
||||
});
|
||||
}
|
||||
@ -189,7 +189,7 @@ public class ViewUserDetailActivity extends AppCompatActivity {
|
||||
Intent intent = new Intent(this, ViewImageActivity.class);
|
||||
intent.putExtra(ViewImageActivity.TITLE_KEY, title);
|
||||
intent.putExtra(ViewImageActivity.IMAGE_URL_KEY, userData.getIconUrl());
|
||||
intent.putExtra(ViewImageActivity.FILE_NAME_KEY, userName + "-icon");
|
||||
intent.putExtra(ViewImageActivity.FILE_NAME_KEY, username + "-icon");
|
||||
startActivity(intent);
|
||||
});
|
||||
}
|
||||
@ -201,7 +201,7 @@ public class ViewUserDetailActivity extends AppCompatActivity {
|
||||
subscriptionReady = false;
|
||||
if(subscribeUserChip.getText().equals(getResources().getString(R.string.follow))) {
|
||||
UserFollowing.followUser(mOauthRetrofit, mRetrofit, sharedPreferences,
|
||||
userName, subscribedUserDao, new UserFollowing.UserFollowingListener() {
|
||||
username, subscribedUserDao, new UserFollowing.UserFollowingListener() {
|
||||
@Override
|
||||
public void onUserFollowingSuccess() {
|
||||
subscribeUserChip.setText(R.string.unfollow);
|
||||
@ -218,7 +218,7 @@ public class ViewUserDetailActivity extends AppCompatActivity {
|
||||
});
|
||||
} else {
|
||||
UserFollowing.unfollowUser(mOauthRetrofit, mRetrofit, sharedPreferences,
|
||||
userName, subscribedUserDao, new UserFollowing.UserFollowingListener() {
|
||||
username, subscribedUserDao, new UserFollowing.UserFollowingListener() {
|
||||
@Override
|
||||
public void onUserFollowingSuccess() {
|
||||
subscribeUserChip.setText(R.string.follow);
|
||||
@ -237,7 +237,7 @@ public class ViewUserDetailActivity extends AppCompatActivity {
|
||||
}
|
||||
});
|
||||
|
||||
new CheckIsFollowingUserAsyncTask(subscribedUserDao, userName, new CheckIsFollowingUserAsyncTask.CheckIsFollowingUserListener() {
|
||||
new CheckIsFollowingUserAsyncTask(subscribedUserDao, username, new CheckIsFollowingUserAsyncTask.CheckIsFollowingUserListener() {
|
||||
@Override
|
||||
public void isSubscribed() {
|
||||
subscribeUserChip.setText(R.string.unfollow);
|
||||
@ -266,7 +266,7 @@ public class ViewUserDetailActivity extends AppCompatActivity {
|
||||
}
|
||||
});
|
||||
|
||||
FetchUserData.fetchUserData(mRetrofit, userName, new FetchUserData.FetchUserDataListener() {
|
||||
FetchUserData.fetchUserData(mRetrofit, username, new FetchUserData.FetchUserDataListener() {
|
||||
@Override
|
||||
public void onFetchUserDataSuccess(UserData userData) {
|
||||
new InsertUserDataAsyncTask(UserRoomDatabase.getDatabase(ViewUserDetailActivity.this).userDao(), userData).execute();
|
||||
@ -281,7 +281,7 @@ public class ViewUserDetailActivity extends AppCompatActivity {
|
||||
if(savedInstanceState == null) {
|
||||
/*mFragment = new PostFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(PostFragment.EXTRA_SUBREDDIT_NAME, userName);
|
||||
bundle.putString(PostFragment.EXTRA_NAME, username);
|
||||
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_USER);
|
||||
mFragment.setArguments(bundle);
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout_view_user_detail_activity, mFragment).commit();*/
|
||||
@ -290,7 +290,7 @@ public class ViewUserDetailActivity extends AppCompatActivity {
|
||||
if(mFragment == null) {
|
||||
mFragment = new PostFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(PostFragment.EXTRA_SUBREDDIT_NAME, userName);
|
||||
bundle.putString(PostFragment.EXTRA_NAME, username);
|
||||
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_USER);
|
||||
mFragment.setArguments(bundle);
|
||||
}*/
|
||||
@ -326,7 +326,7 @@ public class ViewUserDetailActivity extends AppCompatActivity {
|
||||
return true;
|
||||
case R.id.action_search_view_user_detail_activity:
|
||||
Intent intent = new Intent(this, SearchActivity.class);
|
||||
intent.putExtra(SearchActivity.EXTRA_SUBREDDIT_NAME, userName);
|
||||
intent.putExtra(SearchActivity.EXTRA_SUBREDDIT_NAME, username);
|
||||
intent.putExtra(SearchActivity.EXTRA_SUBREDDIT_IS_USER, true);
|
||||
intent.putExtra(SearchActivity.EXTRA_SEARCH_ONLY_SUBREDDITS, false);
|
||||
startActivity(intent);
|
||||
@ -440,13 +440,14 @@ public class ViewUserDetailActivity extends AppCompatActivity {
|
||||
PostFragment fragment = new PostFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_USER);
|
||||
bundle.putString(PostFragment.EXTRA_SUBREDDIT_NAME, userName);
|
||||
bundle.putString(PostFragment.EXTRA_USER_NAME, username);
|
||||
bundle.putInt(PostFragment.EXTRA_FILTER, PostFragment.EXTRA_NO_FILTER);
|
||||
fragment.setArguments(bundle);
|
||||
return fragment;
|
||||
}
|
||||
CommentsListingFragment fragment = new CommentsListingFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(CommentsListingFragment.EXTRA_USERNAME_KEY, userName);
|
||||
bundle.putString(CommentsListingFragment.EXTRA_USERNAME_KEY, username);
|
||||
fragment.setArguments(bundle);
|
||||
return fragment;
|
||||
}
|
||||
|
29
app/src/main/res/layout/activity_filtered_posts.xml
Normal file
29
app/src/main/res/layout/activity_filtered_posts.xml
Normal file
@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".FilteredPostsActivity">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:theme="@style/AppTheme.AppBarOverlay">
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar_filtered_posts_activity"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
app:popupTheme="@style/AppTheme.PopupOverlay"
|
||||
app:navigationIcon="?attr/homeAsUpIndicator" />
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/frame_layout_filtered_posts_activity"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
@ -13,6 +13,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:background="@color/backgroundColor"
|
||||
app:mlpb_progress_stoke_width="3dp"
|
||||
app:mlpb_progress_color="@color/colorAccent"
|
||||
android:layout_gravity="center_horizontal"/>
|
||||
|
@ -13,6 +13,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:background="@color/backgroundColor"
|
||||
app:mlpb_progress_stoke_width="3dp"
|
||||
app:mlpb_progress_color="@color/colorAccent"
|
||||
android:layout_gravity="center_horizontal"/>
|
||||
|
@ -152,4 +152,12 @@
|
||||
<string name="no_browser_found">No browser found</string>
|
||||
|
||||
<string name="archived_post_vote_unavailable">Archived post. Vote unavailable.</string>
|
||||
|
||||
<string name="text">TEXT</string>
|
||||
<string name="link">LINK</string>
|
||||
<string name="image">IMAGE</string>
|
||||
<string name="video">VIDEO</string>
|
||||
<string name="gif">GIF</string>
|
||||
<string name="best">Best</string>
|
||||
<string name="search">Search</string>
|
||||
</resources>
|
||||
|
Loading…
Reference in New Issue
Block a user