diff options
author | Alex Ning <chineseperson5@gmail.com> | 2019-08-02 09:23:31 +0000 |
---|---|---|
committer | Alex Ning <chineseperson5@gmail.com> | 2019-08-02 09:23:31 +0000 |
commit | b42db1fbfeb0cd7aca448e311cf26e2d6a3b206f (patch) | |
tree | 5389bb3254c2c4e8c4ac70e5c8a481b11158811c /app | |
parent | 8940d4da680d6c25f7a7a280f70d5e63971e624f (diff) | |
download | infinity-for-reddit-b42db1fbfeb0cd7aca448e311cf26e2d6a3b206f.tar infinity-for-reddit-b42db1fbfeb0cd7aca448e311cf26e2d6a3b206f.tar.gz infinity-for-reddit-b42db1fbfeb0cd7aca448e311cf26e2d6a3b206f.tar.bz2 infinity-for-reddit-b42db1fbfeb0cd7aca448e311cf26e2d6a3b206f.tar.lz infinity-for-reddit-b42db1fbfeb0cd7aca448e311cf26e2d6a3b206f.tar.xz infinity-for-reddit-b42db1fbfeb0cd7aca448e311cf26e2d6a3b206f.tar.zst infinity-for-reddit-b42db1fbfeb0cd7aca448e311cf26e2d6a3b206f.zip |
Fixed vote failed message not shown. Fixed subreddit icon not load online if the subreddit info is not in the database.
Diffstat (limited to 'app')
13 files changed, 103 insertions, 27 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/CommentAndPostRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/CommentAndPostRecyclerViewAdapter.java index d3f4c9ed..d99fc6c6 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/CommentAndPostRecyclerViewAdapter.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/CommentAndPostRecyclerViewAdapter.java @@ -201,7 +201,7 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie } mLoadSubredditIconAsyncTask = new LoadSubredditIconAsyncTask( SubredditRoomDatabase.getDatabase(mActivity).subredditDao(), mPost.getSubredditNamePrefixed().substring(2), - iconImageUrl -> { + mRetrofit, iconImageUrl -> { if(!iconImageUrl.equals("")) { mGlide.load(iconImageUrl) .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))) diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/FetchUserData.java b/app/src/main/java/ml/docilealligator/infinityforreddit/FetchUserData.java index 8eadcd89..060af638 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/FetchUserData.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/FetchUserData.java @@ -22,8 +22,7 @@ public class FetchUserData { void onFetchUserListingDataFailed(); } - public static void fetchUserData(final Retrofit retrofit, String userName, - final FetchUserDataListener fetchUserDataListener) { + public static void fetchUserData(Retrofit retrofit, String userName, FetchUserDataListener fetchUserDataListener) { RedditAPI api = retrofit.create(RedditAPI.class); Call<String> userInfo = api.getUserData(userName); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/LoadSubredditIconAsyncTask.java b/app/src/main/java/ml/docilealligator/infinityforreddit/LoadSubredditIconAsyncTask.java index 923e657f..db44d980 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/LoadSubredditIconAsyncTask.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/LoadSubredditIconAsyncTask.java @@ -2,7 +2,11 @@ package ml.docilealligator.infinityforreddit; import android.os.AsyncTask; +import java.util.ArrayList; + import SubredditDatabase.SubredditDao; +import SubredditDatabase.SubredditData; +import retrofit2.Retrofit; class LoadSubredditIconAsyncTask extends AsyncTask<Void, Void, Void> { interface LoadSubredditIconAsyncTaskListener { @@ -11,22 +15,27 @@ class LoadSubredditIconAsyncTask extends AsyncTask<Void, Void, Void> { private SubredditDao subredditDao; private String subredditName; + private Retrofit retrofit; private String iconImageUrl; + private boolean hasSubredditInDb; private LoadSubredditIconAsyncTaskListener loadSubredditIconAsyncTaskListener; - LoadSubredditIconAsyncTask(SubredditDao subredditDao, String subredditName, + LoadSubredditIconAsyncTask(SubredditDao subredditDao, String subredditName, Retrofit retrofit, LoadSubredditIconAsyncTaskListener loadSubredditIconAsyncTaskListener) { this.subredditDao = subredditDao; this.subredditName = subredditName; + this.retrofit = retrofit; this.loadSubredditIconAsyncTaskListener = loadSubredditIconAsyncTaskListener; } @Override protected Void doInBackground(Void... voids) { - if(subredditDao.getSubredditData(subredditName) != null) { + SubredditData subredditData = subredditDao.getSubredditData(subredditName); + if(subredditData != null) { iconImageUrl = subredditDao.getSubredditData(subredditName).getIconUrl(); + hasSubredditInDb = true; } else { - iconImageUrl = ""; + hasSubredditInDb = false; } return null; } @@ -35,7 +44,25 @@ class LoadSubredditIconAsyncTask extends AsyncTask<Void, Void, Void> { protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); if(!isCancelled()) { - loadSubredditIconAsyncTaskListener.loadIconSuccess(iconImageUrl); + if(hasSubredditInDb) { + loadSubredditIconAsyncTaskListener.loadIconSuccess(iconImageUrl); + } else { + FetchSubredditData.fetchSubredditData(retrofit, subredditName, new FetchSubredditData.FetchSubredditDataListener() { + @Override + public void onFetchSubredditDataSuccess(SubredditData subredditData, int nCurrentOnlineSubscribers) { + ArrayList<SubredditData> singleSubredditDataList = new ArrayList<>(); + singleSubredditDataList.add(subredditData); + new InsertSubscribedThingsAsyncTask(null, null, subredditDao, + null, null, singleSubredditDataList, + () -> loadSubredditIconAsyncTaskListener.loadIconSuccess(subredditData.getIconUrl())).execute(); + } + + @Override + public void onFetchSubredditDataFail() { + loadSubredditIconAsyncTaskListener.loadIconSuccess(null); + } + }); + } } } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/LoadUserDataAsyncTask.java b/app/src/main/java/ml/docilealligator/infinityforreddit/LoadUserDataAsyncTask.java index 8cb576d2..8ef07e73 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/LoadUserDataAsyncTask.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/LoadUserDataAsyncTask.java @@ -50,7 +50,7 @@ public class LoadUserDataAsyncTask extends AsyncTask<Void, Void, Void> { @Override public void onFetchUserDataFailed() { - loadUserDataAsyncTaskListener.loadUserDataSuccess(""); + loadUserDataAsyncTaskListener.loadUserDataSuccess(null); } }); } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PostDataSource.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PostDataSource.java index b596fc75..ff6d5a48 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/PostDataSource.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PostDataSource.java @@ -469,7 +469,6 @@ class PostDataSource extends PageKeyedDataSource<String, Post> { getPost.enqueue(new Callback<String>() { @Override public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) { - Log.i("initial", call.request().url().toString()); if(response.isSuccessful()) { ParsePost.parsePosts(response.body(), locale, -1, new ParsePost.ParsePostsListingListener() { @@ -518,7 +517,6 @@ class PostDataSource extends PageKeyedDataSource<String, Post> { getPost.enqueue(new Callback<String>() { @Override public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) { - Log.i("after", call.request().url().toString()); if(response.isSuccessful()) { ParsePost.parsePosts(response.body(), locale, -1, new ParsePost.ParsePostsListingListener() { @Override diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java index 6799c04e..a5cd86ff 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java @@ -178,7 +178,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator { String subredditName = getArguments().getString(EXTRA_SUBREDDIT_NAME); String query = getArguments().getString(EXTRA_QUERY); - mAdapter = new PostRecyclerViewAdapter(activity, mRetrofit, + mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit, mSharedPreferences, postType, true, () -> mPostViewModel.retryLoadingMore()); factory = new PostViewModel.Factory(mOauthRetrofit, accessToken, getResources().getConfiguration().locale, subredditName, query, postType, sortType, new PostDataSource.OnPostFetchedCallback() { @@ -199,7 +199,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator { String subredditName = getArguments().getString(EXTRA_SUBREDDIT_NAME); boolean displaySubredditName = subredditName.equals("popular") || subredditName.equals("all"); - mAdapter = new PostRecyclerViewAdapter(activity, mRetrofit, + mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit, mSharedPreferences, postType, displaySubredditName, () -> mPostViewModel.retryLoadingMore()); factory = new PostViewModel.Factory(mOauthRetrofit, accessToken, @@ -224,7 +224,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator { String subredditName = getArguments().getString(EXTRA_SUBREDDIT_NAME); - mAdapter = new PostRecyclerViewAdapter(activity, mRetrofit, + mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit, mSharedPreferences, postType, true, () -> mPostViewModel.retryLoadingMore()); factory = new PostViewModel.Factory(mOauthRetrofit, accessToken, @@ -244,7 +244,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator { } }); } else { - mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, + mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit, mSharedPreferences, postType, true, () -> mPostViewModel.retryLoadingMore()); factory = new PostViewModel.Factory(mOauthRetrofit, accessToken, diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PostImageActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PostImageActivity.java index bc750c2a..cd4e84dc 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/PostImageActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PostImageActivity.java @@ -98,6 +98,10 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS private FlairBottomSheetFragment flairSelectionBottomSheetFragment; @Inject + @Named("no_oauth") + Retrofit mRetrofit; + + @Inject @Named("oauth") Retrofit mOauthRetrofit; @@ -288,7 +292,7 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS private void loadSubredditIcon() { new LoadSubredditIconAsyncTask(SubredditRoomDatabase.getDatabase(this).subredditDao(), - subredditName, iconImageUrl -> { + subredditName, mRetrofit, iconImageUrl -> { iconUrl = iconImageUrl; displaySubredditIcon(); loadSubredditIconSuccessful = true; diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PostLinkActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PostLinkActivity.java index 3e68a699..af507488 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/PostLinkActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PostLinkActivity.java @@ -75,6 +75,10 @@ public class PostLinkActivity extends AppCompatActivity implements FlairBottomSh private FlairBottomSheetFragment flairSelectionBottomSheetFragment; @Inject + @Named("no_oauth") + Retrofit mRetrofit; + + @Inject @Named("oauth") Retrofit mOauthRetrofit; @@ -215,7 +219,7 @@ public class PostLinkActivity extends AppCompatActivity implements FlairBottomSh private void loadSubredditIcon() { new LoadSubredditIconAsyncTask(SubredditRoomDatabase.getDatabase(this).subredditDao(), - subredditName, iconImageUrl -> { + subredditName, mRetrofit, iconImageUrl -> { iconUrl = iconImageUrl; displaySubredditIcon(); loadSubredditIconSuccessful = true; diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PostRecyclerViewAdapter.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PostRecyclerViewAdapter.java index 2342fcd1..b84e8a85 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/PostRecyclerViewAdapter.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PostRecyclerViewAdapter.java @@ -59,6 +59,7 @@ import retrofit2.Retrofit; class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHolder> { private Context mContext; private Retrofit mOauthRetrofit; + private Retrofit mRetrofit; private SharedPreferences mSharedPreferences; private RequestManager glide; private SubredditDao subredditDao; @@ -78,12 +79,14 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo void retryLoadingMore(); } - PostRecyclerViewAdapter(Context context, Retrofit oauthRetrofit, SharedPreferences sharedPreferences, int postType, - boolean displaySubredditName, RetryLoadingMoreCallback retryLoadingMoreCallback) { + PostRecyclerViewAdapter(Context context, Retrofit oauthRetrofit, Retrofit retrofit, + SharedPreferences sharedPreferences, int postType, boolean displaySubredditName, + RetryLoadingMoreCallback retryLoadingMoreCallback) { super(DIFF_CALLBACK); if(context != null) { mContext = context; mOauthRetrofit = oauthRetrofit; + mRetrofit = retrofit; mSharedPreferences = sharedPreferences; this.postType = postType; this.displaySubredditName = displaySubredditName; @@ -159,7 +162,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo if(displaySubredditName) { if(author.equals(subredditNamePrefixed)) { if(post.getAuthorIconUrl() == null) { - new LoadUserDataAsyncTask(userDao, post.getAuthor(), mOauthRetrofit, iconImageUrl -> { + new LoadUserDataAsyncTask(userDao, post.getAuthor(), mRetrofit, iconImageUrl -> { if(mContext != null && getItemCount() > 0) { if(!iconImageUrl.equals("")) { glide.load(iconImageUrl) @@ -191,10 +194,12 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo } } else { if(post.getSubredditIconUrl() == null) { - new LoadSubredditIconAsyncTask(subredditDao, subredditName, + new LoadSubredditIconAsyncTask(subredditDao, subredditName, mRetrofit, iconImageUrl -> { if(mContext != null && getItemCount() > 0) { - if(!iconImageUrl.equals("")) { + if(iconImageUrl == null) { + + } else if(!iconImageUrl.equals("")) { glide.load(iconImageUrl) .apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0))) .error(glide.load(R.drawable.subreddit_default_icon) @@ -245,7 +250,7 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo }); } else { if(post.getAuthorIconUrl() == null) { - new LoadUserDataAsyncTask(userDao, post.getAuthor(), mOauthRetrofit, iconImageUrl -> { + new LoadUserDataAsyncTask(userDao, post.getAuthor(), mRetrofit, iconImageUrl -> { if(mContext != null && getItemCount() > 0) { if(!iconImageUrl.equals("")) { glide.load(iconImageUrl) diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PostTextActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PostTextActivity.java index 701c0e8d..1f4abf27 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/PostTextActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PostTextActivity.java @@ -75,6 +75,10 @@ public class PostTextActivity extends AppCompatActivity implements FlairBottomSh private FlairBottomSheetFragment flairSelectionBottomSheetFragment; @Inject + @Named("no_oauth") + Retrofit mRetrofit; + + @Inject @Named("oauth") Retrofit mOauthRetrofit; @@ -220,7 +224,7 @@ public class PostTextActivity extends AppCompatActivity implements FlairBottomSh private void loadSubredditIcon() { new LoadSubredditIconAsyncTask(SubredditRoomDatabase.getDatabase(this).subredditDao(), - subredditName, iconImageUrl -> { + subredditName, mRetrofit, iconImageUrl -> { iconUrl = iconImageUrl; displaySubredditIcon(); loadSubredditIconSuccessful = true; diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PostVideoActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PostVideoActivity.java index 81553663..e57a65c4 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/PostVideoActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PostVideoActivity.java @@ -95,6 +95,10 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS private FlairBottomSheetFragment flairSelectionBottomSheetFragment; @Inject + @Named("no_oauth") + Retrofit mRetrofit; + + @Inject @Named("oauth") Retrofit mOauthRetrofit; @@ -286,7 +290,7 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS private void loadSubredditIcon() { new LoadSubredditIconAsyncTask(SubredditRoomDatabase.getDatabase(this).subredditDao(), - subredditName, iconImageUrl -> { + subredditName, mRetrofit, iconImageUrl -> { iconUrl = iconImageUrl; displaySubredditIcon(); loadSubredditIconSuccessful = true; diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/SearchActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/SearchActivity.java index cd828c80..113b9835 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/SearchActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/SearchActivity.java @@ -45,6 +45,28 @@ public class SearchActivity extends AppCompatActivity { setSupportActionBar(toolbar); + simpleSearchView.setOnSearchViewListener(new SimpleSearchView.SearchViewListener() { + @Override + public void onSearchViewShown() { + + } + + @Override + public void onSearchViewClosed() { + finish(); + } + + @Override + public void onSearchViewShownAnimation() { + + } + + @Override + public void onSearchViewClosedAnimation() { + + } + }); + simpleSearchView.setOnQueryTextListener(new SimpleSearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/VoteThing.java b/app/src/main/java/ml/docilealligator/infinityforreddit/VoteThing.java index 175bcf1b..c6f8bc12 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/VoteThing.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/VoteThing.java @@ -1,9 +1,10 @@ package ml.docilealligator.infinityforreddit; import android.content.SharedPreferences; -import androidx.annotation.NonNull; import android.util.Log; +import androidx.annotation.NonNull; + import java.util.HashMap; import java.util.Map; @@ -42,7 +43,11 @@ class VoteThing { voteThingCall.enqueue(new Callback<String>() { @Override public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) { - voteThingListener.onVoteThingSuccess(position); + if(response.isSuccessful()) { + voteThingListener.onVoteThingSuccess(position); + } else { + voteThingListener.onVoteThingFail(position); + } } @Override @@ -68,7 +73,11 @@ class VoteThing { voteThingCall.enqueue(new Callback<String>() { @Override public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) { - voteThingWithoutPositionListener.onVoteThingSuccess(); + if(response.isSuccessful()) { + voteThingWithoutPositionListener.onVoteThingSuccess(); + } else { + voteThingWithoutPositionListener.onVoteThingFail(); + } } @Override |