From 92762974fff5b9b18a7696b7562daf5f55e46472 Mon Sep 17 00:00:00 2001 From: Alex Ning Date: Thu, 29 Aug 2019 17:08:40 +0800 Subject: Fixed bugs related to several ViewModels. --- .../main/java/CustomView/CustomMarkwonView.java | 73 ---------------------- .../infinityforreddit/CommentDataSource.java | 9 --- .../infinityforreddit/CommentViewModel.java | 4 -- .../infinityforreddit/CommentsListingFragment.java | 6 +- .../infinityforreddit/MainActivity.java | 2 +- .../infinityforreddit/MessageDataSource.java | 9 --- .../infinityforreddit/MessageViewModel.java | 4 -- .../infinityforreddit/ParsePost.java | 10 --- .../infinityforreddit/PostDataSource.java | 9 --- .../infinityforreddit/PostFragment.java | 10 ++- .../infinityforreddit/PostViewModel.java | 4 -- .../infinityforreddit/SearchResultActivity.java | 6 -- .../SubredditListingDataSource.java | 9 --- .../SubredditListingFragment.java | 6 +- .../SubredditListingViewModel.java | 6 +- .../infinityforreddit/UserListingDataSource.java | 9 --- .../infinityforreddit/UserListingFragment.java | 6 +- .../infinityforreddit/UserListingViewModel.java | 6 +- .../infinityforreddit/ViewMessageActivity.java | 6 +- 19 files changed, 30 insertions(+), 164 deletions(-) delete mode 100644 app/src/main/java/CustomView/CustomMarkwonView.java diff --git a/app/src/main/java/CustomView/CustomMarkwonView.java b/app/src/main/java/CustomView/CustomMarkwonView.java deleted file mode 100644 index c89ff405..00000000 --- a/app/src/main/java/CustomView/CustomMarkwonView.java +++ /dev/null @@ -1,73 +0,0 @@ -package CustomView; - -import android.content.Context; -import android.text.Spanned; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.commonmark.node.Node; - -import java.util.List; - -import io.noties.markwon.Markwon; -import io.noties.markwon.MarkwonPlugin; - -public class CustomMarkwonView extends Markwon { - - public void setMarkdown(@Nullable String markdown, Context context) { - - } - - @NonNull - @Override - public Node parse(@NonNull String input) { - return null; - } - - @NonNull - @Override - public Spanned render(@NonNull Node node) { - return null; - } - - @NonNull - @Override - public Spanned toMarkdown(@NonNull String input) { - return null; - } - - @Override - public void setMarkdown(@NonNull TextView textView, @NonNull String markdown) { - - } - - @Override - public void setParsedMarkdown(@NonNull TextView textView, @NonNull Spanned markdown) { - - } - - @Override - public boolean hasPlugin(@NonNull Class plugin) { - return false; - } - - @Nullable - @Override - public

P getPlugin(@NonNull Class

type) { - return null; - } - - @NonNull - @Override - public

P requirePlugin(@NonNull Class

type) { - return null; - } - - @NonNull - @Override - public List getPlugins() { - return null; - } -} diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/CommentDataSource.java b/app/src/main/java/ml/docilealligator/infinityforreddit/CommentDataSource.java index 377cc07c..ae2af2a1 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/CommentDataSource.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/CommentDataSource.java @@ -30,8 +30,6 @@ public class CommentDataSource extends PageKeyedDataSource private MutableLiveData initialLoadStateLiveData; private MutableLiveData hasPostLiveData; - private LoadInitialParams initialParams; - private LoadInitialCallback initialCallback; private LoadParams params; private LoadCallback callback; @@ -57,19 +55,12 @@ public class CommentDataSource extends PageKeyedDataSource return hasPostLiveData; } - void retry() { - loadInitial(initialParams, initialCallback); - } - void retryLoadingMore() { loadAfter(params, callback); } @Override public void loadInitial(@NonNull LoadInitialParams params, @NonNull LoadInitialCallback callback) { - initialParams = params; - initialCallback = callback; - initialLoadStateLiveData.postValue(NetworkState.LOADING); RedditAPI api = retrofit.create(RedditAPI.class); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/CommentViewModel.java b/app/src/main/java/ml/docilealligator/infinityforreddit/CommentViewModel.java index 38bc1844..4f5c1e92 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/CommentViewModel.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/CommentViewModel.java @@ -66,10 +66,6 @@ public class CommentViewModel extends ViewModel { commentDataSourceFactory.getCommentDataSource().invalidate(); } - void retry() { - commentDataSourceFactory.getCommentDataSource().retry(); - } - void retryLoadingMore() { commentDataSourceFactory.getCommentDataSource().retryLoadingMore(); } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/CommentsListingFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/CommentsListingFragment.java index 3721d839..5826200b 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/CommentsListingFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/CommentsListingFragment.java @@ -109,8 +109,10 @@ public class CommentsListingFragment extends Fragment implements FragmentCommuni mCommentViewModel.getInitialLoadingState().observe(this, networkState -> { if(networkState.getStatus().equals(NetworkState.Status.SUCCESS)) { mProgressBar.setVisibility(View.GONE); + mFetchCommentInfoLinearLayout.setVisibility(View.GONE); } else if(networkState.getStatus().equals(NetworkState.Status.FAILED)) { - mFetchCommentInfoLinearLayout.setOnClickListener(view -> mCommentViewModel.retry()); + mProgressBar.setVisibility(View.GONE); + mFetchCommentInfoLinearLayout.setOnClickListener(view -> mCommentViewModel.refresh()); showErrorView(R.string.load_comments_failed); } else { mFetchCommentInfoLinearLayout.setVisibility(View.GONE); @@ -119,6 +121,7 @@ public class CommentsListingFragment extends Fragment implements FragmentCommuni }); mCommentViewModel.hasComment().observe(this, hasComment -> { + mProgressBar.setVisibility(View.GONE); if(hasComment) { mFetchCommentInfoLinearLayout.setVisibility(View.GONE); } else { @@ -149,6 +152,7 @@ public class CommentsListingFragment extends Fragment implements FragmentCommuni @Override public void refresh() { mCommentViewModel.refresh(); + mAdapter.setNetworkState(null); } private void showErrorView(int stringResId) { diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/MainActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/MainActivity.java index 3791b5cd..e3c1cdf6 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/MainActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/MainActivity.java @@ -390,7 +390,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe sectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); viewPager.setAdapter(sectionsPagerAdapter); - viewPager.setOffscreenPageLimit(2); + viewPager.setOffscreenPageLimit(3); tabLayout.setupWithViewPager(viewPager); viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/MessageDataSource.java b/app/src/main/java/ml/docilealligator/infinityforreddit/MessageDataSource.java index 3b2af4fb..45bf7737 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/MessageDataSource.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/MessageDataSource.java @@ -22,8 +22,6 @@ class MessageDataSource extends PageKeyedDataSource { private MutableLiveData initialLoadStateLiveData; private MutableLiveData hasPostLiveData; - private LoadInitialParams initialParams; - private LoadInitialCallback initialCallback; private LoadParams params; private LoadCallback callback; @@ -49,19 +47,12 @@ class MessageDataSource extends PageKeyedDataSource { return hasPostLiveData; } - void retry() { - loadInitial(initialParams, initialCallback); - } - void retryLoadingMore() { loadAfter(params, callback); } @Override public void loadInitial(@NonNull LoadInitialParams params, @NonNull LoadInitialCallback callback) { - initialParams = params; - initialCallback = callback; - initialLoadStateLiveData.postValue(NetworkState.LOADING); FetchMessages.fetchMessagesAsync(oauthRetrofit, locale, accessToken, where, null, new FetchMessages.FetchMessagesListener() { diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/MessageViewModel.java b/app/src/main/java/ml/docilealligator/infinityforreddit/MessageViewModel.java index 4ad155d6..d111c8ad 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/MessageViewModel.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/MessageViewModel.java @@ -66,10 +66,6 @@ public class MessageViewModel extends ViewModel { messageDataSourceFactory.getMessageDataSource().invalidate(); } - void retry() { - messageDataSourceFactory.getMessageDataSource().retry(); - } - void retryLoadingMore() { messageDataSourceFactory.getMessageDataSource().retryLoadingMore(); } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/ParsePost.java b/app/src/main/java/ml/docilealligator/infinityforreddit/ParsePost.java index 009bcb18..c6e75042 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/ParsePost.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/ParsePost.java @@ -226,7 +226,6 @@ class ParsePost { if(!data.has(JSONUtils.PREVIEW_KEY) && previewUrl.equals("")) { if(url.contains(permalink)) { //Text post - Log.i("text", Integer.toString(i)); int postType = Post.TEXT_TYPE; post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, title, permalink, score, postType, voteType, gilded, flair, spoiler, nsfw, @@ -238,7 +237,6 @@ class ParsePost { } } else { //No preview link post - Log.i("no preview link", Integer.toString(i)); int postType = Post.NO_PREVIEW_LINK_TYPE; post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, title, previewUrl, url, permalink, score, postType, @@ -257,7 +255,6 @@ class ParsePost { if(isVideo) { //Video post - Log.i("video", Integer.toString(i)); JSONObject redditVideoObject = data.getJSONObject(JSONUtils.MEDIA_KEY).getJSONObject(JSONUtils.REDDIT_VIDEO_KEY); int postType = Post.VIDEO_TYPE; String videoUrl = Html.fromHtml(redditVideoObject.getString(JSONUtils.DASH_URL_KEY)).toString(); @@ -274,7 +271,6 @@ class ParsePost { JSONObject variations = data.getJSONObject(JSONUtils.PREVIEW_KEY).getJSONArray(JSONUtils.IMAGES_KEY).getJSONObject(0); if (variations.has(JSONUtils.VARIANTS_KEY) && variations.getJSONObject(JSONUtils.VARIANTS_KEY).has(JSONUtils.MP4_KEY)) { //Gif video post (MP4) - Log.i("gif video mp4", Integer.toString(i)); int postType = Post.GIF_VIDEO_TYPE; String videoUrl = Html.fromHtml(variations.getJSONObject(JSONUtils.VARIANTS_KEY).getJSONObject(JSONUtils.MP4_KEY).getJSONObject(JSONUtils.SOURCE_KEY).getString(JSONUtils.URL_KEY)).toString(); String gifDownloadUrl = Html.fromHtml(variations.getJSONObject(JSONUtils.VARIANTS_KEY).getJSONObject(JSONUtils.GIF_KEY).getJSONObject(JSONUtils.SOURCE_KEY).getString(JSONUtils.URL_KEY)).toString(); @@ -289,7 +285,6 @@ class ParsePost { post.setGifOrVideoDownloadUrl(gifDownloadUrl); } else if(data.getJSONObject(JSONUtils.PREVIEW_KEY).has(JSONUtils.REDDIT_VIDEO_PREVIEW_KEY)) { //Gif video post (Dash) - Log.i("gif video dash", Integer.toString(i)); int postType = Post.GIF_VIDEO_TYPE; String videoUrl = Html.fromHtml(data.getJSONObject(JSONUtils.PREVIEW_KEY) .getJSONObject(JSONUtils.REDDIT_VIDEO_PREVIEW_KEY).getString(JSONUtils.DASH_URL_KEY)).toString(); @@ -304,7 +299,6 @@ class ParsePost { } else { if (url.endsWith("jpg") || url.endsWith("png")) { //Image post - Log.i("image", Integer.toString(i)); int postType = Post.IMAGE_TYPE; post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, @@ -316,7 +310,6 @@ class ParsePost { } else { if (url.contains(permalink)) { //Text post but with a preview - Log.i("text with image", Integer.toString(i)); int postType = Post.TEXT_TYPE; post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, @@ -333,7 +326,6 @@ class ParsePost { } } else { //Link post - Log.i("link", Integer.toString(i)); int postType = Post.LINK_TYPE; post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, @@ -353,7 +345,6 @@ class ParsePost { } else { if (url.endsWith("jpg") || url.endsWith("png")) { //Image post - Log.i("CP image", Integer.toString(i)); int postType = Post.IMAGE_TYPE; post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, @@ -363,7 +354,6 @@ class ParsePost { post.setPreviewHeight(previewHeight); } else { //CP No Preview Link post - Log.i("CP no preview link", Integer.toString(i)); int postType = Post.NO_PREVIEW_LINK_TYPE; post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, title, diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PostDataSource.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PostDataSource.java index cbcef916..b5996f54 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/PostDataSource.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PostDataSource.java @@ -52,8 +52,6 @@ class PostDataSource extends PageKeyedDataSource { private MutableLiveData initialLoadStateLiveData; private MutableLiveData hasPostLiveData; - private LoadInitialParams initialParams; - private LoadInitialCallback initialCallback; private LoadParams params; private LoadCallback callback; @@ -132,9 +130,6 @@ class PostDataSource extends PageKeyedDataSource { @Override public void loadInitial(@NonNull LoadInitialParams params, @NonNull final LoadInitialCallback callback) { - initialParams = params; - initialCallback = callback; - initialLoadStateLiveData.postValue(NetworkState.LOADING); switch (postType) { @@ -652,10 +647,6 @@ class PostDataSource extends PageKeyedDataSource { }); } - void retry() { - loadInitial(initialParams, initialCallback); - } - void retryLoadingMore() { loadAfter(params, callback); } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java index b2c0e12a..1a65da3d 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java @@ -296,7 +296,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator { } else if(postType == PostDataSource.TYPE_SUBREDDIT) { String subredditName = getArguments().getString(EXTRA_NAME); - boolean displaySubredditName = subredditName.equals("popular") || subredditName.equals("all"); + boolean displaySubredditName = subredditName != null && (subredditName.equals("popular") || subredditName.equals("all")); mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit, mRedditDataRoomDatabase, accessToken, postType, displaySubredditName, new PostRecyclerViewAdapter.Callback() { @Override @@ -392,8 +392,10 @@ public class PostFragment extends Fragment implements FragmentCommunicator { mPostViewModel.getInitialLoadingState().observe(this, networkState -> { if(networkState.getStatus().equals(NetworkState.Status.SUCCESS)) { mProgressBar.setVisibility(View.GONE); + mFetchPostInfoLinearLayout.setVisibility(View.GONE); } else if(networkState.getStatus().equals(NetworkState.Status.FAILED)) { - mFetchPostInfoLinearLayout.setOnClickListener(view -> mPostViewModel.retry()); + mProgressBar.setVisibility(View.GONE); + mFetchPostInfoLinearLayout.setOnClickListener(view -> mPostViewModel.refresh()); showErrorView(R.string.load_posts_error); } else { mFetchPostInfoLinearLayout.setVisibility(View.GONE); @@ -403,14 +405,15 @@ public class PostFragment extends Fragment implements FragmentCommunicator { mPostViewModel.hasPost().observe(this, hasPost -> { this.hasPost = hasPost; + mProgressBar.setVisibility(View.GONE); if(hasPost) { mFetchPostInfoLinearLayout.setVisibility(View.GONE); - mProgressBar.setVisibility(View.GONE); } else { if(isInLazyMode) { stopLazyMode(); } + mFetchPostInfoLinearLayout.setOnClickListener(view -> {}); showErrorView(R.string.no_posts); } }); @@ -451,6 +454,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator { hasPost = false; mPostViewModel.refresh(); + mAdapter.setNetworkState(null); } private void showErrorView(int stringResId) { diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PostViewModel.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PostViewModel.java index d438dca8..aef2a574 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/PostViewModel.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PostViewModel.java @@ -169,10 +169,6 @@ public class PostViewModel extends ViewModel { postDataSourceFactory.getPostDataSource().invalidate(); } - void retry() { - postDataSourceFactory.getPostDataSource().retry(); - } - void retryLoadingMore() { postDataSourceFactory.getPostDataSource().retryLoadingMore(); } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/SearchResultActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/SearchResultActivity.java index 123aa509..ed78ac0a 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/SearchResultActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/SearchResultActivity.java @@ -375,12 +375,6 @@ public class SearchResultActivity extends AppCompatActivity implements SearchPos } } - public void newSearch() { - getItem(0); - getItem(1); - getItem(2); - } - public void changeNSFW(boolean nsfw) { if(postFragment != null) { postFragment.changeNSFW(nsfw); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/SubredditListingDataSource.java b/app/src/main/java/ml/docilealligator/infinityforreddit/SubredditListingDataSource.java index 2fe1f958..c3dd6c1c 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/SubredditListingDataSource.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/SubredditListingDataSource.java @@ -19,8 +19,6 @@ public class SubredditListingDataSource extends PageKeyedDataSource initialLoadStateLiveData; private MutableLiveData hasSubredditLiveData; - private LoadInitialParams initialParams; - private LoadInitialCallback initialCallback; private LoadParams params; private LoadCallback callback; @@ -47,9 +45,6 @@ public class SubredditListingDataSource extends PageKeyedDataSource params, @NonNull LoadInitialCallback callback) { - initialParams = params; - initialCallback = callback; - initialLoadStateLiveData.postValue(NetworkState.LOADING); FetchSubredditData.fetchSubredditListingData(retrofit, query, null, sortType, @@ -102,10 +97,6 @@ public class SubredditListingDataSource extends PageKeyedDataSource { if(networkState.getStatus().equals(NetworkState.Status.SUCCESS)) { mProgressBar.setVisibility(View.GONE); + mFetchSubredditListingInfoLinearLayout.setVisibility(View.GONE); } else if(networkState.getStatus().equals(NetworkState.Status.FAILED)) { - mFetchSubredditListingInfoLinearLayout.setOnClickListener(view -> mSubredditListingViewModel.retry()); + mProgressBar.setVisibility(View.GONE); + mFetchSubredditListingInfoLinearLayout.setOnClickListener(view -> mSubredditListingViewModel.refresh()); showErrorView(R.string.search_subreddits_error); } else { mFetchSubredditListingInfoLinearLayout.setVisibility(View.GONE); @@ -140,6 +142,7 @@ public class SubredditListingFragment extends Fragment implements FragmentCommun }); mSubredditListingViewModel.hasSubredditLiveData().observe(this, hasSubreddit -> { + mProgressBar.setVisibility(View.GONE); if(hasSubreddit) { mFetchSubredditListingInfoLinearLayout.setVisibility(View.GONE); } else { @@ -173,5 +176,6 @@ public class SubredditListingFragment extends Fragment implements FragmentCommun @Override public void refresh() { mSubredditListingViewModel.refresh(); + mAdapter.setNetworkState(null); } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/SubredditListingViewModel.java b/app/src/main/java/ml/docilealligator/infinityforreddit/SubredditListingViewModel.java index 3dcd6870..1412bd22 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/SubredditListingViewModel.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/SubredditListingViewModel.java @@ -20,7 +20,7 @@ public class SubredditListingViewModel extends ViewModel { private LiveData> subreddits; private MutableLiveData sortTypeLiveData; - SubredditListingViewModel(Retrofit retrofit, String query, String sortType) { + public SubredditListingViewModel(Retrofit retrofit, String query, String sortType) { subredditListingDataSourceFactory = new SubredditListingDataSourceFactory(retrofit, query, sortType); initialLoadingState = Transformations.switchMap(subredditListingDataSourceFactory.getSubredditListingDataSourceMutableLiveData(), @@ -65,10 +65,6 @@ public class SubredditListingViewModel extends ViewModel { subredditListingDataSourceFactory.getSubredditListingDataSource().invalidate(); } - void retry() { - subredditListingDataSourceFactory.getSubredditListingDataSource().retry(); - } - void retryLoadingMore() { subredditListingDataSourceFactory.getSubredditListingDataSource().retryLoadingMore(); } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/UserListingDataSource.java b/app/src/main/java/ml/docilealligator/infinityforreddit/UserListingDataSource.java index 2dba6202..8d55746f 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/UserListingDataSource.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/UserListingDataSource.java @@ -19,8 +19,6 @@ public class UserListingDataSource extends PageKeyedDataSource private MutableLiveData initialLoadStateLiveData; private MutableLiveData hasUserLiveData; - private PageKeyedDataSource.LoadInitialParams initialParams; - private PageKeyedDataSource.LoadInitialCallback initialCallback; private PageKeyedDataSource.LoadParams params; private PageKeyedDataSource.LoadCallback callback; @@ -47,9 +45,6 @@ public class UserListingDataSource extends PageKeyedDataSource @Override public void loadInitial(@NonNull PageKeyedDataSource.LoadInitialParams params, @NonNull PageKeyedDataSource.LoadInitialCallback callback) { - initialParams = params; - initialCallback = callback; - initialLoadStateLiveData.postValue(NetworkState.LOADING); FetchUserData.fetchUserListingData(retrofit, query, null, sortType, @@ -102,10 +97,6 @@ public class UserListingDataSource extends PageKeyedDataSource }); } - void retry() { - loadInitial(initialParams, initialCallback); - } - void retryLoadingMore() { loadAfter(params, callback); } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/UserListingFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/UserListingFragment.java index c3471b9a..de8028bb 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/UserListingFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/UserListingFragment.java @@ -109,8 +109,10 @@ public class UserListingFragment extends Fragment implements FragmentCommunicato mUserListingViewModel.getInitialLoadingState().observe(this, networkState -> { if(networkState.getStatus().equals(NetworkState.Status.SUCCESS)) { mProgressBar.setVisibility(View.GONE); + mFetchUserListingInfoLinearLayout.setVisibility(View.GONE); } else if(networkState.getStatus().equals(NetworkState.Status.FAILED)) { - mFetchUserListingInfoLinearLayout.setOnClickListener(view -> mUserListingViewModel.retry()); + mProgressBar.setVisibility(View.GONE); + mFetchUserListingInfoLinearLayout.setOnClickListener(view -> mUserListingViewModel.refresh()); showErrorView(R.string.search_users_error); } else { mFetchUserListingInfoLinearLayout.setVisibility(View.GONE); @@ -119,6 +121,7 @@ public class UserListingFragment extends Fragment implements FragmentCommunicato }); mUserListingViewModel.hasUser().observe(this, hasUser -> { + mProgressBar.setVisibility(View.GONE); if(hasUser) { mFetchUserListingInfoLinearLayout.setVisibility(View.GONE); } else { @@ -152,5 +155,6 @@ public class UserListingFragment extends Fragment implements FragmentCommunicato @Override public void refresh() { mUserListingViewModel.refresh(); + mAdapter.setNetworkState(null); } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/UserListingViewModel.java b/app/src/main/java/ml/docilealligator/infinityforreddit/UserListingViewModel.java index de4ab542..d25463e5 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/UserListingViewModel.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/UserListingViewModel.java @@ -20,7 +20,7 @@ public class UserListingViewModel extends ViewModel { private LiveData> users; private MutableLiveData sortTypeLiveData; - UserListingViewModel(Retrofit retrofit, String query, String sortType) { + public UserListingViewModel(Retrofit retrofit, String query, String sortType) { userListingDataSourceFactory = new UserListingDataSourceFactory(retrofit, query, sortType); initialLoadingState = Transformations.switchMap(userListingDataSourceFactory.getUserListingDataSourceMutableLiveData(), @@ -65,10 +65,6 @@ public class UserListingViewModel extends ViewModel { userListingDataSourceFactory.getUserListingDataSource().invalidate(); } - void retry() { - userListingDataSourceFactory.getUserListingDataSource().retry(); - } - void retryLoadingMore() { userListingDataSourceFactory.getUserListingDataSource().retryLoadingMore(); } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/ViewMessageActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/ViewMessageActivity.java index 5d052cbd..07b1cc83 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/ViewMessageActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/ViewMessageActivity.java @@ -229,8 +229,10 @@ public class ViewMessageActivity extends AppCompatActivity { mMessageViewModel.getInitialLoadingState().observe(this, networkState -> { if(networkState.getStatus().equals(NetworkState.Status.SUCCESS)) { mProgressBar.setVisibility(View.GONE); + mFetchMessageInfoLinearLayout.setVisibility(View.GONE); } else if(networkState.getStatus().equals(NetworkState.Status.FAILED)) { - mFetchMessageInfoLinearLayout.setOnClickListener(view -> mMessageViewModel.retry()); + mProgressBar.setVisibility(View.GONE); + mFetchMessageInfoLinearLayout.setOnClickListener(view -> mMessageViewModel.refresh()); showErrorView(R.string.load_messages_failed); } else { mFetchMessageInfoLinearLayout.setVisibility(View.GONE); @@ -239,6 +241,7 @@ public class ViewMessageActivity extends AppCompatActivity { }); mMessageViewModel.hasMessage().observe(this, hasMessage -> { + mProgressBar.setVisibility(View.GONE); if(hasMessage) { mFetchMessageInfoLinearLayout.setVisibility(View.GONE); } else { @@ -271,6 +274,7 @@ public class ViewMessageActivity extends AppCompatActivity { public boolean onOptionsItemSelected(@NonNull MenuItem item) { if(item.getItemId() == R.id.action_refresh_view_message_activity) { mMessageViewModel.refresh(); + mAdapter.setNetworkState(null); return true; } else if(item.getItemId() == android.R.id.home) { finish(); -- cgit v1.2.3