mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2025-02-06 14:44:53 +01:00
Show inbox count in the inbox menu item in the navigation drawer.
This commit is contained in:
parent
dd98dd879d
commit
e4c9f7b927
@ -68,7 +68,6 @@ import javax.inject.Named;
|
|||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import ml.docilealligator.infinityforreddit.ActivityToolbarInterface;
|
import ml.docilealligator.infinityforreddit.ActivityToolbarInterface;
|
||||||
import ml.docilealligator.infinityforreddit.FetchMyInfo;
|
|
||||||
import ml.docilealligator.infinityforreddit.FetchSubscribedThing;
|
import ml.docilealligator.infinityforreddit.FetchSubscribedThing;
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.MarkPostAsReadInterface;
|
import ml.docilealligator.infinityforreddit.MarkPostAsReadInterface;
|
||||||
@ -107,6 +106,8 @@ import ml.docilealligator.infinityforreddit.subreddit.SubredditData;
|
|||||||
import ml.docilealligator.infinityforreddit.subscribedsubreddit.SubscribedSubredditData;
|
import ml.docilealligator.infinityforreddit.subscribedsubreddit.SubscribedSubredditData;
|
||||||
import ml.docilealligator.infinityforreddit.subscribedsubreddit.SubscribedSubredditViewModel;
|
import ml.docilealligator.infinityforreddit.subscribedsubreddit.SubscribedSubredditViewModel;
|
||||||
import ml.docilealligator.infinityforreddit.subscribeduser.SubscribedUserData;
|
import ml.docilealligator.infinityforreddit.subscribeduser.SubscribedUserData;
|
||||||
|
import ml.docilealligator.infinityforreddit.user.FetchUserData;
|
||||||
|
import ml.docilealligator.infinityforreddit.user.UserData;
|
||||||
import ml.docilealligator.infinityforreddit.utils.CustomThemeSharedPreferencesUtils;
|
import ml.docilealligator.infinityforreddit.utils.CustomThemeSharedPreferencesUtils;
|
||||||
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
|
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
|
||||||
import ml.docilealligator.infinityforreddit.utils.Utils;
|
import ml.docilealligator.infinityforreddit.utils.Utils;
|
||||||
@ -131,6 +132,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
|||||||
private static final String ACCOUNT_NAME_STATE = "ANS";
|
private static final String ACCOUNT_NAME_STATE = "ANS";
|
||||||
private static final String MESSAGE_FULLNAME_STATE = "MFS";
|
private static final String MESSAGE_FULLNAME_STATE = "MFS";
|
||||||
private static final String NEW_ACCOUNT_NAME_STATE = "NANS";
|
private static final String NEW_ACCOUNT_NAME_STATE = "NANS";
|
||||||
|
private static final String INBOX_COUNT_STATE = "ICS";
|
||||||
|
|
||||||
private static final int LOGIN_ACTIVITY_REQUEST_CODE = 0;
|
private static final int LOGIN_ACTIVITY_REQUEST_CODE = 0;
|
||||||
|
|
||||||
@ -224,6 +226,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
|||||||
private boolean mShowFavoriteSubscribedSubreddits;
|
private boolean mShowFavoriteSubscribedSubreddits;
|
||||||
private boolean mShowSubscribedSubreddits;
|
private boolean mShowSubscribedSubreddits;
|
||||||
private int fabOption;
|
private int fabOption;
|
||||||
|
private int inboxCount;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
@ -314,6 +317,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
|||||||
isInLazyMode = savedInstanceState.getBoolean(IS_IN_LAZY_MODE_STATE);
|
isInLazyMode = savedInstanceState.getBoolean(IS_IN_LAZY_MODE_STATE);
|
||||||
mMessageFullname = savedInstanceState.getString(MESSAGE_FULLNAME_STATE);
|
mMessageFullname = savedInstanceState.getString(MESSAGE_FULLNAME_STATE);
|
||||||
mNewAccountName = savedInstanceState.getString(NEW_ACCOUNT_NAME_STATE);
|
mNewAccountName = savedInstanceState.getString(NEW_ACCOUNT_NAME_STATE);
|
||||||
|
inboxCount = savedInstanceState.getInt(INBOX_COUNT_STATE);
|
||||||
initializeNotificationAndBindView(true);
|
initializeNotificationAndBindView(true);
|
||||||
} else {
|
} else {
|
||||||
mMessageFullname = getIntent().getStringExtra(EXTRA_MESSSAGE_FULLNAME);
|
mMessageFullname = getIntent().getStringExtra(EXTRA_MESSSAGE_FULLNAME);
|
||||||
@ -741,8 +745,6 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
|||||||
} else if (stringId == R.string.multi_reddit) {
|
} else if (stringId == R.string.multi_reddit) {
|
||||||
intent = new Intent(MainActivity.this, SubscribedThingListingActivity.class);
|
intent = new Intent(MainActivity.this, SubscribedThingListingActivity.class);
|
||||||
intent.putExtra(SubscribedThingListingActivity.EXTRA_SHOW_MULTIREDDITS, true);
|
intent.putExtra(SubscribedThingListingActivity.EXTRA_SHOW_MULTIREDDITS, true);
|
||||||
} else if (stringId == R.string.inbox) {
|
|
||||||
intent = new Intent(MainActivity.this, InboxActivity.class);
|
|
||||||
} else if (stringId == R.string.upvoted) {
|
} else if (stringId == R.string.upvoted) {
|
||||||
intent = new Intent(MainActivity.this, AccountPostsActivity.class);
|
intent = new Intent(MainActivity.this, AccountPostsActivity.class);
|
||||||
intent.putExtra(AccountPostsActivity.EXTRA_USER_WHERE, PostDataSource.USER_WHERE_UPVOTED);
|
intent.putExtra(AccountPostsActivity.EXTRA_USER_WHERE, PostDataSource.USER_WHERE_UPVOTED);
|
||||||
@ -823,6 +825,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
adapter.setInboxCount(inboxCount);
|
||||||
navDrawerRecyclerView.setLayoutManager(new LinearLayoutManager(this));
|
navDrawerRecyclerView.setLayoutManager(new LinearLayoutManager(this));
|
||||||
navDrawerRecyclerView.setAdapter(adapter);
|
navDrawerRecyclerView.setAdapter(adapter);
|
||||||
|
|
||||||
@ -974,7 +977,24 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
|||||||
|
|
||||||
private void loadUserData() {
|
private void loadUserData() {
|
||||||
if (!mFetchUserInfoSuccess) {
|
if (!mFetchUserInfoSuccess) {
|
||||||
FetchMyInfo.fetchAccountInfo(mOauthRetrofit, mRedditDataRoomDatabase, mAccessToken,
|
FetchUserData.fetchUserData(mRedditDataRoomDatabase, mOauthRetrofit, mAccessToken,
|
||||||
|
mAccountName, new FetchUserData.FetchUserDataListener() {
|
||||||
|
@Override
|
||||||
|
public void onFetchUserDataSuccess(UserData userData, int inboxCount) {
|
||||||
|
MainActivity.this.inboxCount = inboxCount;
|
||||||
|
mAccountName = userData.getName();
|
||||||
|
mFetchUserInfoSuccess = true;
|
||||||
|
if (adapter != null) {
|
||||||
|
adapter.setInboxCount(inboxCount);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFetchUserDataFailed() {
|
||||||
|
mFetchUserInfoSuccess = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
/*FetchMyInfo.fetchAccountInfo(mOauthRetrofit, mRedditDataRoomDatabase, mAccessToken,
|
||||||
new FetchMyInfo.FetchMyInfoListener() {
|
new FetchMyInfo.FetchMyInfoListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onFetchMyInfoSuccess(String name, String profileImageUrl, String bannerImageUrl, int karma) {
|
public void onFetchMyInfoSuccess(String name, String profileImageUrl, String bannerImageUrl, int karma) {
|
||||||
@ -986,7 +1006,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
|||||||
public void onFetchMyInfoFailed(boolean parseFailed) {
|
public void onFetchMyInfoFailed(boolean parseFailed) {
|
||||||
mFetchUserInfoSuccess = false;
|
mFetchUserInfoSuccess = false;
|
||||||
}
|
}
|
||||||
});
|
});*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1111,6 +1131,7 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
|||||||
outState.putString(ACCOUNT_NAME_STATE, mAccountName);
|
outState.putString(ACCOUNT_NAME_STATE, mAccountName);
|
||||||
outState.putString(MESSAGE_FULLNAME_STATE, mMessageFullname);
|
outState.putString(MESSAGE_FULLNAME_STATE, mMessageFullname);
|
||||||
outState.putString(NEW_ACCOUNT_NAME_STATE, mNewAccountName);
|
outState.putString(NEW_ACCOUNT_NAME_STATE, mNewAccountName);
|
||||||
|
outState.putInt(INBOX_COUNT_STATE, inboxCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -840,7 +840,7 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele
|
|||||||
if (!mFetchUserInfoSuccess) {
|
if (!mFetchUserInfoSuccess) {
|
||||||
FetchUserData.fetchUserData(mRetrofit, username, new FetchUserData.FetchUserDataListener() {
|
FetchUserData.fetchUserData(mRetrofit, username, new FetchUserData.FetchUserDataListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onFetchUserDataSuccess(UserData userData) {
|
public void onFetchUserDataSuccess(UserData userData, int inboxCount) {
|
||||||
new ViewUserDetailActivity.InsertUserDataAsyncTask(mRedditDataRoomDatabase.userDao(), userData,
|
new ViewUserDetailActivity.InsertUserDataAsyncTask(mRedditDataRoomDatabase.userDao(), userData,
|
||||||
() -> mFetchUserInfoSuccess = true).execute();
|
() -> mFetchUserInfoSuccess = true).execute();
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package ml.docilealligator.infinityforreddit.adapters;
|
package ml.docilealligator.infinityforreddit.adapters;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
@ -31,6 +32,7 @@ import butterknife.ButterKnife;
|
|||||||
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
|
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.account.Account;
|
import ml.docilealligator.infinityforreddit.account.Account;
|
||||||
|
import ml.docilealligator.infinityforreddit.activities.InboxActivity;
|
||||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
||||||
import ml.docilealligator.infinityforreddit.subscribedsubreddit.SubscribedSubredditData;
|
import ml.docilealligator.infinityforreddit.subscribedsubreddit.SubscribedSubredditData;
|
||||||
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
|
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
|
||||||
@ -66,6 +68,7 @@ public class NavigationDrawerRecyclerViewAdapter extends RecyclerView.Adapter<Re
|
|||||||
private String profileImageUrl;
|
private String profileImageUrl;
|
||||||
private String bannerImageUrl;
|
private String bannerImageUrl;
|
||||||
private int karma;
|
private int karma;
|
||||||
|
private int inboxCount;
|
||||||
private boolean isNSFWEnabled;
|
private boolean isNSFWEnabled;
|
||||||
private boolean requireAuthToAccountSection;
|
private boolean requireAuthToAccountSection;
|
||||||
private boolean showAvatarOnTheRightInTheNavigationDrawer;
|
private boolean showAvatarOnTheRightInTheNavigationDrawer;
|
||||||
@ -420,8 +423,17 @@ public class NavigationDrawerRecyclerViewAdapter extends RecyclerView.Adapter<Re
|
|||||||
drawableId = R.drawable.ic_multi_reddit_24dp;
|
drawableId = R.drawable.ic_multi_reddit_24dp;
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
stringId = R.string.inbox;
|
setOnClickListener = false;
|
||||||
drawableId = R.drawable.ic_inbox_24dp;
|
if (inboxCount > 0) {
|
||||||
|
((MenuItemViewHolder) holder).menuTextView.setText(appCompatActivity.getString(R.string.inbox_with_count, inboxCount));
|
||||||
|
} else {
|
||||||
|
((MenuItemViewHolder) holder).menuTextView.setText(R.string.inbox);
|
||||||
|
}
|
||||||
|
((MenuItemViewHolder) holder).imageView.setImageDrawable(ContextCompat.getDrawable(appCompatActivity, R.drawable.ic_inbox_24dp));
|
||||||
|
((MenuItemViewHolder) holder).itemView.setOnClickListener(view -> {
|
||||||
|
Intent intent = new Intent(appCompatActivity, InboxActivity.class);
|
||||||
|
appCompatActivity.startActivity(intent);
|
||||||
|
});
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
stringId = R.string.upvoted;
|
stringId = R.string.upvoted;
|
||||||
@ -759,6 +771,11 @@ public class NavigationDrawerRecyclerViewAdapter extends RecyclerView.Adapter<Re
|
|||||||
this.showAvatarOnTheRightInTheNavigationDrawer = showAvatarOnTheRightInTheNavigationDrawer;
|
this.showAvatarOnTheRightInTheNavigationDrawer = showAvatarOnTheRightInTheNavigationDrawer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setInboxCount(int inboxCount) {
|
||||||
|
this.inboxCount = inboxCount;
|
||||||
|
notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
|
||||||
class NavHeaderViewHolder extends RecyclerView.ViewHolder {
|
class NavHeaderViewHolder extends RecyclerView.ViewHolder {
|
||||||
@BindView(R.id.name_text_view_nav_header_main)
|
@BindView(R.id.name_text_view_nav_header_main)
|
||||||
TextView accountNameTextView;
|
TextView accountNameTextView;
|
||||||
|
@ -86,6 +86,9 @@ public interface RedditAPI {
|
|||||||
@GET("user/{username}/about.json?raw_json=1")
|
@GET("user/{username}/about.json?raw_json=1")
|
||||||
Call<String> getUserData(@Path("username") String username);
|
Call<String> getUserData(@Path("username") String username);
|
||||||
|
|
||||||
|
@GET("user/{username}/about.json?raw_json=1")
|
||||||
|
Call<String> getUserDataOauth(@HeaderMap Map<String, String> headers, @Path("username") String username);
|
||||||
|
|
||||||
@GET("user/{username}/comments.json?raw_json=1")
|
@GET("user/{username}/comments.json?raw_json=1")
|
||||||
Call<String> getUserComments(@Path("username") String username, @Query("after") String after,
|
Call<String> getUserComments(@Path("username") String username, @Query("after") String after,
|
||||||
@Query("sort") String sortType);
|
@Query("sort") String sortType);
|
||||||
|
@ -22,7 +22,7 @@ public class LoadUserData {
|
|||||||
} else {
|
} else {
|
||||||
handler.post(() -> FetchUserData.fetchUserData(retrofit, userName, new FetchUserData.FetchUserDataListener() {
|
handler.post(() -> FetchUserData.fetchUserData(retrofit, userName, new FetchUserData.FetchUserDataListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onFetchUserDataSuccess(UserData userData) {
|
public void onFetchUserDataSuccess(UserData userData, int inboxCount) {
|
||||||
InsertUserData.insertUserData(executor, handler, redditDataRoomDatabase, userData,
|
InsertUserData.insertUserData(executor, handler, redditDataRoomDatabase, userData,
|
||||||
() -> loadUserDataAsyncTaskListener.loadUserDataSuccess(userData.getIconUrl()));
|
() -> loadUserDataAsyncTaskListener.loadUserDataSuccess(userData.getIconUrl()));
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,7 @@ public class ParsePost {
|
|||||||
int score = data.getInt(JSONUtils.SCORE_KEY);
|
int score = data.getInt(JSONUtils.SCORE_KEY);
|
||||||
int voteType;
|
int voteType;
|
||||||
int nComments = data.getInt(JSONUtils.NUM_COMMENTS_KEY);
|
int nComments = data.getInt(JSONUtils.NUM_COMMENTS_KEY);
|
||||||
int upvoteRatio = (int) (data.getDouble(JSONUtils.UPVOTE_RATIO) * 100);
|
int upvoteRatio = (int) (data.getDouble(JSONUtils.UPVOTE_RATIO_KEY) * 100);
|
||||||
boolean hidden = data.getBoolean(JSONUtils.HIDDEN_KEY);
|
boolean hidden = data.getBoolean(JSONUtils.HIDDEN_KEY);
|
||||||
boolean spoiler = data.getBoolean(JSONUtils.SPOILER_KEY);
|
boolean spoiler = data.getBoolean(JSONUtils.SPOILER_KEY);
|
||||||
boolean nsfw = data.getBoolean(JSONUtils.NSFW_KEY);
|
boolean nsfw = data.getBoolean(JSONUtils.NSFW_KEY);
|
||||||
|
@ -4,24 +4,36 @@ import androidx.annotation.NonNull;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
import ml.docilealligator.infinityforreddit.apis.RedditAPI;
|
import ml.docilealligator.infinityforreddit.apis.RedditAPI;
|
||||||
|
import ml.docilealligator.infinityforreddit.utils.APIUtils;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
import retrofit2.Callback;
|
import retrofit2.Callback;
|
||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
public class FetchUserData {
|
public class FetchUserData {
|
||||||
public static void fetchUserData(Retrofit retrofit, String userName, FetchUserDataListener fetchUserDataListener) {
|
public static void fetchUserData(Retrofit retrofit, String userName, FetchUserDataListener fetchUserDataListener) {
|
||||||
|
fetchUserData(null, retrofit, null, userName, fetchUserDataListener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void fetchUserData(RedditDataRoomDatabase redditDataRoomDatabase, Retrofit retrofit,
|
||||||
|
String accessToken, String userName, FetchUserDataListener fetchUserDataListener) {
|
||||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||||
|
|
||||||
Call<String> userInfo = api.getUserData(userName);
|
Call<String> userInfo;
|
||||||
|
if (redditDataRoomDatabase == null) {
|
||||||
|
userInfo = api.getUserData(userName);
|
||||||
|
} else {
|
||||||
|
userInfo = api.getUserDataOauth(APIUtils.getOAuthHeader(accessToken), userName);
|
||||||
|
}
|
||||||
userInfo.enqueue(new Callback<String>() {
|
userInfo.enqueue(new Callback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) {
|
||||||
if (response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
ParseUserData.parseUserData(response.body(), new ParseUserData.ParseUserDataListener() {
|
ParseUserData.parseUserData(redditDataRoomDatabase, response.body(), new ParseUserData.ParseUserDataListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParseUserDataSuccess(UserData userData) {
|
public void onParseUserDataSuccess(UserData userData, int inboxCount) {
|
||||||
fetchUserDataListener.onFetchUserDataSuccess(userData);
|
fetchUserDataListener.onFetchUserDataSuccess(userData, inboxCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -74,7 +86,7 @@ public class FetchUserData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public interface FetchUserDataListener {
|
public interface FetchUserDataListener {
|
||||||
void onFetchUserDataSuccess(UserData userData);
|
void onFetchUserDataSuccess(UserData userData, int inboxCount);
|
||||||
|
|
||||||
void onFetchUserDataFailed();
|
void onFetchUserDataFailed();
|
||||||
}
|
}
|
||||||
|
@ -8,11 +8,13 @@ import org.json.JSONObject;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
import ml.docilealligator.infinityforreddit.utils.JSONUtils;
|
import ml.docilealligator.infinityforreddit.utils.JSONUtils;
|
||||||
|
|
||||||
public class ParseUserData {
|
public class ParseUserData {
|
||||||
static void parseUserData(String response, ParseUserDataListener parseUserDataListener) {
|
static void parseUserData(RedditDataRoomDatabase redditDataRoomDatabase, String response,
|
||||||
new ParseUserDataAsyncTask(response, parseUserDataListener).execute();
|
ParseUserDataListener parseUserDataListener) {
|
||||||
|
new ParseUserDataAsyncTask(redditDataRoomDatabase, response, parseUserDataListener).execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void parseUserListingData(String response, ParseUserListingDataListener parseUserListingDataListener) {
|
static void parseUserListingData(String response, ParseUserListingDataListener parseUserListingDataListener) {
|
||||||
@ -56,7 +58,7 @@ public class ParseUserData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface ParseUserDataListener {
|
interface ParseUserDataListener {
|
||||||
void onParseUserDataSuccess(UserData userData);
|
void onParseUserDataSuccess(UserData userData, int inboxCount);
|
||||||
|
|
||||||
void onParseUserDataFailed();
|
void onParseUserDataFailed();
|
||||||
}
|
}
|
||||||
@ -68,13 +70,16 @@ public class ParseUserData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static class ParseUserDataAsyncTask extends AsyncTask<Void, Void, Void> {
|
private static class ParseUserDataAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
|
private RedditDataRoomDatabase redditDataRoomDatabase;
|
||||||
private JSONObject jsonResponse;
|
private JSONObject jsonResponse;
|
||||||
private ParseUserDataListener parseUserDataListener;
|
private ParseUserDataListener parseUserDataListener;
|
||||||
private boolean parseFailed = false;
|
private boolean parseFailed = false;
|
||||||
|
|
||||||
private UserData userData;
|
private UserData userData;
|
||||||
|
private int inboxCount = -1;
|
||||||
|
|
||||||
ParseUserDataAsyncTask(String response, ParseUserDataListener parseUserDataListener) {
|
ParseUserDataAsyncTask(RedditDataRoomDatabase redditDataRoomDatabase, String response, ParseUserDataListener parseUserDataListener) {
|
||||||
|
this.redditDataRoomDatabase = redditDataRoomDatabase;
|
||||||
this.parseUserDataListener = parseUserDataListener;
|
this.parseUserDataListener = parseUserDataListener;
|
||||||
try {
|
try {
|
||||||
jsonResponse = new JSONObject(response);
|
jsonResponse = new JSONObject(response);
|
||||||
@ -89,6 +94,12 @@ public class ParseUserData {
|
|||||||
if (!parseFailed) {
|
if (!parseFailed) {
|
||||||
try {
|
try {
|
||||||
userData = parseUserDataBase(jsonResponse, true);
|
userData = parseUserDataBase(jsonResponse, true);
|
||||||
|
if (redditDataRoomDatabase != null) {
|
||||||
|
redditDataRoomDatabase.accountDao().updateAccountInfo(userData.getName(), userData.getIconUrl(), userData.getBanner(), userData.getTotalKarma());
|
||||||
|
}
|
||||||
|
if (jsonResponse.getJSONObject(JSONUtils.DATA_KEY).has(JSONUtils.INBOX_COUNT_KEY)) {
|
||||||
|
inboxCount = jsonResponse.getJSONObject(JSONUtils.DATA_KEY).getInt(JSONUtils.INBOX_COUNT_KEY);
|
||||||
|
}
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
parseFailed = true;
|
parseFailed = true;
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@ -100,7 +111,7 @@ public class ParseUserData {
|
|||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(Void aVoid) {
|
protected void onPostExecute(Void aVoid) {
|
||||||
if (!parseFailed) {
|
if (!parseFailed) {
|
||||||
parseUserDataListener.onParseUserDataSuccess(userData);
|
parseUserDataListener.onParseUserDataSuccess(userData, inboxCount);
|
||||||
} else {
|
} else {
|
||||||
parseUserDataListener.onParseUserDataFailed();
|
parseUserDataListener.onParseUserDataFailed();
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@ public class UserFollowing {
|
|||||||
if (action.equals("sub")) {
|
if (action.equals("sub")) {
|
||||||
FetchUserData.fetchUserData(retrofit, username, new FetchUserData.FetchUserDataListener() {
|
FetchUserData.fetchUserData(retrofit, username, new FetchUserData.FetchUserDataListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onFetchUserDataSuccess(UserData userData) {
|
public void onFetchUserDataSuccess(UserData userData, int inboxCount) {
|
||||||
new UpdateSubscriptionAsyncTask(subscribedUserDao, userData, accountName, true).execute();
|
new UpdateSubscriptionAsyncTask(subscribedUserDao, userData, accountName, true).execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -132,5 +132,6 @@ public class JSONUtils {
|
|||||||
public static final String CONTENT_URLS_KEY = "content_urls";;
|
public static final String CONTENT_URLS_KEY = "content_urls";;
|
||||||
public static final String WEBM_KEY = "webm";
|
public static final String WEBM_KEY = "webm";
|
||||||
public static final String WEBM_URL_KEY = "webmUrl";
|
public static final String WEBM_URL_KEY = "webmUrl";
|
||||||
public static final String UPVOTE_RATIO = "upvote_ratio";
|
public static final String UPVOTE_RATIO_KEY = "upvote_ratio";
|
||||||
|
public static final String INBOX_COUNT_KEY = "inbox_count";
|
||||||
}
|
}
|
||||||
|
@ -123,6 +123,7 @@
|
|||||||
<string name="subscriptions">Subscriptions</string>
|
<string name="subscriptions">Subscriptions</string>
|
||||||
<string name="multi_reddit">Multireddit</string>
|
<string name="multi_reddit">Multireddit</string>
|
||||||
<string name="inbox">Inbox</string>
|
<string name="inbox">Inbox</string>
|
||||||
|
<string name="inbox_with_count">Inbox (%1$d)</string>
|
||||||
<string name="upvoted">Upvoted</string>
|
<string name="upvoted">Upvoted</string>
|
||||||
<string name="downvoted">Downvoted</string>
|
<string name="downvoted">Downvoted</string>
|
||||||
<string name="hidden">Hidden</string>
|
<string name="hidden">Hidden</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user