mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2025-02-03 05:14:45 +01:00
Clean up code.
This commit is contained in:
parent
456429725b
commit
76204ac044
@ -35,7 +35,7 @@ class AccessTokenAuthenticator implements Authenticator {
|
|||||||
String accessToken = response.request().header(RedditUtils.AUTHORIZATION_KEY).substring(RedditUtils.AUTHORIZATION_BASE.length());
|
String accessToken = response.request().header(RedditUtils.AUTHORIZATION_KEY).substring(RedditUtils.AUTHORIZATION_BASE.length());
|
||||||
synchronized (this) {
|
synchronized (this) {
|
||||||
Account account = mRedditDataRoomDatabase.accountDao().getCurrentAccount();
|
Account account = mRedditDataRoomDatabase.accountDao().getCurrentAccount();
|
||||||
if(account == null) {
|
if (account == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
String accessTokenFromDatabase = account.getAccessToken();
|
String accessTokenFromDatabase = account.getAccessToken();
|
||||||
@ -66,7 +66,7 @@ class AccessTokenAuthenticator implements Authenticator {
|
|||||||
Call<String> accessTokenCall = api.getAccessToken(RedditUtils.getHttpBasicAuthHeader(), params);
|
Call<String> accessTokenCall = api.getAccessToken(RedditUtils.getHttpBasicAuthHeader(), params);
|
||||||
try {
|
try {
|
||||||
retrofit2.Response response = accessTokenCall.execute();
|
retrofit2.Response response = accessTokenCall.execute();
|
||||||
if(response.isSuccessful() && response.body() != null) {
|
if (response.isSuccessful() && response.body() != null) {
|
||||||
JSONObject jsonObject = new JSONObject((String) response.body());
|
JSONObject jsonObject = new JSONObject((String) response.body());
|
||||||
String newAccessToken = jsonObject.getString(RedditUtils.ACCESS_TOKEN_KEY);
|
String newAccessToken = jsonObject.getString(RedditUtils.ACCESS_TOKEN_KEY);
|
||||||
mRedditDataRoomDatabase.accountDao().changeAccessToken(account.getUsername(), newAccessToken);
|
mRedditDataRoomDatabase.accountDao().changeAccessToken(account.getUsername(), newAccessToken);
|
||||||
|
@ -29,20 +29,20 @@ import javax.inject.Inject;
|
|||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import ml.docilealligator.infinityforreddit.AppBarStateChangeListener;
|
import ml.docilealligator.infinityforreddit.AppBarStateChangeListener;
|
||||||
import ml.docilealligator.infinityforreddit.Event.ChangeNSFWEvent;
|
|
||||||
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
|
||||||
import ml.docilealligator.infinityforreddit.FontStyle;
|
|
||||||
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
|
||||||
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
|
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
|
||||||
|
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
||||||
|
import ml.docilealligator.infinityforreddit.Event.ChangeNSFWEvent;
|
||||||
|
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
||||||
|
import ml.docilealligator.infinityforreddit.FontStyle;
|
||||||
|
import ml.docilealligator.infinityforreddit.Fragment.PostFragment;
|
||||||
|
import ml.docilealligator.infinityforreddit.Fragment.UserThingSortTypeBottomSheetFragment;
|
||||||
|
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.PostDataSource;
|
import ml.docilealligator.infinityforreddit.PostDataSource;
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.PostFragment;
|
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||||
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
|
||||||
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.UserThingSortTypeBottomSheetFragment;
|
|
||||||
|
|
||||||
import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY;
|
import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY;
|
||||||
import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM;
|
import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM;
|
||||||
@ -59,26 +59,25 @@ public class AccountPostsActivity extends AppCompatActivity implements UserThing
|
|||||||
private static final String ACCOUNT_NAME_STATE = "ANS";
|
private static final String ACCOUNT_NAME_STATE = "ANS";
|
||||||
private static final String FRAGMENT_OUT_STATE = "FOS";
|
private static final String FRAGMENT_OUT_STATE = "FOS";
|
||||||
|
|
||||||
@BindView(R.id.collapsing_toolbar_layout_account_posts_activity) CollapsingToolbarLayout collapsingToolbarLayout;
|
@BindView(R.id.collapsing_toolbar_layout_account_posts_activity)
|
||||||
@BindView(R.id.appbar_layout_account_posts_activity) AppBarLayout appBarLayout;
|
CollapsingToolbarLayout collapsingToolbarLayout;
|
||||||
@BindView(R.id.toolbar_account_posts_activity) Toolbar toolbar;
|
@BindView(R.id.appbar_layout_account_posts_activity)
|
||||||
|
AppBarLayout appBarLayout;
|
||||||
|
@BindView(R.id.toolbar_account_posts_activity)
|
||||||
|
Toolbar toolbar;
|
||||||
|
@Inject
|
||||||
|
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
|
@Inject
|
||||||
|
SharedPreferences mSharedPreferences;
|
||||||
private boolean isInLazyMode = false;
|
private boolean isInLazyMode = false;
|
||||||
private boolean mNullAccessToken = false;
|
private boolean mNullAccessToken = false;
|
||||||
private String mAccessToken;
|
private String mAccessToken;
|
||||||
private String mAccountName;
|
private String mAccountName;
|
||||||
private String mUserWhere;
|
private String mUserWhere;
|
||||||
|
|
||||||
private Fragment mFragment;
|
private Fragment mFragment;
|
||||||
private Menu mMenu;
|
private Menu mMenu;
|
||||||
private AppBarLayout.LayoutParams params;
|
private AppBarLayout.LayoutParams params;
|
||||||
|
|
||||||
@Inject
|
|
||||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
SharedPreferences mSharedPreferences;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -109,24 +108,24 @@ public class AccountPostsActivity extends AppCompatActivity implements UserThing
|
|||||||
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
||||||
|
|
||||||
boolean lightNavBar = false;
|
boolean lightNavBar = false;
|
||||||
if((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
if ((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
lightNavBar = true;
|
lightNavBar = true;
|
||||||
}
|
}
|
||||||
boolean finalLightNavBar = lightNavBar;
|
boolean finalLightNavBar = lightNavBar;
|
||||||
|
|
||||||
View decorView = window.getDecorView();
|
View decorView = window.getDecorView();
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
||||||
if (state == State.COLLAPSED) {
|
if (state == State.COLLAPSED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
} else if (state == State.EXPANDED) {
|
} else if (state == State.EXPANDED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -151,7 +150,7 @@ public class AccountPostsActivity extends AppCompatActivity implements UserThing
|
|||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(systemDefault) {
|
if (systemDefault) {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
||||||
@ -160,13 +159,13 @@ public class AccountPostsActivity extends AppCompatActivity implements UserThing
|
|||||||
}
|
}
|
||||||
|
|
||||||
mUserWhere = getIntent().getExtras().getString(EXTRA_USER_WHERE);
|
mUserWhere = getIntent().getExtras().getString(EXTRA_USER_WHERE);
|
||||||
if(mUserWhere.equals(PostDataSource.USER_WHERE_UPVOTED)) {
|
if (mUserWhere.equals(PostDataSource.USER_WHERE_UPVOTED)) {
|
||||||
toolbar.setTitle(R.string.upvoted);
|
toolbar.setTitle(R.string.upvoted);
|
||||||
} else if(mUserWhere.equals(PostDataSource.USER_WHERE_DOWNVOTED)) {
|
} else if (mUserWhere.equals(PostDataSource.USER_WHERE_DOWNVOTED)) {
|
||||||
toolbar.setTitle(R.string.downvoted);
|
toolbar.setTitle(R.string.downvoted);
|
||||||
} else if(mUserWhere.equals(PostDataSource.USER_WHERE_HIDDEN)) {
|
} else if (mUserWhere.equals(PostDataSource.USER_WHERE_HIDDEN)) {
|
||||||
toolbar.setTitle(R.string.hidden);
|
toolbar.setTitle(R.string.hidden);
|
||||||
} else if(mUserWhere.equals(PostDataSource.USER_WHERE_GILDED)){
|
} else if (mUserWhere.equals(PostDataSource.USER_WHERE_GILDED)) {
|
||||||
toolbar.setTitle(R.string.gilded);
|
toolbar.setTitle(R.string.gilded);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -175,12 +174,12 @@ public class AccountPostsActivity extends AppCompatActivity implements UserThing
|
|||||||
|
|
||||||
params = (AppBarLayout.LayoutParams) collapsingToolbarLayout.getLayoutParams();
|
params = (AppBarLayout.LayoutParams) collapsingToolbarLayout.getLayoutParams();
|
||||||
|
|
||||||
if(savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
|
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
|
||||||
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
|
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
|
||||||
mAccountName = savedInstanceState.getString(ACCOUNT_NAME_STATE);
|
mAccountName = savedInstanceState.getString(ACCOUNT_NAME_STATE);
|
||||||
isInLazyMode = savedInstanceState.getBoolean(IS_IN_LAZY_MODE_STATE);
|
isInLazyMode = savedInstanceState.getBoolean(IS_IN_LAZY_MODE_STATE);
|
||||||
if(!mNullAccessToken && mAccessToken == null) {
|
if (!mNullAccessToken && mAccessToken == null) {
|
||||||
getCurrentAccountAndInitializeFragment();
|
getCurrentAccountAndInitializeFragment();
|
||||||
} else {
|
} else {
|
||||||
mFragment = getSupportFragmentManager().getFragment(savedInstanceState, FRAGMENT_OUT_STATE);
|
mFragment = getSupportFragmentManager().getFragment(savedInstanceState, FRAGMENT_OUT_STATE);
|
||||||
@ -193,7 +192,7 @@ public class AccountPostsActivity extends AppCompatActivity implements UserThing
|
|||||||
|
|
||||||
private void getCurrentAccountAndInitializeFragment() {
|
private void getCurrentAccountAndInitializeFragment() {
|
||||||
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
||||||
if(account == null) {
|
if (account == null) {
|
||||||
mNullAccessToken = true;
|
mNullAccessToken = true;
|
||||||
} else {
|
} else {
|
||||||
mAccessToken = account.getAccessToken();
|
mAccessToken = account.getAccessToken();
|
||||||
@ -221,7 +220,7 @@ public class AccountPostsActivity extends AppCompatActivity implements UserThing
|
|||||||
getMenuInflater().inflate(R.menu.account_posts_activity, menu);
|
getMenuInflater().inflate(R.menu.account_posts_activity, menu);
|
||||||
mMenu = menu;
|
mMenu = menu;
|
||||||
MenuItem lazyModeItem = mMenu.findItem(R.id.action_lazy_mode_account_posts_activity);
|
MenuItem lazyModeItem = mMenu.findItem(R.id.action_lazy_mode_account_posts_activity);
|
||||||
if(isInLazyMode) {
|
if (isInLazyMode) {
|
||||||
lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
|
lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
|
||||||
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_NO_SCROLL);
|
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_NO_SCROLL);
|
||||||
collapsingToolbarLayout.setLayoutParams(params);
|
collapsingToolbarLayout.setLayoutParams(params);
|
||||||
@ -237,23 +236,23 @@ public class AccountPostsActivity extends AppCompatActivity implements UserThing
|
|||||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||||
switch (item.getItemId()) {
|
switch (item.getItemId()) {
|
||||||
case R.id.action_refresh_account_posts_activity:
|
case R.id.action_refresh_account_posts_activity:
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_lazy_mode_account_posts_activity).setTitle(R.string.action_start_lazy_mode);
|
mMenu.findItem(R.id.action_lazy_mode_account_posts_activity).setTitle(R.string.action_start_lazy_mode);
|
||||||
}
|
}
|
||||||
if(mFragment != null) {
|
if (mFragment != null) {
|
||||||
((PostFragment) mFragment).refresh();
|
((PostFragment) mFragment).refresh();
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_lazy_mode_account_posts_activity:
|
case R.id.action_lazy_mode_account_posts_activity:
|
||||||
MenuItem lazyModeItem = mMenu.findItem(R.id.action_lazy_mode_account_posts_activity);
|
MenuItem lazyModeItem = mMenu.findItem(R.id.action_lazy_mode_account_posts_activity);
|
||||||
if(isInLazyMode) {
|
if (isInLazyMode) {
|
||||||
((FragmentCommunicator) mFragment).stopLazyMode();
|
((FragmentCommunicator) mFragment).stopLazyMode();
|
||||||
isInLazyMode = false;
|
isInLazyMode = false;
|
||||||
lazyModeItem.setTitle(R.string.action_start_lazy_mode);
|
lazyModeItem.setTitle(R.string.action_start_lazy_mode);
|
||||||
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);
|
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);
|
||||||
collapsingToolbarLayout.setLayoutParams(params);
|
collapsingToolbarLayout.setLayoutParams(params);
|
||||||
} else {
|
} else {
|
||||||
if(((FragmentCommunicator) mFragment).startLazyMode()) {
|
if (((FragmentCommunicator) mFragment).startLazyMode()) {
|
||||||
isInLazyMode = true;
|
isInLazyMode = true;
|
||||||
lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
|
lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
|
||||||
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_NO_SCROLL);
|
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_NO_SCROLL);
|
||||||
@ -288,7 +287,7 @@ public class AccountPostsActivity extends AppCompatActivity implements UserThing
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void userThingSortTypeSelected(String sortType) {
|
public void userThingSortTypeSelected(String sortType) {
|
||||||
if(mFragment != null) {
|
if (mFragment != null) {
|
||||||
((PostFragment) mFragment).changeSortType(sortType);
|
((PostFragment) mFragment).changeSortType(sortType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,19 +34,19 @@ import javax.inject.Named;
|
|||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import ml.docilealligator.infinityforreddit.AppBarStateChangeListener;
|
import ml.docilealligator.infinityforreddit.AppBarStateChangeListener;
|
||||||
import ml.docilealligator.infinityforreddit.Event.ChangeNSFWEvent;
|
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.CommentsListingFragment;
|
|
||||||
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
|
||||||
import ml.docilealligator.infinityforreddit.FontStyle;
|
|
||||||
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
|
||||||
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
|
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
|
||||||
|
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
||||||
|
import ml.docilealligator.infinityforreddit.Event.ChangeNSFWEvent;
|
||||||
|
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
||||||
|
import ml.docilealligator.infinityforreddit.FontStyle;
|
||||||
|
import ml.docilealligator.infinityforreddit.Fragment.CommentsListingFragment;
|
||||||
|
import ml.docilealligator.infinityforreddit.Fragment.PostFragment;
|
||||||
|
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.PostDataSource;
|
import ml.docilealligator.infinityforreddit.PostDataSource;
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.PostFragment;
|
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||||
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
|
||||||
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
@ -62,31 +62,31 @@ public class AccountSavedThingActivity extends AppCompatActivity {
|
|||||||
private static final String ACCOUNT_NAME_STATE = "ANS";
|
private static final String ACCOUNT_NAME_STATE = "ANS";
|
||||||
private static final String IS_IN_LAZY_MODE_STATE = "IILMS";
|
private static final String IS_IN_LAZY_MODE_STATE = "IILMS";
|
||||||
|
|
||||||
@BindView(R.id.collapsing_toolbar_layout_account_saved_thing_activity) CollapsingToolbarLayout collapsingToolbarLayout;
|
@BindView(R.id.collapsing_toolbar_layout_account_saved_thing_activity)
|
||||||
@BindView(R.id.appbar_layout_account_saved_thing_activity) AppBarLayout appBarLayout;
|
CollapsingToolbarLayout collapsingToolbarLayout;
|
||||||
@BindView(R.id.toolbar_account_saved_thing_activity) Toolbar toolbar;
|
@BindView(R.id.appbar_layout_account_saved_thing_activity)
|
||||||
@BindView(R.id.tab_layout_tab_layout_account_saved_thing_activity_activity) TabLayout tabLayout;
|
AppBarLayout appBarLayout;
|
||||||
@BindView(R.id.view_pager_account_saved_thing_activity) ViewPager viewPager;
|
@BindView(R.id.toolbar_account_saved_thing_activity)
|
||||||
|
Toolbar toolbar;
|
||||||
|
@BindView(R.id.tab_layout_tab_layout_account_saved_thing_activity_activity)
|
||||||
|
TabLayout tabLayout;
|
||||||
|
@BindView(R.id.view_pager_account_saved_thing_activity)
|
||||||
|
ViewPager viewPager;
|
||||||
|
@Inject
|
||||||
|
@Named("oauth")
|
||||||
|
Retrofit mOauthRetrofit;
|
||||||
|
@Inject
|
||||||
|
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
|
@Inject
|
||||||
|
SharedPreferences mSharedPreferences;
|
||||||
private SectionsPagerAdapter sectionsPagerAdapter;
|
private SectionsPagerAdapter sectionsPagerAdapter;
|
||||||
private Menu mMenu;
|
private Menu mMenu;
|
||||||
private AppBarLayout.LayoutParams params;
|
private AppBarLayout.LayoutParams params;
|
||||||
|
|
||||||
private boolean mNullAccessToken = false;
|
private boolean mNullAccessToken = false;
|
||||||
private String mAccessToken;
|
private String mAccessToken;
|
||||||
private String mAccountName;
|
private String mAccountName;
|
||||||
private boolean isInLazyMode = false;
|
private boolean isInLazyMode = false;
|
||||||
|
|
||||||
@Inject
|
|
||||||
@Named("oauth")
|
|
||||||
Retrofit mOauthRetrofit;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
SharedPreferences mSharedPreferences;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -117,24 +117,24 @@ public class AccountSavedThingActivity extends AppCompatActivity {
|
|||||||
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
||||||
|
|
||||||
boolean lightNavBar = false;
|
boolean lightNavBar = false;
|
||||||
if((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
if ((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
lightNavBar = true;
|
lightNavBar = true;
|
||||||
}
|
}
|
||||||
boolean finalLightNavBar = lightNavBar;
|
boolean finalLightNavBar = lightNavBar;
|
||||||
|
|
||||||
View decorView = window.getDecorView();
|
View decorView = window.getDecorView();
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
||||||
if (state == State.COLLAPSED) {
|
if (state == State.COLLAPSED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
} else if (state == State.EXPANDED) {
|
} else if (state == State.EXPANDED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -159,7 +159,7 @@ public class AccountSavedThingActivity extends AppCompatActivity {
|
|||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(systemDefault) {
|
if (systemDefault) {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
||||||
@ -172,12 +172,12 @@ public class AccountSavedThingActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
params = (AppBarLayout.LayoutParams) collapsingToolbarLayout.getLayoutParams();
|
params = (AppBarLayout.LayoutParams) collapsingToolbarLayout.getLayoutParams();
|
||||||
|
|
||||||
if(savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
|
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
|
||||||
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
|
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
|
||||||
mAccountName = savedInstanceState.getString(ACCOUNT_NAME_STATE);
|
mAccountName = savedInstanceState.getString(ACCOUNT_NAME_STATE);
|
||||||
isInLazyMode = savedInstanceState.getBoolean(IS_IN_LAZY_MODE_STATE);
|
isInLazyMode = savedInstanceState.getBoolean(IS_IN_LAZY_MODE_STATE);
|
||||||
if(!mNullAccessToken && mAccessToken == null) {
|
if (!mNullAccessToken && mAccessToken == null) {
|
||||||
getCurrentAccountAndInitializeViewPager();
|
getCurrentAccountAndInitializeViewPager();
|
||||||
} else {
|
} else {
|
||||||
initializeViewPager();
|
initializeViewPager();
|
||||||
@ -189,7 +189,7 @@ public class AccountSavedThingActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
private void getCurrentAccountAndInitializeViewPager() {
|
private void getCurrentAccountAndInitializeViewPager() {
|
||||||
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
||||||
if(account == null) {
|
if (account == null) {
|
||||||
mNullAccessToken = true;
|
mNullAccessToken = true;
|
||||||
} else {
|
} else {
|
||||||
mAccessToken = account.getAccessToken();
|
mAccessToken = account.getAccessToken();
|
||||||
@ -213,8 +213,8 @@ public class AccountSavedThingActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPageSelected(int position) {
|
public void onPageSelected(int position) {
|
||||||
if(isInLazyMode) {
|
if (isInLazyMode) {
|
||||||
if(viewPager.getCurrentItem() == 0) {
|
if (viewPager.getCurrentItem() == 0) {
|
||||||
sectionsPagerAdapter.resumeLazyMode();
|
sectionsPagerAdapter.resumeLazyMode();
|
||||||
} else {
|
} else {
|
||||||
sectionsPagerAdapter.pauseLazyMode();
|
sectionsPagerAdapter.pauseLazyMode();
|
||||||
@ -254,14 +254,14 @@ public class AccountSavedThingActivity extends AppCompatActivity {
|
|||||||
finish();
|
finish();
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_refresh_account_saved_thing_activity:
|
case R.id.action_refresh_account_saved_thing_activity:
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_lazy_mode_account_saved_thing_activity).setTitle(R.string.action_start_lazy_mode);
|
mMenu.findItem(R.id.action_lazy_mode_account_saved_thing_activity).setTitle(R.string.action_start_lazy_mode);
|
||||||
}
|
}
|
||||||
sectionsPagerAdapter.refresh();
|
sectionsPagerAdapter.refresh();
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_lazy_mode_account_saved_thing_activity:
|
case R.id.action_lazy_mode_account_saved_thing_activity:
|
||||||
MenuItem lazyModeItem = mMenu.findItem(R.id.action_lazy_mode_account_saved_thing_activity);
|
MenuItem lazyModeItem = mMenu.findItem(R.id.action_lazy_mode_account_saved_thing_activity);
|
||||||
if(isInLazyMode) {
|
if (isInLazyMode) {
|
||||||
isInLazyMode = false;
|
isInLazyMode = false;
|
||||||
sectionsPagerAdapter.stopLazyMode();
|
sectionsPagerAdapter.stopLazyMode();
|
||||||
lazyModeItem.setTitle(R.string.action_start_lazy_mode);
|
lazyModeItem.setTitle(R.string.action_start_lazy_mode);
|
||||||
@ -269,7 +269,7 @@ public class AccountSavedThingActivity extends AppCompatActivity {
|
|||||||
collapsingToolbarLayout.setLayoutParams(params);
|
collapsingToolbarLayout.setLayoutParams(params);
|
||||||
} else {
|
} else {
|
||||||
isInLazyMode = true;
|
isInLazyMode = true;
|
||||||
if(sectionsPagerAdapter.startLazyMode()) {
|
if (sectionsPagerAdapter.startLazyMode()) {
|
||||||
lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
|
lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
|
||||||
appBarLayout.setExpanded(false);
|
appBarLayout.setExpanded(false);
|
||||||
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_NO_SCROLL);
|
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_NO_SCROLL);
|
||||||
@ -373,43 +373,43 @@ public class AccountSavedThingActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
public void refresh() {
|
public void refresh() {
|
||||||
if (viewPager.getCurrentItem() == 0) {
|
if (viewPager.getCurrentItem() == 0) {
|
||||||
if(postFragment != null) {
|
if (postFragment != null) {
|
||||||
postFragment.refresh();
|
postFragment.refresh();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(commentsListingFragment != null) {
|
if (commentsListingFragment != null) {
|
||||||
commentsListingFragment.refresh();
|
commentsListingFragment.refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean startLazyMode() {
|
boolean startLazyMode() {
|
||||||
if(postFragment != null) {
|
if (postFragment != null) {
|
||||||
return ((FragmentCommunicator) postFragment).startLazyMode();
|
return ((FragmentCommunicator) postFragment).startLazyMode();
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void stopLazyMode() {
|
void stopLazyMode() {
|
||||||
if(postFragment != null) {
|
if (postFragment != null) {
|
||||||
((FragmentCommunicator) postFragment).stopLazyMode();
|
((FragmentCommunicator) postFragment).stopLazyMode();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void resumeLazyMode() {
|
void resumeLazyMode() {
|
||||||
if(postFragment != null) {
|
if (postFragment != null) {
|
||||||
((FragmentCommunicator) postFragment).resumeLazyMode(false);
|
((FragmentCommunicator) postFragment).resumeLazyMode(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void pauseLazyMode() {
|
void pauseLazyMode() {
|
||||||
if(postFragment != null) {
|
if (postFragment != null) {
|
||||||
((FragmentCommunicator) postFragment).pauseLazyMode(false);
|
((FragmentCommunicator) postFragment).pauseLazyMode(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void changeNSFW(boolean nsfw) {
|
public void changeNSFW(boolean nsfw) {
|
||||||
if(postFragment != null) {
|
if (postFragment != null) {
|
||||||
postFragment.changeNSFW(nsfw);
|
postFragment.changeNSFW(nsfw);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -39,16 +39,16 @@ import io.noties.markwon.AbstractMarkwonPlugin;
|
|||||||
import io.noties.markwon.Markwon;
|
import io.noties.markwon.Markwon;
|
||||||
import io.noties.markwon.MarkwonConfiguration;
|
import io.noties.markwon.MarkwonConfiguration;
|
||||||
import io.noties.markwon.linkify.LinkifyPlugin;
|
import io.noties.markwon.linkify.LinkifyPlugin;
|
||||||
|
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
|
||||||
import ml.docilealligator.infinityforreddit.CommentData;
|
import ml.docilealligator.infinityforreddit.CommentData;
|
||||||
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
||||||
|
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
||||||
import ml.docilealligator.infinityforreddit.FontStyle;
|
import ml.docilealligator.infinityforreddit.FontStyle;
|
||||||
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
|
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
import ml.docilealligator.infinityforreddit.SendComment;
|
import ml.docilealligator.infinityforreddit.SendComment;
|
||||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||||
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
|
||||||
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
@ -70,11 +70,21 @@ public class CommentActivity extends AppCompatActivity {
|
|||||||
private static final String NULL_ACCESS_TOKEN_STATE = "NATS";
|
private static final String NULL_ACCESS_TOKEN_STATE = "NATS";
|
||||||
private static final String ACCESS_TOKEN_STATE = "ATS";
|
private static final String ACCESS_TOKEN_STATE = "ATS";
|
||||||
|
|
||||||
@BindView(R.id.coordinator_layout_comment_activity) CoordinatorLayout coordinatorLayout;
|
@BindView(R.id.coordinator_layout_comment_activity)
|
||||||
@BindView(R.id.toolbar_comment_activity) Toolbar toolbar;
|
CoordinatorLayout coordinatorLayout;
|
||||||
@BindView(R.id.comment_parent_markwon_view_comment_activity) TextView commentParentMarkwonView;
|
@BindView(R.id.toolbar_comment_activity)
|
||||||
@BindView(R.id.comment_edit_text_comment_activity) EditText commentEditText;
|
Toolbar toolbar;
|
||||||
|
@BindView(R.id.comment_parent_markwon_view_comment_activity)
|
||||||
|
TextView commentParentMarkwonView;
|
||||||
|
@BindView(R.id.comment_edit_text_comment_activity)
|
||||||
|
EditText commentEditText;
|
||||||
|
@Inject
|
||||||
|
@Named("oauth")
|
||||||
|
Retrofit mOauthRetrofit;
|
||||||
|
@Inject
|
||||||
|
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
|
@Inject
|
||||||
|
SharedPreferences mSharedPreferences;
|
||||||
private boolean mNullAccessToken = false;
|
private boolean mNullAccessToken = false;
|
||||||
private String mAccessToken;
|
private String mAccessToken;
|
||||||
private String parentFullname;
|
private String parentFullname;
|
||||||
@ -82,16 +92,6 @@ public class CommentActivity extends AppCompatActivity {
|
|||||||
private int parentPosition;
|
private int parentPosition;
|
||||||
private boolean isReplying;
|
private boolean isReplying;
|
||||||
|
|
||||||
@Inject
|
|
||||||
@Named("oauth")
|
|
||||||
Retrofit mOauthRetrofit;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
SharedPreferences mSharedPreferences;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -113,9 +113,9 @@ public class CommentActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
EventBus.getDefault().register(this);
|
EventBus.getDefault().register(this);
|
||||||
|
|
||||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
Window window = getWindow();
|
Window window = getWindow();
|
||||||
if((getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
if ((getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
window.setNavigationBarColor(ContextCompat.getColor(this, R.color.navBarColor));
|
window.setNavigationBarColor(ContextCompat.getColor(this, R.color.navBarColor));
|
||||||
@ -131,7 +131,7 @@ public class CommentActivity extends AppCompatActivity {
|
|||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(systemDefault) {
|
if (systemDefault) {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
||||||
@ -139,12 +139,12 @@ public class CommentActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(savedInstanceState == null) {
|
if (savedInstanceState == null) {
|
||||||
getCurrentAccount();
|
getCurrentAccount();
|
||||||
} else {
|
} else {
|
||||||
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
|
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
|
||||||
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
|
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
|
||||||
if(!mNullAccessToken && mAccessToken == null) {
|
if (!mNullAccessToken && mAccessToken == null) {
|
||||||
getCurrentAccount();
|
getCurrentAccount();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -157,7 +157,7 @@ public class CommentActivity extends AppCompatActivity {
|
|||||||
builder.linkResolver((view, link) -> {
|
builder.linkResolver((view, link) -> {
|
||||||
Intent intent = new Intent(CommentActivity.this, LinkResolverActivity.class);
|
Intent intent = new Intent(CommentActivity.this, LinkResolverActivity.class);
|
||||||
Uri uri = Uri.parse(link);
|
Uri uri = Uri.parse(link);
|
||||||
if(uri.getScheme() == null && uri.getHost() == null) {
|
if (uri.getScheme() == null && uri.getHost() == null) {
|
||||||
intent.setData(LinkResolverActivity.getRedditUriByPath(link));
|
intent.setData(LinkResolverActivity.getRedditUriByPath(link));
|
||||||
} else {
|
} else {
|
||||||
intent.setData(uri);
|
intent.setData(uri);
|
||||||
@ -173,7 +173,7 @@ public class CommentActivity extends AppCompatActivity {
|
|||||||
parentDepth = intent.getExtras().getInt(EXTRA_PARENT_DEPTH_KEY);
|
parentDepth = intent.getExtras().getInt(EXTRA_PARENT_DEPTH_KEY);
|
||||||
parentPosition = intent.getExtras().getInt(EXTRA_PARENT_POSITION_KEY);
|
parentPosition = intent.getExtras().getInt(EXTRA_PARENT_POSITION_KEY);
|
||||||
isReplying = intent.getExtras().getBoolean(EXTRA_IS_REPLYING_KEY);
|
isReplying = intent.getExtras().getBoolean(EXTRA_IS_REPLYING_KEY);
|
||||||
if(isReplying) {
|
if (isReplying) {
|
||||||
toolbar.setTitle(getString(R.string.comment_activity_label_is_replying));
|
toolbar.setTitle(getString(R.string.comment_activity_label_is_replying));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -181,14 +181,14 @@ public class CommentActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
commentEditText.requestFocus();
|
commentEditText.requestFocus();
|
||||||
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
if(imm != null) {
|
if (imm != null) {
|
||||||
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
|
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getCurrentAccount() {
|
private void getCurrentAccount() {
|
||||||
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
||||||
if(account == null) {
|
if (account == null) {
|
||||||
mNullAccessToken = true;
|
mNullAccessToken = true;
|
||||||
} else {
|
} else {
|
||||||
mAccessToken = account.getAccessToken();
|
mAccessToken = account.getAccessToken();
|
||||||
@ -199,8 +199,8 @@ public class CommentActivity extends AppCompatActivity {
|
|||||||
@Override
|
@Override
|
||||||
protected void onPause() {
|
protected void onPause() {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
|
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
if(imm != null) {
|
if (imm != null) {
|
||||||
imm.hideSoftInputFromWindow(commentEditText.getWindowToken(), 0);
|
imm.hideSoftInputFromWindow(commentEditText.getWindowToken(), 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -218,7 +218,7 @@ public class CommentActivity extends AppCompatActivity {
|
|||||||
finish();
|
finish();
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_send_comment_activity:
|
case R.id.action_send_comment_activity:
|
||||||
if(commentEditText.getText() == null || commentEditText.getText().toString().equals("")) {
|
if (commentEditText.getText() == null || commentEditText.getText().toString().equals("")) {
|
||||||
Snackbar.make(coordinatorLayout, R.string.comment_content_required, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, R.string.comment_content_required, Snackbar.LENGTH_SHORT).show();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -238,7 +238,7 @@ public class CommentActivity extends AppCompatActivity {
|
|||||||
Intent returnIntent = new Intent();
|
Intent returnIntent = new Intent();
|
||||||
returnIntent.putExtra(EXTRA_COMMENT_DATA_KEY, commentData);
|
returnIntent.putExtra(EXTRA_COMMENT_DATA_KEY, commentData);
|
||||||
returnIntent.putExtra(EXTRA_PARENT_FULLNAME_KEY, parentFullname);
|
returnIntent.putExtra(EXTRA_PARENT_FULLNAME_KEY, parentFullname);
|
||||||
if(isReplying) {
|
if (isReplying) {
|
||||||
returnIntent.putExtra(EXTRA_PARENT_POSITION_KEY, parentPosition);
|
returnIntent.putExtra(EXTRA_PARENT_POSITION_KEY, parentPosition);
|
||||||
}
|
}
|
||||||
setResult(RESULT_OK, returnIntent);
|
setResult(RESULT_OK, returnIntent);
|
||||||
@ -251,7 +251,7 @@ public class CommentActivity extends AppCompatActivity {
|
|||||||
item.setEnabled(true);
|
item.setEnabled(true);
|
||||||
item.getIcon().setAlpha(255);
|
item.getIcon().setAlpha(255);
|
||||||
|
|
||||||
if(errorMessage == null) {
|
if (errorMessage == null) {
|
||||||
Snackbar.make(coordinatorLayout, R.string.send_comment_failed, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, R.string.send_comment_failed, Snackbar.LENGTH_SHORT).show();
|
||||||
} else {
|
} else {
|
||||||
Snackbar.make(coordinatorLayout, errorMessage, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, errorMessage, Snackbar.LENGTH_SHORT).show();
|
||||||
|
@ -35,13 +35,13 @@ import javax.inject.Named;
|
|||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
||||||
|
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
||||||
import ml.docilealligator.infinityforreddit.FontStyle;
|
import ml.docilealligator.infinityforreddit.FontStyle;
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.RedditAPI;
|
import ml.docilealligator.infinityforreddit.RedditAPI;
|
||||||
import ml.docilealligator.infinityforreddit.RedditUtils;
|
import ml.docilealligator.infinityforreddit.RedditUtils;
|
||||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||||
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
|
||||||
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
import retrofit2.Callback;
|
import retrofit2.Callback;
|
||||||
@ -63,20 +63,20 @@ public class EditCommentActivity extends AppCompatActivity {
|
|||||||
static final String EXTRA_EDITED_COMMENT_CONTENT = "EECC";
|
static final String EXTRA_EDITED_COMMENT_CONTENT = "EECC";
|
||||||
static final String EXTRA_EDITED_COMMENT_POSITION = "EECP";
|
static final String EXTRA_EDITED_COMMENT_POSITION = "EECP";
|
||||||
|
|
||||||
@BindView(R.id.coordinator_layout_edit_comment_activity) CoordinatorLayout coordinatorLayout;
|
@BindView(R.id.coordinator_layout_edit_comment_activity)
|
||||||
@BindView(R.id.toolbar_edit_comment_activity) Toolbar toolbar;
|
CoordinatorLayout coordinatorLayout;
|
||||||
@BindView(R.id.post_text_content_edit_text_edit_comment_activity) EditText contentEditText;
|
@BindView(R.id.toolbar_edit_comment_activity)
|
||||||
|
Toolbar toolbar;
|
||||||
private String mFullName;
|
@BindView(R.id.post_text_content_edit_text_edit_comment_activity)
|
||||||
private String mAccessToken;
|
EditText contentEditText;
|
||||||
private boolean isSubmitting = false;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@Named("oauth")
|
@Named("oauth")
|
||||||
Retrofit mOauthRetrofit;
|
Retrofit mOauthRetrofit;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
SharedPreferences mSharedPreferences;
|
SharedPreferences mSharedPreferences;
|
||||||
|
private String mFullName;
|
||||||
|
private String mAccessToken;
|
||||||
|
private boolean isSubmitting = false;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
@ -99,9 +99,9 @@ public class EditCommentActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
EventBus.getDefault().register(this);
|
EventBus.getDefault().register(this);
|
||||||
|
|
||||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
Window window = getWindow();
|
Window window = getWindow();
|
||||||
if((getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
if ((getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
window.setNavigationBarColor(ContextCompat.getColor(this, R.color.navBarColor));
|
window.setNavigationBarColor(ContextCompat.getColor(this, R.color.navBarColor));
|
||||||
@ -117,7 +117,7 @@ public class EditCommentActivity extends AppCompatActivity {
|
|||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(systemDefault) {
|
if (systemDefault) {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
||||||
@ -134,7 +134,7 @@ public class EditCommentActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
contentEditText.requestFocus();
|
contentEditText.requestFocus();
|
||||||
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
if(imm != null) {
|
if (imm != null) {
|
||||||
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
|
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -142,8 +142,8 @@ public class EditCommentActivity extends AppCompatActivity {
|
|||||||
@Override
|
@Override
|
||||||
protected void onPause() {
|
protected void onPause() {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
|
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
if(imm != null) {
|
if (imm != null) {
|
||||||
imm.hideSoftInputFromWindow(contentEditText.getWindowToken(), 0);
|
imm.hideSoftInputFromWindow(contentEditText.getWindowToken(), 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -156,8 +156,8 @@ public class EditCommentActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||||
if(item.getItemId() == R.id.action_send_edit_comment_activity) {
|
if (item.getItemId() == R.id.action_send_edit_comment_activity) {
|
||||||
if(!isSubmitting) {
|
if (!isSubmitting) {
|
||||||
isSubmitting = true;
|
isSubmitting = true;
|
||||||
|
|
||||||
Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_SHORT).show();
|
||||||
@ -174,7 +174,7 @@ public class EditCommentActivity extends AppCompatActivity {
|
|||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
isSubmitting = false;
|
isSubmitting = false;
|
||||||
if(response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
Toast.makeText(EditCommentActivity.this, R.string.edit_success, Toast.LENGTH_SHORT).show();
|
Toast.makeText(EditCommentActivity.this, R.string.edit_success, Toast.LENGTH_SHORT).show();
|
||||||
|
|
||||||
Intent returnIntent = new Intent();
|
Intent returnIntent = new Intent();
|
||||||
@ -197,7 +197,7 @@ public class EditCommentActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
} else if(item.getItemId() == android.R.id.home) {
|
} else if (item.getItemId() == android.R.id.home) {
|
||||||
finish();
|
finish();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -36,13 +36,13 @@ import javax.inject.Named;
|
|||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
||||||
|
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
||||||
import ml.docilealligator.infinityforreddit.FontStyle;
|
import ml.docilealligator.infinityforreddit.FontStyle;
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.RedditAPI;
|
import ml.docilealligator.infinityforreddit.RedditAPI;
|
||||||
import ml.docilealligator.infinityforreddit.RedditUtils;
|
import ml.docilealligator.infinityforreddit.RedditUtils;
|
||||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||||
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
|
||||||
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
import retrofit2.Callback;
|
import retrofit2.Callback;
|
||||||
@ -61,21 +61,22 @@ public class EditPostActivity extends AppCompatActivity {
|
|||||||
static final String EXTRA_FULLNAME = "EF";
|
static final String EXTRA_FULLNAME = "EF";
|
||||||
static final String EXTRA_ACCESS_TOKEN = "EAT";
|
static final String EXTRA_ACCESS_TOKEN = "EAT";
|
||||||
|
|
||||||
@BindView(R.id.coordinator_layout_edit_post_activity) CoordinatorLayout coordinatorLayout;
|
@BindView(R.id.coordinator_layout_edit_post_activity)
|
||||||
@BindView(R.id.toolbar_edit_post_activity) Toolbar toolbar;
|
CoordinatorLayout coordinatorLayout;
|
||||||
@BindView(R.id.post_title_text_view_edit_post_activity) TextView titleTextView;
|
@BindView(R.id.toolbar_edit_post_activity)
|
||||||
@BindView(R.id.post_text_content_edit_text_edit_post_activity) EditText contentEditText;
|
Toolbar toolbar;
|
||||||
|
@BindView(R.id.post_title_text_view_edit_post_activity)
|
||||||
private String mFullName;
|
TextView titleTextView;
|
||||||
private String mAccessToken;
|
@BindView(R.id.post_text_content_edit_text_edit_post_activity)
|
||||||
private boolean isSubmitting = false;
|
EditText contentEditText;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@Named("oauth")
|
@Named("oauth")
|
||||||
Retrofit mOauthRetrofit;
|
Retrofit mOauthRetrofit;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
SharedPreferences mSharedPreferences;
|
SharedPreferences mSharedPreferences;
|
||||||
|
private String mFullName;
|
||||||
|
private String mAccessToken;
|
||||||
|
private boolean isSubmitting = false;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
@ -98,9 +99,9 @@ public class EditPostActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
EventBus.getDefault().register(this);
|
EventBus.getDefault().register(this);
|
||||||
|
|
||||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
Window window = getWindow();
|
Window window = getWindow();
|
||||||
if((getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
if ((getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
window.setNavigationBarColor(ContextCompat.getColor(this, R.color.navBarColor));
|
window.setNavigationBarColor(ContextCompat.getColor(this, R.color.navBarColor));
|
||||||
@ -116,7 +117,7 @@ public class EditPostActivity extends AppCompatActivity {
|
|||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(systemDefault) {
|
if (systemDefault) {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
||||||
@ -134,7 +135,7 @@ public class EditPostActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
contentEditText.requestFocus();
|
contentEditText.requestFocus();
|
||||||
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
if(imm != null) {
|
if (imm != null) {
|
||||||
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
|
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -142,8 +143,8 @@ public class EditPostActivity extends AppCompatActivity {
|
|||||||
@Override
|
@Override
|
||||||
protected void onPause() {
|
protected void onPause() {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
|
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
if(imm != null) {
|
if (imm != null) {
|
||||||
imm.hideSoftInputFromWindow(contentEditText.getWindowToken(), 0);
|
imm.hideSoftInputFromWindow(contentEditText.getWindowToken(), 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -156,8 +157,8 @@ public class EditPostActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||||
if(item.getItemId() == R.id.action_send_edit_post_activity) {
|
if (item.getItemId() == R.id.action_send_edit_post_activity) {
|
||||||
if(!isSubmitting) {
|
if (!isSubmitting) {
|
||||||
isSubmitting = true;
|
isSubmitting = true;
|
||||||
|
|
||||||
Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_SHORT).show();
|
||||||
@ -187,7 +188,7 @@ public class EditPostActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
} else if(item.getItemId() == android.R.id.home) {
|
} else if (item.getItemId() == android.R.id.home) {
|
||||||
finish();
|
finish();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -29,22 +29,22 @@ import javax.inject.Inject;
|
|||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import ml.docilealligator.infinityforreddit.AppBarStateChangeListener;
|
import ml.docilealligator.infinityforreddit.AppBarStateChangeListener;
|
||||||
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
|
||||||
import ml.docilealligator.infinityforreddit.FontStyle;
|
|
||||||
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
|
||||||
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
|
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
|
||||||
|
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
||||||
|
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
||||||
|
import ml.docilealligator.infinityforreddit.FontStyle;
|
||||||
|
import ml.docilealligator.infinityforreddit.Fragment.PostFragment;
|
||||||
|
import ml.docilealligator.infinityforreddit.Fragment.SearchPostSortTypeBottomSheetFragment;
|
||||||
|
import ml.docilealligator.infinityforreddit.Fragment.SortTypeBottomSheetFragment;
|
||||||
|
import ml.docilealligator.infinityforreddit.Fragment.UserThingSortTypeBottomSheetFragment;
|
||||||
|
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.Post;
|
import ml.docilealligator.infinityforreddit.Post;
|
||||||
import ml.docilealligator.infinityforreddit.PostDataSource;
|
import ml.docilealligator.infinityforreddit.PostDataSource;
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.PostFragment;
|
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.SearchPostSortTypeBottomSheetFragment;
|
|
||||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.SortTypeBottomSheetFragment;
|
|
||||||
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
|
||||||
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.UserThingSortTypeBottomSheetFragment;
|
|
||||||
|
|
||||||
import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY;
|
import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY;
|
||||||
import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM;
|
import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM;
|
||||||
@ -66,32 +66,30 @@ public class FilteredThingActivity extends AppCompatActivity implements SortType
|
|||||||
private static final String ACCESS_TOKEN_STATE = "ATS";
|
private static final String ACCESS_TOKEN_STATE = "ATS";
|
||||||
private static final String FRAGMENT_OUT_STATE = "FOS";
|
private static final String FRAGMENT_OUT_STATE = "FOS";
|
||||||
|
|
||||||
@BindView(R.id.appbar_layout_filtered_posts_activity) AppBarLayout appBarLayout;
|
@BindView(R.id.appbar_layout_filtered_posts_activity)
|
||||||
@BindView(R.id.collapsing_toolbar_layout_filtered_posts_activity) CollapsingToolbarLayout collapsingToolbarLayout;
|
AppBarLayout appBarLayout;
|
||||||
@BindView(R.id.toolbar_filtered_posts_activity) Toolbar toolbar;
|
@BindView(R.id.collapsing_toolbar_layout_filtered_posts_activity)
|
||||||
|
CollapsingToolbarLayout collapsingToolbarLayout;
|
||||||
|
@BindView(R.id.toolbar_filtered_posts_activity)
|
||||||
|
Toolbar toolbar;
|
||||||
|
@Inject
|
||||||
|
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
|
@Inject
|
||||||
|
SharedPreferences mSharedPreferences;
|
||||||
private boolean isInLazyMode = false;
|
private boolean isInLazyMode = false;
|
||||||
private boolean mNullAccessToken = false;
|
private boolean mNullAccessToken = false;
|
||||||
private String mAccessToken;
|
private String mAccessToken;
|
||||||
private String name;
|
private String name;
|
||||||
private int postType;
|
private int postType;
|
||||||
|
|
||||||
private Fragment mFragment;
|
private Fragment mFragment;
|
||||||
private Menu mMenu;
|
private Menu mMenu;
|
||||||
private AppBarLayout.LayoutParams params;
|
private AppBarLayout.LayoutParams params;
|
||||||
|
|
||||||
private SortTypeBottomSheetFragment bestSortTypeBottomSheetFragment;
|
private SortTypeBottomSheetFragment bestSortTypeBottomSheetFragment;
|
||||||
private SortTypeBottomSheetFragment popularAndAllSortTypeBottomSheetFragment;
|
private SortTypeBottomSheetFragment popularAndAllSortTypeBottomSheetFragment;
|
||||||
private SortTypeBottomSheetFragment subredditSortTypeBottomSheetFragment;
|
private SortTypeBottomSheetFragment subredditSortTypeBottomSheetFragment;
|
||||||
private UserThingSortTypeBottomSheetFragment userThingSortTypeBottomSheetFragment;
|
private UserThingSortTypeBottomSheetFragment userThingSortTypeBottomSheetFragment;
|
||||||
private SearchPostSortTypeBottomSheetFragment searchPostSortTypeBottomSheetFragment;
|
private SearchPostSortTypeBottomSheetFragment searchPostSortTypeBottomSheetFragment;
|
||||||
|
|
||||||
@Inject
|
|
||||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
SharedPreferences mSharedPreferences;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -122,24 +120,24 @@ public class FilteredThingActivity extends AppCompatActivity implements SortType
|
|||||||
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
||||||
|
|
||||||
boolean lightNavBar = false;
|
boolean lightNavBar = false;
|
||||||
if((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
if ((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
lightNavBar = true;
|
lightNavBar = true;
|
||||||
}
|
}
|
||||||
boolean finalLightNavBar = lightNavBar;
|
boolean finalLightNavBar = lightNavBar;
|
||||||
|
|
||||||
View decorView = window.getDecorView();
|
View decorView = window.getDecorView();
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
||||||
if (state == State.COLLAPSED) {
|
if (state == State.COLLAPSED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
} else if (state == State.EXPANDED) {
|
} else if (state == State.EXPANDED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -164,7 +162,7 @@ public class FilteredThingActivity extends AppCompatActivity implements SortType
|
|||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(systemDefault) {
|
if (systemDefault) {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
||||||
@ -182,11 +180,11 @@ public class FilteredThingActivity extends AppCompatActivity implements SortType
|
|||||||
int filter = getIntent().getIntExtra(EXTRA_FILTER, Post.TEXT_TYPE);
|
int filter = getIntent().getIntExtra(EXTRA_FILTER, Post.TEXT_TYPE);
|
||||||
String sortType = getIntent().getStringExtra(EXTRA_SORT_TYPE);
|
String sortType = getIntent().getStringExtra(EXTRA_SORT_TYPE);
|
||||||
|
|
||||||
if(savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
isInLazyMode = savedInstanceState.getBoolean(IS_IN_LAZY_MODE_STATE);
|
isInLazyMode = savedInstanceState.getBoolean(IS_IN_LAZY_MODE_STATE);
|
||||||
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
|
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
|
||||||
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
|
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
|
||||||
if(!mNullAccessToken && mAccessToken == null) {
|
if (!mNullAccessToken && mAccessToken == null) {
|
||||||
getCurrentAccountAndBindView(filter, sortType);
|
getCurrentAccountAndBindView(filter, sortType);
|
||||||
} else {
|
} else {
|
||||||
mFragment = getSupportFragmentManager().getFragment(savedInstanceState, FRAGMENT_OUT_STATE);
|
mFragment = getSupportFragmentManager().getFragment(savedInstanceState, FRAGMENT_OUT_STATE);
|
||||||
@ -200,7 +198,7 @@ public class FilteredThingActivity extends AppCompatActivity implements SortType
|
|||||||
|
|
||||||
private void getCurrentAccountAndBindView(int filter, String sortType) {
|
private void getCurrentAccountAndBindView(int filter, String sortType) {
|
||||||
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
||||||
if(account == null) {
|
if (account == null) {
|
||||||
mNullAccessToken = true;
|
mNullAccessToken = true;
|
||||||
} else {
|
} else {
|
||||||
mAccessToken = account.getAccessToken();
|
mAccessToken = account.getAccessToken();
|
||||||
@ -227,7 +225,7 @@ public class FilteredThingActivity extends AppCompatActivity implements SortType
|
|||||||
searchPostSortTypeBottomSheetFragment.setArguments(searchBundle);
|
searchPostSortTypeBottomSheetFragment.setArguments(searchBundle);
|
||||||
break;
|
break;
|
||||||
case PostDataSource.TYPE_SUBREDDIT:
|
case PostDataSource.TYPE_SUBREDDIT:
|
||||||
if(name.equals("popular") || name.equals("all")) {
|
if (name.equals("popular") || name.equals("all")) {
|
||||||
getSupportActionBar().setTitle(name.substring(0, 1).toUpperCase() + name.substring(1));
|
getSupportActionBar().setTitle(name.substring(0, 1).toUpperCase() + name.substring(1));
|
||||||
|
|
||||||
popularAndAllSortTypeBottomSheetFragment = new SortTypeBottomSheetFragment();
|
popularAndAllSortTypeBottomSheetFragment = new SortTypeBottomSheetFragment();
|
||||||
@ -273,7 +271,7 @@ public class FilteredThingActivity extends AppCompatActivity implements SortType
|
|||||||
toolbar.setSubtitle(R.string.gif);
|
toolbar.setSubtitle(R.string.gif);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(initializeFragment) {
|
if (initializeFragment) {
|
||||||
mFragment = new PostFragment();
|
mFragment = new PostFragment();
|
||||||
Bundle bundle = new Bundle();
|
Bundle bundle = new Bundle();
|
||||||
bundle.putString(PostFragment.EXTRA_NAME, name);
|
bundle.putString(PostFragment.EXTRA_NAME, name);
|
||||||
@ -281,10 +279,10 @@ public class FilteredThingActivity extends AppCompatActivity implements SortType
|
|||||||
bundle.putString(PostFragment.EXTRA_SORT_TYPE, sortType);
|
bundle.putString(PostFragment.EXTRA_SORT_TYPE, sortType);
|
||||||
bundle.putInt(PostFragment.EXTRA_FILTER, filter);
|
bundle.putInt(PostFragment.EXTRA_FILTER, filter);
|
||||||
bundle.putString(PostFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
|
bundle.putString(PostFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
|
||||||
if(postType == PostDataSource.TYPE_USER) {
|
if (postType == PostDataSource.TYPE_USER) {
|
||||||
bundle.putString(PostFragment.EXTRA_USER_WHERE, getIntent().getStringExtra(EXTRA_USER_WHERE));
|
bundle.putString(PostFragment.EXTRA_USER_WHERE, getIntent().getStringExtra(EXTRA_USER_WHERE));
|
||||||
}
|
}
|
||||||
if(postType == PostDataSource.TYPE_SEARCH) {
|
if (postType == PostDataSource.TYPE_SEARCH) {
|
||||||
bundle.putString(PostFragment.EXTRA_QUERY, getIntent().getStringExtra(EXTRA_QUERY));
|
bundle.putString(PostFragment.EXTRA_QUERY, getIntent().getStringExtra(EXTRA_QUERY));
|
||||||
}
|
}
|
||||||
mFragment.setArguments(bundle);
|
mFragment.setArguments(bundle);
|
||||||
@ -297,7 +295,7 @@ public class FilteredThingActivity extends AppCompatActivity implements SortType
|
|||||||
getMenuInflater().inflate(R.menu.filtered_posts_activity, menu);
|
getMenuInflater().inflate(R.menu.filtered_posts_activity, menu);
|
||||||
mMenu = menu;
|
mMenu = menu;
|
||||||
MenuItem lazyModeItem = mMenu.findItem(R.id.action_lazy_mode_filtered_thing_activity);
|
MenuItem lazyModeItem = mMenu.findItem(R.id.action_lazy_mode_filtered_thing_activity);
|
||||||
if(isInLazyMode) {
|
if (isInLazyMode) {
|
||||||
lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
|
lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
|
||||||
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_NO_SCROLL);
|
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_NO_SCROLL);
|
||||||
collapsingToolbarLayout.setLayoutParams(params);
|
collapsingToolbarLayout.setLayoutParams(params);
|
||||||
@ -324,7 +322,7 @@ public class FilteredThingActivity extends AppCompatActivity implements SortType
|
|||||||
searchPostSortTypeBottomSheetFragment.show(getSupportFragmentManager(), searchPostSortTypeBottomSheetFragment.getTag());
|
searchPostSortTypeBottomSheetFragment.show(getSupportFragmentManager(), searchPostSortTypeBottomSheetFragment.getTag());
|
||||||
break;
|
break;
|
||||||
case PostDataSource.TYPE_SUBREDDIT:
|
case PostDataSource.TYPE_SUBREDDIT:
|
||||||
if(name.equals("popular") || name.equals("all")) {
|
if (name.equals("popular") || name.equals("all")) {
|
||||||
popularAndAllSortTypeBottomSheetFragment.show(getSupportFragmentManager(), popularAndAllSortTypeBottomSheetFragment.getTag());
|
popularAndAllSortTypeBottomSheetFragment.show(getSupportFragmentManager(), popularAndAllSortTypeBottomSheetFragment.getTag());
|
||||||
} else {
|
} else {
|
||||||
subredditSortTypeBottomSheetFragment.show(getSupportFragmentManager(), subredditSortTypeBottomSheetFragment.getTag());
|
subredditSortTypeBottomSheetFragment.show(getSupportFragmentManager(), subredditSortTypeBottomSheetFragment.getTag());
|
||||||
@ -335,23 +333,23 @@ public class FilteredThingActivity extends AppCompatActivity implements SortType
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_refresh_filtered_thing_activity:
|
case R.id.action_refresh_filtered_thing_activity:
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_lazy_mode_filtered_thing_activity).setTitle(R.string.action_start_lazy_mode);
|
mMenu.findItem(R.id.action_lazy_mode_filtered_thing_activity).setTitle(R.string.action_start_lazy_mode);
|
||||||
}
|
}
|
||||||
if(mFragment instanceof FragmentCommunicator) {
|
if (mFragment instanceof FragmentCommunicator) {
|
||||||
((FragmentCommunicator) mFragment).refresh();
|
((FragmentCommunicator) mFragment).refresh();
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_lazy_mode_filtered_thing_activity:
|
case R.id.action_lazy_mode_filtered_thing_activity:
|
||||||
MenuItem lazyModeItem = mMenu.findItem(R.id.action_lazy_mode_filtered_thing_activity);
|
MenuItem lazyModeItem = mMenu.findItem(R.id.action_lazy_mode_filtered_thing_activity);
|
||||||
if(isInLazyMode) {
|
if (isInLazyMode) {
|
||||||
((FragmentCommunicator) mFragment).stopLazyMode();
|
((FragmentCommunicator) mFragment).stopLazyMode();
|
||||||
isInLazyMode = false;
|
isInLazyMode = false;
|
||||||
lazyModeItem.setTitle(R.string.action_start_lazy_mode);
|
lazyModeItem.setTitle(R.string.action_start_lazy_mode);
|
||||||
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);
|
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);
|
||||||
collapsingToolbarLayout.setLayoutParams(params);
|
collapsingToolbarLayout.setLayoutParams(params);
|
||||||
} else {
|
} else {
|
||||||
if(((FragmentCommunicator) mFragment).startLazyMode()) {
|
if (((FragmentCommunicator) mFragment).startLazyMode()) {
|
||||||
isInLazyMode = true;
|
isInLazyMode = true;
|
||||||
lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
|
lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
|
||||||
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_NO_SCROLL);
|
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_NO_SCROLL);
|
||||||
@ -382,17 +380,17 @@ public class FilteredThingActivity extends AppCompatActivity implements SortType
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void searchSortTypeSelected(String sortType) {
|
public void searchSortTypeSelected(String sortType) {
|
||||||
((PostFragment)mFragment).changeSortType(sortType);
|
((PostFragment) mFragment).changeSortType(sortType);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sortTypeSelected(String sortType) {
|
public void sortTypeSelected(String sortType) {
|
||||||
((PostFragment)mFragment).changeSortType(sortType);
|
((PostFragment) mFragment).changeSortType(sortType);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void userThingSortTypeSelected(String sortType) {
|
public void userThingSortTypeSelected(String sortType) {
|
||||||
((PostFragment)mFragment).changeSortType(sortType);
|
((PostFragment) mFragment).changeSortType(sortType);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
|
@ -43,6 +43,10 @@ public class LinkResolverActivity extends AppCompatActivity {
|
|||||||
@Inject
|
@Inject
|
||||||
SharedPreferences mSharedPreferences;
|
SharedPreferences mSharedPreferences;
|
||||||
|
|
||||||
|
public static Uri getRedditUriByPath(String path) {
|
||||||
|
return Uri.parse("https://www.reddit.com" + path);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -59,7 +63,7 @@ public class LinkResolverActivity extends AppCompatActivity {
|
|||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(systemDefault) {
|
if (systemDefault) {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
||||||
@ -68,25 +72,25 @@ public class LinkResolverActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Uri uri = getIntent().getData();
|
Uri uri = getIntent().getData();
|
||||||
if(uri == null) {
|
if (uri == null) {
|
||||||
Toast.makeText(this, R.string.no_link_available, Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, R.string.no_link_available, Toast.LENGTH_SHORT).show();
|
||||||
finish();
|
finish();
|
||||||
} else {
|
} else {
|
||||||
String path = uri.getPath();
|
String path = uri.getPath();
|
||||||
if(path == null) {
|
if (path == null) {
|
||||||
deepLinkError(uri);
|
deepLinkError(uri);
|
||||||
} else {
|
} else {
|
||||||
if(path.endsWith("/")) {
|
if (path.endsWith("/")) {
|
||||||
path = path.substring(0, path.length() - 1);
|
path = path.substring(0, path.length() - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
String messageFullname = getIntent().getStringExtra(EXTRA_MESSAGE_FULLNAME);
|
String messageFullname = getIntent().getStringExtra(EXTRA_MESSAGE_FULLNAME);
|
||||||
String newAccountName = getIntent().getStringExtra(EXTRA_NEW_ACCOUNT_NAME);
|
String newAccountName = getIntent().getStringExtra(EXTRA_NEW_ACCOUNT_NAME);
|
||||||
|
|
||||||
if(path.matches(POST_PATTERN)) {
|
if (path.matches(POST_PATTERN)) {
|
||||||
List<String> segments = uri.getPathSegments();
|
List<String> segments = uri.getPathSegments();
|
||||||
int commentsIndex = segments.lastIndexOf("comments");
|
int commentsIndex = segments.lastIndexOf("comments");
|
||||||
if(commentsIndex >=0 && commentsIndex < segments.size() - 1) {
|
if (commentsIndex >= 0 && commentsIndex < segments.size() - 1) {
|
||||||
Intent intent = new Intent(this, ViewPostDetailActivity.class);
|
Intent intent = new Intent(this, ViewPostDetailActivity.class);
|
||||||
intent.putExtra(ViewPostDetailActivity.EXTRA_POST_ID, segments.get(commentsIndex + 1));
|
intent.putExtra(ViewPostDetailActivity.EXTRA_POST_ID, segments.get(commentsIndex + 1));
|
||||||
intent.putExtra(ViewPostDetailActivity.EXTRA_MESSAGE_FULLNAME, messageFullname);
|
intent.putExtra(ViewPostDetailActivity.EXTRA_MESSAGE_FULLNAME, messageFullname);
|
||||||
@ -95,10 +99,10 @@ public class LinkResolverActivity extends AppCompatActivity {
|
|||||||
} else {
|
} else {
|
||||||
deepLinkError(uri);
|
deepLinkError(uri);
|
||||||
}
|
}
|
||||||
} else if(path.matches(COMMENT_PATTERN)) {
|
} else if (path.matches(COMMENT_PATTERN)) {
|
||||||
List<String> segments = uri.getPathSegments();
|
List<String> segments = uri.getPathSegments();
|
||||||
int commentsIndex = segments.lastIndexOf("comments");
|
int commentsIndex = segments.lastIndexOf("comments");
|
||||||
if(commentsIndex >=0 && commentsIndex < segments.size() - 1) {
|
if (commentsIndex >= 0 && commentsIndex < segments.size() - 1) {
|
||||||
Intent intent = new Intent(this, ViewPostDetailActivity.class);
|
Intent intent = new Intent(this, ViewPostDetailActivity.class);
|
||||||
intent.putExtra(ViewPostDetailActivity.EXTRA_POST_ID, segments.get(commentsIndex + 1));
|
intent.putExtra(ViewPostDetailActivity.EXTRA_POST_ID, segments.get(commentsIndex + 1));
|
||||||
intent.putExtra(ViewPostDetailActivity.EXTRA_SINGLE_COMMENT_ID, segments.get(segments.size() - 1));
|
intent.putExtra(ViewPostDetailActivity.EXTRA_SINGLE_COMMENT_ID, segments.get(segments.size() - 1));
|
||||||
@ -108,9 +112,9 @@ public class LinkResolverActivity extends AppCompatActivity {
|
|||||||
} else {
|
} else {
|
||||||
deepLinkError(uri);
|
deepLinkError(uri);
|
||||||
}
|
}
|
||||||
} else if(path.matches(SUBREDDIT_PATTERN)) {
|
} else if (path.matches(SUBREDDIT_PATTERN)) {
|
||||||
String subredditName = path.substring(3);
|
String subredditName = path.substring(3);
|
||||||
if(subredditName.equals("popular") || subredditName.equals("all")) {
|
if (subredditName.equals("popular") || subredditName.equals("all")) {
|
||||||
Intent intent = new Intent(this, MainActivity.class);
|
Intent intent = new Intent(this, MainActivity.class);
|
||||||
intent.putExtra(MainActivity.EXTRA_POST_TYPE, subredditName);
|
intent.putExtra(MainActivity.EXTRA_POST_TYPE, subredditName);
|
||||||
intent.putExtra(MainActivity.EXTRA_MESSSAGE_FULLNAME, messageFullname);
|
intent.putExtra(MainActivity.EXTRA_MESSSAGE_FULLNAME, messageFullname);
|
||||||
@ -123,13 +127,13 @@ public class LinkResolverActivity extends AppCompatActivity {
|
|||||||
intent.putExtra(ViewSubredditDetailActivity.EXTRA_NEW_ACCOUNT_NAME, newAccountName);
|
intent.putExtra(ViewSubredditDetailActivity.EXTRA_NEW_ACCOUNT_NAME, newAccountName);
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
}
|
}
|
||||||
} else if(path.matches(USER_PATTERN_1)) {
|
} else if (path.matches(USER_PATTERN_1)) {
|
||||||
Intent intent = new Intent(this, ViewUserDetailActivity.class);
|
Intent intent = new Intent(this, ViewUserDetailActivity.class);
|
||||||
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, path.substring(6));
|
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, path.substring(6));
|
||||||
intent.putExtra(ViewUserDetailActivity.EXTRA_MESSAGE_FULLNAME, messageFullname);
|
intent.putExtra(ViewUserDetailActivity.EXTRA_MESSAGE_FULLNAME, messageFullname);
|
||||||
intent.putExtra(ViewUserDetailActivity.EXTRA_NEW_ACCOUNT_NAME, newAccountName);
|
intent.putExtra(ViewUserDetailActivity.EXTRA_NEW_ACCOUNT_NAME, newAccountName);
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
} else if(path.matches(USER_PATTERN_2)) {
|
} else if (path.matches(USER_PATTERN_2)) {
|
||||||
Intent intent = new Intent(this, ViewUserDetailActivity.class);
|
Intent intent = new Intent(this, ViewUserDetailActivity.class);
|
||||||
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, path.substring(3));
|
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, path.substring(3));
|
||||||
intent.putExtra(ViewUserDetailActivity.EXTRA_MESSAGE_FULLNAME, messageFullname);
|
intent.putExtra(ViewUserDetailActivity.EXTRA_MESSAGE_FULLNAME, messageFullname);
|
||||||
@ -147,14 +151,14 @@ public class LinkResolverActivity extends AppCompatActivity {
|
|||||||
private void deepLinkError(Uri uri) {
|
private void deepLinkError(Uri uri) {
|
||||||
PackageManager pm = getPackageManager();
|
PackageManager pm = getPackageManager();
|
||||||
ArrayList<ResolveInfo> resolveInfos = getCustomTabsPackages(pm);
|
ArrayList<ResolveInfo> resolveInfos = getCustomTabsPackages(pm);
|
||||||
if(!resolveInfos.isEmpty()) {
|
if (!resolveInfos.isEmpty()) {
|
||||||
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
|
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
|
||||||
// add share action to menu list
|
// add share action to menu list
|
||||||
builder.addDefaultShareMenuItem();
|
builder.addDefaultShareMenuItem();
|
||||||
builder.setToolbarColor(getResources().getColor(R.color.colorPrimary));
|
builder.setToolbarColor(getResources().getColor(R.color.colorPrimary));
|
||||||
CustomTabsIntent customTabsIntent = builder.build();
|
CustomTabsIntent customTabsIntent = builder.build();
|
||||||
customTabsIntent.intent.setPackage(resolveInfos.get(0).activityInfo.packageName);
|
customTabsIntent.intent.setPackage(resolveInfos.get(0).activityInfo.packageName);
|
||||||
if(uri.getScheme() == null) {
|
if (uri.getScheme() == null) {
|
||||||
uri = Uri.parse("http://" + uri.toString());
|
uri = Uri.parse("http://" + uri.toString());
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
@ -195,21 +199,17 @@ public class LinkResolverActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
String currentPackageName = getApplicationContext().getPackageName();
|
String currentPackageName = getApplicationContext().getPackageName();
|
||||||
|
|
||||||
for(ResolveInfo info : activities) {
|
for (ResolveInfo info : activities) {
|
||||||
if(!info.activityInfo.packageName.equals(currentPackageName)) {
|
if (!info.activityInfo.packageName.equals(currentPackageName)) {
|
||||||
packageNames.add(info.activityInfo.packageName);
|
packageNames.add(info.activityInfo.packageName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!packageNames.isEmpty()) {
|
if (!packageNames.isEmpty()) {
|
||||||
intent.setPackage(packageNames.get(0));
|
intent.setPackage(packageNames.get(0));
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
} else {
|
} else {
|
||||||
Toast.makeText(this, R.string.no_browser_found, Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, R.string.no_browser_found, Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Uri getRedditUriByPath(String path) {
|
|
||||||
return Uri.parse("https://www.reddit.com" + path);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -29,9 +29,9 @@ import javax.inject.Named;
|
|||||||
|
|
||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
|
import ml.docilealligator.infinityforreddit.AsyncTask.ParseAndInsertNewAccountAsyncTask;
|
||||||
import ml.docilealligator.infinityforreddit.FetchMyInfo;
|
import ml.docilealligator.infinityforreddit.FetchMyInfo;
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.AsyncTask.ParseAndInsertNewAccountAsyncTask;
|
|
||||||
import ml.docilealligator.infinityforreddit.ParseAndSaveAccountInfo;
|
import ml.docilealligator.infinityforreddit.ParseAndSaveAccountInfo;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.RedditAPI;
|
import ml.docilealligator.infinityforreddit.RedditAPI;
|
||||||
@ -50,23 +50,19 @@ import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_YES;
|
|||||||
|
|
||||||
public class LoginActivity extends AppCompatActivity {
|
public class LoginActivity extends AppCompatActivity {
|
||||||
|
|
||||||
@BindView(R.id.toolbar_login_activity) Toolbar toolbar;
|
@BindView(R.id.toolbar_login_activity)
|
||||||
|
Toolbar toolbar;
|
||||||
private String authCode;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@Named("no_oauth")
|
@Named("no_oauth")
|
||||||
Retrofit mRetrofit;
|
Retrofit mRetrofit;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@Named("oauth")
|
@Named("oauth")
|
||||||
Retrofit mOauthRetrofit;
|
Retrofit mOauthRetrofit;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
SharedPreferences mSharedPreferences;
|
SharedPreferences mSharedPreferences;
|
||||||
|
private String authCode;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
@ -89,7 +85,7 @@ public class LoginActivity extends AppCompatActivity {
|
|||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(systemDefault) {
|
if (systemDefault) {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
||||||
@ -114,16 +110,17 @@ public class LoginActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
String url = uriBuilder.toString();
|
String url = uriBuilder.toString();
|
||||||
|
|
||||||
CookieManager.getInstance().removeAllCookies(aBoolean -> {});
|
CookieManager.getInstance().removeAllCookies(aBoolean -> {
|
||||||
|
});
|
||||||
|
|
||||||
webView.loadUrl(url);
|
webView.loadUrl(url);
|
||||||
webView.setWebViewClient(new WebViewClient() {
|
webView.setWebViewClient(new WebViewClient() {
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
||||||
if(url.contains("&code=") || url.contains("?code=")) {
|
if (url.contains("&code=") || url.contains("?code=")) {
|
||||||
Uri uri = Uri.parse(url);
|
Uri uri = Uri.parse(url);
|
||||||
String state = uri.getQueryParameter("state");
|
String state = uri.getQueryParameter("state");
|
||||||
if(state.equals(RedditUtils.STATE)) {
|
if (state.equals(RedditUtils.STATE)) {
|
||||||
authCode = uri.getQueryParameter("code");
|
authCode = uri.getQueryParameter("code");
|
||||||
|
|
||||||
Map<String, String> params = new HashMap<>();
|
Map<String, String> params = new HashMap<>();
|
||||||
@ -136,10 +133,10 @@ public class LoginActivity extends AppCompatActivity {
|
|||||||
accessTokenCall.enqueue(new Callback<String>() {
|
accessTokenCall.enqueue(new Callback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
if(response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
try {
|
try {
|
||||||
String accountResponse = response.body();
|
String accountResponse = response.body();
|
||||||
if(accountResponse == null) {
|
if (accountResponse == null) {
|
||||||
//Handle error
|
//Handle error
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -57,39 +57,39 @@ import java.util.concurrent.TimeUnit;
|
|||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Named;
|
import javax.inject.Named;
|
||||||
|
|
||||||
|
import butterknife.BindView;
|
||||||
|
import butterknife.ButterKnife;
|
||||||
|
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
|
||||||
import ml.docilealligator.infinityforreddit.Account.Account;
|
import ml.docilealligator.infinityforreddit.Account.Account;
|
||||||
import ml.docilealligator.infinityforreddit.Account.AccountViewModel;
|
import ml.docilealligator.infinityforreddit.Account.AccountViewModel;
|
||||||
import ml.docilealligator.infinityforreddit.Adapter.AccountRecyclerViewAdapter;
|
import ml.docilealligator.infinityforreddit.Adapter.AccountRecyclerViewAdapter;
|
||||||
import ml.docilealligator.infinityforreddit.AppBarStateChangeListener;
|
import ml.docilealligator.infinityforreddit.AppBarStateChangeListener;
|
||||||
|
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
|
||||||
|
import ml.docilealligator.infinityforreddit.AsyncTask.InsertSubscribedThingsAsyncTask;
|
||||||
|
import ml.docilealligator.infinityforreddit.AsyncTask.SwitchAccountAsyncTask;
|
||||||
|
import ml.docilealligator.infinityforreddit.AsyncTask.SwitchToAnonymousAccountAsyncTask;
|
||||||
|
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
||||||
import ml.docilealligator.infinityforreddit.Event.ChangeFontSizeEvent;
|
import ml.docilealligator.infinityforreddit.Event.ChangeFontSizeEvent;
|
||||||
import ml.docilealligator.infinityforreddit.Event.ChangeNSFWEvent;
|
import ml.docilealligator.infinityforreddit.Event.ChangeNSFWEvent;
|
||||||
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
||||||
import ml.docilealligator.infinityforreddit.FetchMyInfo;
|
import ml.docilealligator.infinityforreddit.FetchMyInfo;
|
||||||
import ml.docilealligator.infinityforreddit.FetchSubscribedThing;
|
import ml.docilealligator.infinityforreddit.FetchSubscribedThing;
|
||||||
import ml.docilealligator.infinityforreddit.FontStyle;
|
import ml.docilealligator.infinityforreddit.FontStyle;
|
||||||
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
|
||||||
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
|
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
|
||||||
import ml.docilealligator.infinityforreddit.AsyncTask.InsertSubscribedThingsAsyncTask;
|
|
||||||
import ml.docilealligator.infinityforreddit.ParseAndSaveAccountInfo;
|
|
||||||
import ml.docilealligator.infinityforreddit.PostDataSource;
|
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.PostFragment;
|
import ml.docilealligator.infinityforreddit.Fragment.PostFragment;
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.PostTypeBottomSheetFragment;
|
import ml.docilealligator.infinityforreddit.Fragment.PostTypeBottomSheetFragment;
|
||||||
|
import ml.docilealligator.infinityforreddit.Fragment.SortTypeBottomSheetFragment;
|
||||||
|
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
||||||
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
|
import ml.docilealligator.infinityforreddit.ParseAndSaveAccountInfo;
|
||||||
|
import ml.docilealligator.infinityforreddit.PostDataSource;
|
||||||
import ml.docilealligator.infinityforreddit.PullNotificationWorker;
|
import ml.docilealligator.infinityforreddit.PullNotificationWorker;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.ReadMessage;
|
import ml.docilealligator.infinityforreddit.ReadMessage;
|
||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.SortTypeBottomSheetFragment;
|
|
||||||
import ml.docilealligator.infinityforreddit.SubredditDatabase.SubredditData;
|
import ml.docilealligator.infinityforreddit.SubredditDatabase.SubredditData;
|
||||||
import ml.docilealligator.infinityforreddit.SubscribedSubredditDatabase.SubscribedSubredditData;
|
import ml.docilealligator.infinityforreddit.SubscribedSubredditDatabase.SubscribedSubredditData;
|
||||||
import ml.docilealligator.infinityforreddit.SubscribedUserDatabase.SubscribedUserData;
|
import ml.docilealligator.infinityforreddit.SubscribedUserDatabase.SubscribedUserData;
|
||||||
import butterknife.BindView;
|
|
||||||
import butterknife.ButterKnife;
|
|
||||||
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
|
|
||||||
import ml.docilealligator.infinityforreddit.AsyncTask.SwitchAccountAsyncTask;
|
|
||||||
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
|
||||||
import ml.docilealligator.infinityforreddit.AsyncTask.SwitchToAnonymousAccountAsyncTask;
|
|
||||||
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
||||||
import pl.droidsonroids.gif.GifImageView;
|
import pl.droidsonroids.gif.GifImageView;
|
||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
@ -121,44 +121,71 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
|
|
||||||
private static final int LOGIN_ACTIVITY_REQUEST_CODE = 0;
|
private static final int LOGIN_ACTIVITY_REQUEST_CODE = 0;
|
||||||
|
|
||||||
@BindView(R.id.drawer_layout) DrawerLayout drawer;
|
@BindView(R.id.drawer_layout)
|
||||||
@BindView(R.id.coordinator_layout_main_activity) CoordinatorLayout coordinatorLayout;
|
DrawerLayout drawer;
|
||||||
@BindView(R.id.appbar_layout_main_activity) AppBarLayout appBarLayout;
|
@BindView(R.id.coordinator_layout_main_activity)
|
||||||
@BindView(R.id.view_pager_main_activity) ViewPager viewPager;
|
CoordinatorLayout coordinatorLayout;
|
||||||
@BindView(R.id.collapsing_toolbar_layout_main_activity) CollapsingToolbarLayout collapsingToolbarLayout;
|
@BindView(R.id.appbar_layout_main_activity)
|
||||||
@BindView(R.id.toolbar) Toolbar toolbar;
|
AppBarLayout appBarLayout;
|
||||||
@BindView(R.id.nested_scroll_view_main_activity) NestedScrollView nestedScrollView;
|
@BindView(R.id.view_pager_main_activity)
|
||||||
@BindView(R.id.all_drawer_items_linear_layout_main_activity) LinearLayout allDrawerItemsLinearLayout;
|
ViewPager viewPager;
|
||||||
@BindView(R.id.account_label_main_activity) TextView accountLabelTextView;
|
@BindView(R.id.collapsing_toolbar_layout_main_activity)
|
||||||
@BindView(R.id.profile_linear_layout_main_activity) LinearLayout profileLinearLayout;
|
CollapsingToolbarLayout collapsingToolbarLayout;
|
||||||
@BindView(R.id.subscriptions_linear_layout_main_activity) LinearLayout subscriptionLinearLayout;
|
@BindView(R.id.toolbar)
|
||||||
@BindView(R.id.inbox_linear_layout_main_activity) LinearLayout inboxLinearLayout;
|
Toolbar toolbar;
|
||||||
@BindView(R.id.post_label_main_activity) TextView postLabelTextView;
|
@BindView(R.id.nested_scroll_view_main_activity)
|
||||||
@BindView(R.id.upvoted_linear_layout_main_activity) LinearLayout upvotedLinearLayout;
|
NestedScrollView nestedScrollView;
|
||||||
@BindView(R.id.downvoted_linear_layout_main_activity) LinearLayout downvotedLinearLayout;
|
@BindView(R.id.all_drawer_items_linear_layout_main_activity)
|
||||||
@BindView(R.id.hidden_linear_layout_main_activity) LinearLayout hiddenLinearLayout;
|
LinearLayout allDrawerItemsLinearLayout;
|
||||||
@BindView(R.id.saved_linear_layout_main_activity) LinearLayout savedLinearLayout;
|
@BindView(R.id.account_label_main_activity)
|
||||||
@BindView(R.id.gilded_linear_layout_main_activity) LinearLayout gildedLinearLayout;
|
TextView accountLabelTextView;
|
||||||
@BindView(R.id.divider_main_activity) View divider;
|
@BindView(R.id.profile_linear_layout_main_activity)
|
||||||
@BindView(R.id.settings_linear_layout_main_activity) LinearLayout settingsLinearLayout;
|
LinearLayout profileLinearLayout;
|
||||||
@BindView(R.id.account_recycler_view_main_activity) RecyclerView accountRecyclerView;
|
@BindView(R.id.subscriptions_linear_layout_main_activity)
|
||||||
@BindView(R.id.tab_layout_main_activity) TabLayout tabLayout;
|
LinearLayout subscriptionLinearLayout;
|
||||||
@BindView(R.id.fab_main_activity) FloatingActionButton fab;
|
@BindView(R.id.inbox_linear_layout_main_activity)
|
||||||
|
LinearLayout inboxLinearLayout;
|
||||||
|
@BindView(R.id.post_label_main_activity)
|
||||||
|
TextView postLabelTextView;
|
||||||
|
@BindView(R.id.upvoted_linear_layout_main_activity)
|
||||||
|
LinearLayout upvotedLinearLayout;
|
||||||
|
@BindView(R.id.downvoted_linear_layout_main_activity)
|
||||||
|
LinearLayout downvotedLinearLayout;
|
||||||
|
@BindView(R.id.hidden_linear_layout_main_activity)
|
||||||
|
LinearLayout hiddenLinearLayout;
|
||||||
|
@BindView(R.id.saved_linear_layout_main_activity)
|
||||||
|
LinearLayout savedLinearLayout;
|
||||||
|
@BindView(R.id.gilded_linear_layout_main_activity)
|
||||||
|
LinearLayout gildedLinearLayout;
|
||||||
|
@BindView(R.id.divider_main_activity)
|
||||||
|
View divider;
|
||||||
|
@BindView(R.id.settings_linear_layout_main_activity)
|
||||||
|
LinearLayout settingsLinearLayout;
|
||||||
|
@BindView(R.id.account_recycler_view_main_activity)
|
||||||
|
RecyclerView accountRecyclerView;
|
||||||
|
@BindView(R.id.tab_layout_main_activity)
|
||||||
|
TabLayout tabLayout;
|
||||||
|
@BindView(R.id.fab_main_activity)
|
||||||
|
FloatingActionButton fab;
|
||||||
|
AccountViewModel accountViewModel;
|
||||||
|
@Inject
|
||||||
|
@Named("oauth")
|
||||||
|
Retrofit mOauthRetrofit;
|
||||||
|
@Inject
|
||||||
|
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
|
@Inject
|
||||||
|
SharedPreferences mSharedPreferences;
|
||||||
private SectionsPagerAdapter sectionsPagerAdapter;
|
private SectionsPagerAdapter sectionsPagerAdapter;
|
||||||
|
|
||||||
private TextView mAccountNameTextView;
|
private TextView mAccountNameTextView;
|
||||||
private TextView mKarmaTextView;
|
private TextView mKarmaTextView;
|
||||||
private GifImageView mProfileImageView;
|
private GifImageView mProfileImageView;
|
||||||
private ImageView mBannerImageView;
|
private ImageView mBannerImageView;
|
||||||
private ImageView mDropIconImageView;
|
private ImageView mDropIconImageView;
|
||||||
|
|
||||||
private RequestManager glide;
|
private RequestManager glide;
|
||||||
private AppBarLayout.LayoutParams params;
|
private AppBarLayout.LayoutParams params;
|
||||||
private PostTypeBottomSheetFragment postTypeBottomSheetFragment;
|
private PostTypeBottomSheetFragment postTypeBottomSheetFragment;
|
||||||
private SortTypeBottomSheetFragment bestSortTypeBottomSheetFragment;
|
private SortTypeBottomSheetFragment bestSortTypeBottomSheetFragment;
|
||||||
private SortTypeBottomSheetFragment popularAndAllSortTypeBottomSheetFragment;
|
private SortTypeBottomSheetFragment popularAndAllSortTypeBottomSheetFragment;
|
||||||
|
|
||||||
private boolean mNullAccessToken = false;
|
private boolean mNullAccessToken = false;
|
||||||
private String mAccessToken;
|
private String mAccessToken;
|
||||||
private String mAccountName;
|
private String mAccountName;
|
||||||
@ -170,23 +197,9 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
private boolean mDrawerOnAccountSwitch = false;
|
private boolean mDrawerOnAccountSwitch = false;
|
||||||
private String mMessageFullname;
|
private String mMessageFullname;
|
||||||
private String mNewAccountName;
|
private String mNewAccountName;
|
||||||
|
|
||||||
private Menu mMenu;
|
private Menu mMenu;
|
||||||
|
|
||||||
private boolean isInLazyMode = false;
|
private boolean isInLazyMode = false;
|
||||||
|
|
||||||
AccountViewModel accountViewModel;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
@Named("oauth")
|
|
||||||
Retrofit mOauthRetrofit;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
SharedPreferences mSharedPreferences;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
setTheme(R.style.AppTheme_NoActionBarWithTransparentStatusBar);
|
setTheme(R.style.AppTheme_NoActionBarWithTransparentStatusBar);
|
||||||
@ -215,12 +228,12 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
||||||
Resources resources = getResources();
|
Resources resources = getResources();
|
||||||
|
|
||||||
if(resources.getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT || resources.getBoolean(R.bool.isTablet)) {
|
if (resources.getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT || resources.getBoolean(R.bool.isTablet)) {
|
||||||
Window window = getWindow();
|
Window window = getWindow();
|
||||||
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
||||||
|
|
||||||
boolean lightNavBar = false;
|
boolean lightNavBar = false;
|
||||||
if((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
if ((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
lightNavBar = true;
|
lightNavBar = true;
|
||||||
}
|
}
|
||||||
boolean finalLightNavBar = lightNavBar;
|
boolean finalLightNavBar = lightNavBar;
|
||||||
@ -229,12 +242,12 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
||||||
if(state == State.COLLAPSED) {
|
if (state == State.COLLAPSED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
} else if(state == State.EXPANDED) {
|
} else if (state == State.EXPANDED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -270,7 +283,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(systemDefault) {
|
if (systemDefault) {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
||||||
@ -300,7 +313,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
|
|
||||||
params = (AppBarLayout.LayoutParams) collapsingToolbarLayout.getLayoutParams();
|
params = (AppBarLayout.LayoutParams) collapsingToolbarLayout.getLayoutParams();
|
||||||
|
|
||||||
if(savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
mFetchUserInfoSuccess = savedInstanceState.getBoolean(FETCH_USER_INFO_STATE);
|
mFetchUserInfoSuccess = savedInstanceState.getBoolean(FETCH_USER_INFO_STATE);
|
||||||
mFetchSubscriptionsSuccess = savedInstanceState.getBoolean(FETCH_SUBSCRIPTIONS_STATE);
|
mFetchSubscriptionsSuccess = savedInstanceState.getBoolean(FETCH_SUBSCRIPTIONS_STATE);
|
||||||
mDrawerOnAccountSwitch = savedInstanceState.getBoolean(DRAWER_ON_ACCOUNT_SWITCH_STATE);
|
mDrawerOnAccountSwitch = savedInstanceState.getBoolean(DRAWER_ON_ACCOUNT_SWITCH_STATE);
|
||||||
@ -314,7 +327,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
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);
|
||||||
|
|
||||||
if(!mNullAccessToken && mAccessToken == null) {
|
if (!mNullAccessToken && mAccessToken == null) {
|
||||||
getCurrentAccountAndBindView();
|
getCurrentAccountAndBindView();
|
||||||
} else {
|
} else {
|
||||||
bindView();
|
bindView();
|
||||||
@ -326,7 +339,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
}
|
}
|
||||||
|
|
||||||
fab.setOnClickListener(view -> {
|
fab.setOnClickListener(view -> {
|
||||||
if(mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
Toast.makeText(MainActivity.this, R.string.login_first, Toast.LENGTH_SHORT).show();
|
Toast.makeText(MainActivity.this, R.string.login_first, Toast.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -342,17 +355,17 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
|
|
||||||
WorkManager workManager = WorkManager.getInstance(this);
|
WorkManager workManager = WorkManager.getInstance(this);
|
||||||
|
|
||||||
if(mNewAccountName != null) {
|
if (mNewAccountName != null) {
|
||||||
if(account == null || !account.getUsername().equals(mNewAccountName)) {
|
if (account == null || !account.getUsername().equals(mNewAccountName)) {
|
||||||
new SwitchAccountAsyncTask(mRedditDataRoomDatabase, mNewAccountName, newAccount -> {
|
new SwitchAccountAsyncTask(mRedditDataRoomDatabase, mNewAccountName, newAccount -> {
|
||||||
EventBus.getDefault().post(new SwitchAccountEvent(getClass().getName()));
|
EventBus.getDefault().post(new SwitchAccountEvent(getClass().getName()));
|
||||||
Toast.makeText(this, R.string.account_switched, Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, R.string.account_switched, Toast.LENGTH_SHORT).show();
|
||||||
|
|
||||||
mNewAccountName = null;
|
mNewAccountName = null;
|
||||||
if(newAccount == null) {
|
if (newAccount == null) {
|
||||||
mNullAccessToken = true;
|
mNullAccessToken = true;
|
||||||
|
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_subscriptions_main_activity).setVisible(false);
|
mMenu.findItem(R.id.action_subscriptions_main_activity).setVisible(false);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -362,12 +375,12 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
mBannerImageUrl = newAccount.getBannerImageUrl();
|
mBannerImageUrl = newAccount.getBannerImageUrl();
|
||||||
mKarma = newAccount.getKarma();
|
mKarma = newAccount.getKarma();
|
||||||
|
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_subscriptions_main_activity).setVisible(true);
|
mMenu.findItem(R.id.action_subscriptions_main_activity).setVisible(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(enableNotification) {
|
if (enableNotification) {
|
||||||
Constraints constraints = new Constraints.Builder()
|
Constraints constraints = new Constraints.Builder()
|
||||||
.setRequiredNetworkType(NetworkType.CONNECTED)
|
.setRequiredNetworkType(NetworkType.CONNECTED)
|
||||||
.build();
|
.build();
|
||||||
@ -393,11 +406,11 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
mBannerImageUrl = account.getBannerImageUrl();
|
mBannerImageUrl = account.getBannerImageUrl();
|
||||||
mKarma = account.getKarma();
|
mKarma = account.getKarma();
|
||||||
|
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_subscriptions_main_activity).setVisible(true);
|
mMenu.findItem(R.id.action_subscriptions_main_activity).setVisible(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(enableNotification) {
|
if (enableNotification) {
|
||||||
Constraints constraints = new Constraints.Builder()
|
Constraints constraints = new Constraints.Builder()
|
||||||
.setRequiredNetworkType(NetworkType.CONNECTED)
|
.setRequiredNetworkType(NetworkType.CONNECTED)
|
||||||
.build();
|
.build();
|
||||||
@ -417,10 +430,10 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
bindView();
|
bindView();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(account == null) {
|
if (account == null) {
|
||||||
mNullAccessToken = true;
|
mNullAccessToken = true;
|
||||||
|
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_subscriptions_main_activity).setVisible(false);
|
mMenu.findItem(R.id.action_subscriptions_main_activity).setVisible(false);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -430,12 +443,12 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
mBannerImageUrl = account.getBannerImageUrl();
|
mBannerImageUrl = account.getBannerImageUrl();
|
||||||
mKarma = account.getKarma();
|
mKarma = account.getKarma();
|
||||||
|
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_subscriptions_main_activity).setVisible(true);
|
mMenu.findItem(R.id.action_subscriptions_main_activity).setVisible(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(enableNotification) {
|
if (enableNotification) {
|
||||||
Constraints constraints = new Constraints.Builder()
|
Constraints constraints = new Constraints.Builder()
|
||||||
.setRequiredNetworkType(NetworkType.CONNECTED)
|
.setRequiredNetworkType(NetworkType.CONNECTED)
|
||||||
.build();
|
.build();
|
||||||
@ -458,7 +471,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void bindView() {
|
private void bindView() {
|
||||||
if(isDestroyed()) {
|
if (isDestroyed()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -469,13 +482,14 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
|
|
||||||
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
|
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPageSelected(int position) {
|
public void onPageSelected(int position) {
|
||||||
fab.show();
|
fab.show();
|
||||||
if(isInLazyMode) {
|
if (isInLazyMode) {
|
||||||
if(position == sectionsPagerAdapter.getCurrentLazyModeFragmentPosition()) {
|
if (position == sectionsPagerAdapter.getCurrentLazyModeFragmentPosition()) {
|
||||||
sectionsPagerAdapter.resumeLazyMode();
|
sectionsPagerAdapter.resumeLazyMode();
|
||||||
} else {
|
} else {
|
||||||
sectionsPagerAdapter.pauseLazyMode();
|
sectionsPagerAdapter.pauseLazyMode();
|
||||||
@ -484,7 +498,8 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPageScrollStateChanged(int state) {}
|
public void onPageScrollStateChanged(int state) {
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
loadSubscriptions();
|
loadSubscriptions();
|
||||||
@ -537,9 +552,9 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
new AccountViewModel.Factory(getApplication(), mRedditDataRoomDatabase, mAccountName)).get(AccountViewModel.class);
|
new AccountViewModel.Factory(getApplication(), mRedditDataRoomDatabase, mAccountName)).get(AccountViewModel.class);
|
||||||
accountViewModel.getAccountsExceptCurrentAccountLiveData().observe(this, adapter::changeAccountsDataset);
|
accountViewModel.getAccountsExceptCurrentAccountLiveData().observe(this, adapter::changeAccountsDataset);
|
||||||
|
|
||||||
if(getIntent().hasExtra(EXTRA_POST_TYPE)) {
|
if (getIntent().hasExtra(EXTRA_POST_TYPE)) {
|
||||||
String type = getIntent().getStringExtra(EXTRA_POST_TYPE);
|
String type = getIntent().getStringExtra(EXTRA_POST_TYPE);
|
||||||
if(type != null && type.equals("popular")) {
|
if (type != null && type.equals("popular")) {
|
||||||
viewPager.setCurrentItem(1);
|
viewPager.setCurrentItem(1);
|
||||||
} else {
|
} else {
|
||||||
viewPager.setCurrentItem(2);
|
viewPager.setCurrentItem(2);
|
||||||
@ -553,7 +568,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
mBannerImageView = header.findViewById(R.id.banner_image_view_nav_header_main);
|
mBannerImageView = header.findViewById(R.id.banner_image_view_nav_header_main);
|
||||||
mDropIconImageView = header.findViewById(R.id.account_switcher_image_view_nav_header_main);
|
mDropIconImageView = header.findViewById(R.id.account_switcher_image_view_nav_header_main);
|
||||||
|
|
||||||
if(mDrawerOnAccountSwitch) {
|
if (mDrawerOnAccountSwitch) {
|
||||||
mDropIconImageView.setImageDrawable(getResources().getDrawable(R.drawable.ic_baseline_arrow_drop_up_24px));
|
mDropIconImageView.setImageDrawable(getResources().getDrawable(R.drawable.ic_baseline_arrow_drop_up_24px));
|
||||||
accountRecyclerView.setVisibility(View.VISIBLE);
|
accountRecyclerView.setVisibility(View.VISIBLE);
|
||||||
allDrawerItemsLinearLayout.setVisibility(View.GONE);
|
allDrawerItemsLinearLayout.setVisibility(View.GONE);
|
||||||
@ -564,7 +579,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
}
|
}
|
||||||
|
|
||||||
header.setOnClickListener(view -> {
|
header.setOnClickListener(view -> {
|
||||||
if(mDrawerOnAccountSwitch) {
|
if (mDrawerOnAccountSwitch) {
|
||||||
mDrawerOnAccountSwitch = false;
|
mDrawerOnAccountSwitch = false;
|
||||||
mDropIconImageView.setImageDrawable(getResources().getDrawable(R.drawable.ic_baseline_arrow_drop_down_24px));
|
mDropIconImageView.setImageDrawable(getResources().getDrawable(R.drawable.ic_baseline_arrow_drop_down_24px));
|
||||||
accountRecyclerView.setVisibility(View.GONE);
|
accountRecyclerView.setVisibility(View.GONE);
|
||||||
@ -579,10 +594,10 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
|
|
||||||
loadUserData();
|
loadUserData();
|
||||||
|
|
||||||
if(mAccessToken != null) {
|
if (mAccessToken != null) {
|
||||||
mKarmaTextView.setText(getString(R.string.karma_info, mKarma));
|
mKarmaTextView.setText(getString(R.string.karma_info, mKarma));
|
||||||
mAccountNameTextView.setText(mAccountName);
|
mAccountNameTextView.setText(mAccountName);
|
||||||
if(mMessageFullname != null) {
|
if (mMessageFullname != null) {
|
||||||
ReadMessage.readMessage(mOauthRetrofit, mAccessToken, mMessageFullname, new ReadMessage.ReadMessageListener() {
|
ReadMessage.readMessage(mOauthRetrofit, mAccessToken, mMessageFullname, new ReadMessage.ReadMessageListener() {
|
||||||
@Override
|
@Override
|
||||||
public void readSuccess() {
|
public void readSuccess() {
|
||||||
@ -765,7 +780,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||||
if(requestCode == LOGIN_ACTIVITY_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
|
if (requestCode == LOGIN_ACTIVITY_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
|
||||||
Intent intent = new Intent(this, MainActivity.class);
|
Intent intent = new Intent(this, MainActivity.class);
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
finish();
|
finish();
|
||||||
@ -781,13 +796,13 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
MenuItem lazyModeItem = mMenu.findItem(R.id.action_lazy_mode_main_activity);
|
MenuItem lazyModeItem = mMenu.findItem(R.id.action_lazy_mode_main_activity);
|
||||||
MenuItem subscriptionsItem = mMenu.findItem(R.id.action_subscriptions_main_activity);
|
MenuItem subscriptionsItem = mMenu.findItem(R.id.action_subscriptions_main_activity);
|
||||||
|
|
||||||
if(mAccessToken != null) {
|
if (mAccessToken != null) {
|
||||||
subscriptionsItem.setVisible(true);
|
subscriptionsItem.setVisible(true);
|
||||||
} else {
|
} else {
|
||||||
subscriptionsItem.setVisible(false);
|
subscriptionsItem.setVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(isInLazyMode) {
|
if (isInLazyMode) {
|
||||||
lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
|
lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
|
||||||
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_NO_SCROLL);
|
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_NO_SCROLL);
|
||||||
collapsingToolbarLayout.setLayoutParams(params);
|
collapsingToolbarLayout.setLayoutParams(params);
|
||||||
@ -808,7 +823,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
startActivity(subscriptionsIntent);
|
startActivity(subscriptionsIntent);
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_sort_main_activity:
|
case R.id.action_sort_main_activity:
|
||||||
if(viewPager.getCurrentItem() == 1 ||viewPager.getCurrentItem() == 2) {
|
if (viewPager.getCurrentItem() == 1 || viewPager.getCurrentItem() == 2) {
|
||||||
popularAndAllSortTypeBottomSheetFragment.show(getSupportFragmentManager(), popularAndAllSortTypeBottomSheetFragment.getTag());
|
popularAndAllSortTypeBottomSheetFragment.show(getSupportFragmentManager(), popularAndAllSortTypeBottomSheetFragment.getTag());
|
||||||
} else {
|
} else {
|
||||||
bestSortTypeBottomSheetFragment.show(getSupportFragmentManager(), bestSortTypeBottomSheetFragment.getTag());
|
bestSortTypeBottomSheetFragment.show(getSupportFragmentManager(), bestSortTypeBottomSheetFragment.getTag());
|
||||||
@ -820,7 +835,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_refresh_main_activity:
|
case R.id.action_refresh_main_activity:
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_lazy_mode_main_activity).setTitle(R.string.action_start_lazy_mode);
|
mMenu.findItem(R.id.action_lazy_mode_main_activity).setTitle(R.string.action_start_lazy_mode);
|
||||||
}
|
}
|
||||||
sectionsPagerAdapter.refresh();
|
sectionsPagerAdapter.refresh();
|
||||||
@ -829,14 +844,14 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
return true;
|
return true;
|
||||||
case R.id.action_lazy_mode_main_activity:
|
case R.id.action_lazy_mode_main_activity:
|
||||||
MenuItem lazyModeItem = mMenu.findItem(R.id.action_lazy_mode_main_activity);
|
MenuItem lazyModeItem = mMenu.findItem(R.id.action_lazy_mode_main_activity);
|
||||||
if(isInLazyMode) {
|
if (isInLazyMode) {
|
||||||
sectionsPagerAdapter.stopLazyMode();
|
sectionsPagerAdapter.stopLazyMode();
|
||||||
isInLazyMode = false;
|
isInLazyMode = false;
|
||||||
lazyModeItem.setTitle(R.string.action_start_lazy_mode);
|
lazyModeItem.setTitle(R.string.action_start_lazy_mode);
|
||||||
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);
|
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);
|
||||||
collapsingToolbarLayout.setLayoutParams(params);
|
collapsingToolbarLayout.setLayoutParams(params);
|
||||||
} else {
|
} else {
|
||||||
if(sectionsPagerAdapter.startLazyMode()) {
|
if (sectionsPagerAdapter.startLazyMode()) {
|
||||||
isInLazyMode = true;
|
isInLazyMode = true;
|
||||||
lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
|
lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
|
||||||
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_NO_SCROLL);
|
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_NO_SCROLL);
|
||||||
@ -918,7 +933,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onAccountSwitchEvent(SwitchAccountEvent event) {
|
public void onAccountSwitchEvent(SwitchAccountEvent event) {
|
||||||
if(!getClass().getName().equals(event.excludeActivityClassName)) {
|
if (!getClass().getName().equals(event.excludeActivityClassName)) {
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -945,8 +960,8 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public Fragment getItem(int position) {
|
public Fragment getItem(int position) {
|
||||||
if(mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
if(position == 0) {
|
if (position == 0) {
|
||||||
PostFragment fragment = new PostFragment();
|
PostFragment fragment = new PostFragment();
|
||||||
Bundle bundle = new Bundle();
|
Bundle bundle = new Bundle();
|
||||||
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
|
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
|
||||||
@ -978,7 +993,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
bundle.putString(PostFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
|
bundle.putString(PostFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
|
||||||
fragment.setArguments(bundle);
|
fragment.setArguments(bundle);
|
||||||
return fragment;
|
return fragment;
|
||||||
} else if(position == 1) {
|
} else if (position == 1) {
|
||||||
PostFragment fragment = new PostFragment();
|
PostFragment fragment = new PostFragment();
|
||||||
Bundle bundle = new Bundle();
|
Bundle bundle = new Bundle();
|
||||||
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
|
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
|
||||||
@ -1002,9 +1017,8 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getCount()
|
public int getCount() {
|
||||||
{
|
if (mAccessToken == null) {
|
||||||
if(mAccessToken == null) {
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
return 3;
|
return 3;
|
||||||
@ -1012,7 +1026,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CharSequence getPageTitle(int position) {
|
public CharSequence getPageTitle(int position) {
|
||||||
if(mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
switch (position) {
|
switch (position) {
|
||||||
case 0:
|
case 0:
|
||||||
return "Popular";
|
return "Popular";
|
||||||
@ -1036,7 +1050,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
@Override
|
@Override
|
||||||
public Object instantiateItem(@NonNull ViewGroup container, int position) {
|
public Object instantiateItem(@NonNull ViewGroup container, int position) {
|
||||||
Fragment fragment = (Fragment) super.instantiateItem(container, position);
|
Fragment fragment = (Fragment) super.instantiateItem(container, position);
|
||||||
if(mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
switch (position) {
|
switch (position) {
|
||||||
case 0:
|
case 0:
|
||||||
popularPostFragment = (PostFragment) fragment;
|
popularPostFragment = (PostFragment) fragment;
|
||||||
@ -1060,7 +1074,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
}
|
}
|
||||||
|
|
||||||
boolean startLazyMode() {
|
boolean startLazyMode() {
|
||||||
if(mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
switch (viewPager.getCurrentItem()) {
|
switch (viewPager.getCurrentItem()) {
|
||||||
case 0:
|
case 0:
|
||||||
return ((FragmentCommunicator) popularPostFragment).startLazyMode();
|
return ((FragmentCommunicator) popularPostFragment).startLazyMode();
|
||||||
@ -1082,7 +1096,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
}
|
}
|
||||||
|
|
||||||
void stopLazyMode() {
|
void stopLazyMode() {
|
||||||
if(mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
switch (getCurrentLazyModeFragmentPosition()) {
|
switch (getCurrentLazyModeFragmentPosition()) {
|
||||||
case 0:
|
case 0:
|
||||||
((FragmentCommunicator) popularPostFragment).stopLazyMode();
|
((FragmentCommunicator) popularPostFragment).stopLazyMode();
|
||||||
@ -1107,7 +1121,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
}
|
}
|
||||||
|
|
||||||
void resumeLazyMode() {
|
void resumeLazyMode() {
|
||||||
if(mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
switch (getCurrentLazyModeFragmentPosition()) {
|
switch (getCurrentLazyModeFragmentPosition()) {
|
||||||
case 0:
|
case 0:
|
||||||
((FragmentCommunicator) popularPostFragment).resumeLazyMode(false);
|
((FragmentCommunicator) popularPostFragment).resumeLazyMode(false);
|
||||||
@ -1132,7 +1146,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
}
|
}
|
||||||
|
|
||||||
void pauseLazyMode() {
|
void pauseLazyMode() {
|
||||||
if(mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
switch (getCurrentLazyModeFragmentPosition()) {
|
switch (getCurrentLazyModeFragmentPosition()) {
|
||||||
case 0:
|
case 0:
|
||||||
((FragmentCommunicator) popularPostFragment).pauseLazyMode(false);
|
((FragmentCommunicator) popularPostFragment).pauseLazyMode(false);
|
||||||
@ -1155,24 +1169,24 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
}
|
}
|
||||||
|
|
||||||
int getCurrentLazyModeFragmentPosition() {
|
int getCurrentLazyModeFragmentPosition() {
|
||||||
if(mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
if(!isInLazyMode) {
|
if (!isInLazyMode) {
|
||||||
return -1;
|
return -1;
|
||||||
} else if(popularPostFragment != null && ((FragmentCommunicator) popularPostFragment).isInLazyMode()) {
|
} else if (popularPostFragment != null && ((FragmentCommunicator) popularPostFragment).isInLazyMode()) {
|
||||||
return 0;
|
return 0;
|
||||||
} else if(allPostFragment != null && ((FragmentCommunicator) allPostFragment).isInLazyMode()) {
|
} else if (allPostFragment != null && ((FragmentCommunicator) allPostFragment).isInLazyMode()) {
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(!isInLazyMode) {
|
if (!isInLazyMode) {
|
||||||
return -1;
|
return -1;
|
||||||
} else if(frontPagePostFragment != null && ((FragmentCommunicator) frontPagePostFragment).isInLazyMode()) {
|
} else if (frontPagePostFragment != null && ((FragmentCommunicator) frontPagePostFragment).isInLazyMode()) {
|
||||||
return 0;
|
return 0;
|
||||||
} else if(popularPostFragment != null && ((FragmentCommunicator) popularPostFragment).isInLazyMode()) {
|
} else if (popularPostFragment != null && ((FragmentCommunicator) popularPostFragment).isInLazyMode()) {
|
||||||
return 1;
|
return 1;
|
||||||
} else if(allPostFragment != null && ((FragmentCommunicator) allPostFragment).isInLazyMode()) {
|
} else if (allPostFragment != null && ((FragmentCommunicator) allPostFragment).isInLazyMode()) {
|
||||||
return 2;
|
return 2;
|
||||||
} else {
|
} else {
|
||||||
return -1;
|
return -1;
|
||||||
@ -1181,8 +1195,8 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
}
|
}
|
||||||
|
|
||||||
void changeSortType(String sortType) {
|
void changeSortType(String sortType) {
|
||||||
if(mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
if(viewPager.getCurrentItem() == 0) {
|
if (viewPager.getCurrentItem() == 0) {
|
||||||
popularPostFragment.changeSortType(sortType);
|
popularPostFragment.changeSortType(sortType);
|
||||||
} else {
|
} else {
|
||||||
allPostFragment.changeSortType(sortType);
|
allPostFragment.changeSortType(sortType);
|
||||||
@ -1202,30 +1216,30 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void refresh() {
|
public void refresh() {
|
||||||
if(mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
if(viewPager.getCurrentItem() == 0) {
|
if (viewPager.getCurrentItem() == 0) {
|
||||||
if(popularPostFragment != null) {
|
if (popularPostFragment != null) {
|
||||||
((FragmentCommunicator) popularPostFragment).refresh();
|
((FragmentCommunicator) popularPostFragment).refresh();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(allPostFragment != null) {
|
if (allPostFragment != null) {
|
||||||
((FragmentCommunicator) allPostFragment).refresh();
|
((FragmentCommunicator) allPostFragment).refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
switch (viewPager.getCurrentItem()) {
|
switch (viewPager.getCurrentItem()) {
|
||||||
case 0:
|
case 0:
|
||||||
if(frontPagePostFragment != null) {
|
if (frontPagePostFragment != null) {
|
||||||
((FragmentCommunicator) frontPagePostFragment).refresh();
|
((FragmentCommunicator) frontPagePostFragment).refresh();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
if(popularPostFragment != null) {
|
if (popularPostFragment != null) {
|
||||||
((FragmentCommunicator) popularPostFragment).refresh();
|
((FragmentCommunicator) popularPostFragment).refresh();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(allPostFragment != null) {
|
if (allPostFragment != null) {
|
||||||
((FragmentCommunicator) allPostFragment).refresh();
|
((FragmentCommunicator) allPostFragment).refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1233,13 +1247,13 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
|||||||
}
|
}
|
||||||
|
|
||||||
void changeNSFW(boolean nsfw) {
|
void changeNSFW(boolean nsfw) {
|
||||||
if(frontPagePostFragment != null) {
|
if (frontPagePostFragment != null) {
|
||||||
frontPagePostFragment.changeNSFW(nsfw);
|
frontPagePostFragment.changeNSFW(nsfw);
|
||||||
}
|
}
|
||||||
if(popularPostFragment != null) {
|
if (popularPostFragment != null) {
|
||||||
popularPostFragment.changeNSFW(nsfw);
|
popularPostFragment.changeNSFW(nsfw);
|
||||||
}
|
}
|
||||||
if(allPostFragment != null) {
|
if (allPostFragment != null) {
|
||||||
allPostFragment.changeNSFW(nsfw);
|
allPostFragment.changeNSFW(nsfw);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -91,21 +91,47 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
private static final int PICK_IMAGE_REQUEST_CODE = 1;
|
private static final int PICK_IMAGE_REQUEST_CODE = 1;
|
||||||
private static final int CAPTURE_IMAGE_REQUEST_CODE = 2;
|
private static final int CAPTURE_IMAGE_REQUEST_CODE = 2;
|
||||||
|
|
||||||
@BindView(R.id.coordinator_layout_post_image_activity) CoordinatorLayout coordinatorLayout;
|
@BindView(R.id.coordinator_layout_post_image_activity)
|
||||||
@BindView(R.id.toolbar_post_image_activity) Toolbar toolbar;
|
CoordinatorLayout coordinatorLayout;
|
||||||
@BindView(R.id.subreddit_icon_gif_image_view_post_image_activity) GifImageView iconGifImageView;
|
@BindView(R.id.toolbar_post_image_activity)
|
||||||
@BindView(R.id.subreddit_name_text_view_post_image_activity) TextView subredditNameTextView;
|
Toolbar toolbar;
|
||||||
@BindView(R.id.rules_button_post_image_activity) Button rulesButton;
|
@BindView(R.id.subreddit_icon_gif_image_view_post_image_activity)
|
||||||
@BindView(R.id.flair_custom_text_view_post_image_activity) CustomTextView flairTextView;
|
GifImageView iconGifImageView;
|
||||||
@BindView(R.id.spoiler_custom_text_view_post_image_activity) CustomTextView spoilerTextView;
|
@BindView(R.id.subreddit_name_text_view_post_image_activity)
|
||||||
@BindView(R.id.nsfw_custom_text_view_post_image_activity) CustomTextView nsfwTextView;
|
TextView subredditNameTextView;
|
||||||
@BindView(R.id.post_title_edit_text_post_image_activity) EditText titleEditText;
|
@BindView(R.id.rules_button_post_image_activity)
|
||||||
@BindView(R.id.select_image_constraint_layout_post_image_activity) ConstraintLayout constraintLayout;
|
Button rulesButton;
|
||||||
@BindView(R.id.capture_fab_post_image_activity) FloatingActionButton captureFab;
|
@BindView(R.id.flair_custom_text_view_post_image_activity)
|
||||||
@BindView(R.id.select_from_library_fab_post_image_activity) FloatingActionButton selectFromLibraryFab;
|
CustomTextView flairTextView;
|
||||||
@BindView(R.id.select_again_text_view_post_image_activity) TextView selectAgainTextView;
|
@BindView(R.id.spoiler_custom_text_view_post_image_activity)
|
||||||
@BindView(R.id.image_view_post_image_activity) ImageView imageView;
|
CustomTextView spoilerTextView;
|
||||||
|
@BindView(R.id.nsfw_custom_text_view_post_image_activity)
|
||||||
|
CustomTextView nsfwTextView;
|
||||||
|
@BindView(R.id.post_title_edit_text_post_image_activity)
|
||||||
|
EditText titleEditText;
|
||||||
|
@BindView(R.id.select_image_constraint_layout_post_image_activity)
|
||||||
|
ConstraintLayout constraintLayout;
|
||||||
|
@BindView(R.id.capture_fab_post_image_activity)
|
||||||
|
FloatingActionButton captureFab;
|
||||||
|
@BindView(R.id.select_from_library_fab_post_image_activity)
|
||||||
|
FloatingActionButton selectFromLibraryFab;
|
||||||
|
@BindView(R.id.select_again_text_view_post_image_activity)
|
||||||
|
TextView selectAgainTextView;
|
||||||
|
@BindView(R.id.image_view_post_image_activity)
|
||||||
|
ImageView imageView;
|
||||||
|
@Inject
|
||||||
|
@Named("no_oauth")
|
||||||
|
Retrofit mRetrofit;
|
||||||
|
@Inject
|
||||||
|
@Named("oauth")
|
||||||
|
Retrofit mOauthRetrofit;
|
||||||
|
@Inject
|
||||||
|
@Named("upload_media")
|
||||||
|
Retrofit mUploadMediaRetrofit;
|
||||||
|
@Inject
|
||||||
|
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
|
@Inject
|
||||||
|
SharedPreferences mSharedPreferences;
|
||||||
private boolean mNullAccessToken = false;
|
private boolean mNullAccessToken = false;
|
||||||
private String mAccessToken;
|
private String mAccessToken;
|
||||||
private String mAccountName;
|
private String mAccountName;
|
||||||
@ -116,34 +142,14 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
private boolean loadSubredditIconSuccessful = true;
|
private boolean loadSubredditIconSuccessful = true;
|
||||||
private boolean isPosting;
|
private boolean isPosting;
|
||||||
private Uri imageUri;
|
private Uri imageUri;
|
||||||
|
|
||||||
private Flair flair;
|
private Flair flair;
|
||||||
private boolean isSpoiler = false;
|
private boolean isSpoiler = false;
|
||||||
private boolean isNSFW = false;
|
private boolean isNSFW = false;
|
||||||
|
|
||||||
private Menu mMemu;
|
private Menu mMemu;
|
||||||
private RequestManager mGlide;
|
private RequestManager mGlide;
|
||||||
private FlairBottomSheetFragment flairSelectionBottomSheetFragment;
|
private FlairBottomSheetFragment flairSelectionBottomSheetFragment;
|
||||||
private Snackbar mPostingSnackbar;
|
private Snackbar mPostingSnackbar;
|
||||||
|
|
||||||
@Inject
|
|
||||||
@Named("no_oauth")
|
|
||||||
Retrofit mRetrofit;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
@Named("oauth")
|
|
||||||
Retrofit mOauthRetrofit;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
@Named("upload_media")
|
|
||||||
Retrofit mUploadMediaRetrofit;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
SharedPreferences mSharedPreferences;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -165,9 +171,9 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
|
|
||||||
EventBus.getDefault().register(this);
|
EventBus.getDefault().register(this);
|
||||||
|
|
||||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
Window window = getWindow();
|
Window window = getWindow();
|
||||||
if((getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
if ((getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
window.setNavigationBarColor(ContextCompat.getColor(this, R.color.navBarColor));
|
window.setNavigationBarColor(ContextCompat.getColor(this, R.color.navBarColor));
|
||||||
@ -183,7 +189,7 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(systemDefault) {
|
if (systemDefault) {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
||||||
@ -198,12 +204,12 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
|
|
||||||
mPostingSnackbar = Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_INDEFINITE);
|
mPostingSnackbar = Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_INDEFINITE);
|
||||||
|
|
||||||
if(savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
|
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
|
||||||
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
|
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
|
||||||
mAccountName = savedInstanceState.getString(ACCOUNT_NAME_STATE);
|
mAccountName = savedInstanceState.getString(ACCOUNT_NAME_STATE);
|
||||||
|
|
||||||
if(!mNullAccessToken && mAccessToken == null) {
|
if (!mNullAccessToken && mAccessToken == null) {
|
||||||
getCurrentAccount();
|
getCurrentAccount();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -217,33 +223,33 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
isSpoiler = savedInstanceState.getBoolean(IS_SPOILER_STATE);
|
isSpoiler = savedInstanceState.getBoolean(IS_SPOILER_STATE);
|
||||||
isNSFW = savedInstanceState.getBoolean(IS_NSFW_STATE);
|
isNSFW = savedInstanceState.getBoolean(IS_NSFW_STATE);
|
||||||
|
|
||||||
if(savedInstanceState.getString(IMAGE_URI_STATE) != null) {
|
if (savedInstanceState.getString(IMAGE_URI_STATE) != null) {
|
||||||
imageUri = Uri.parse(savedInstanceState.getString(IMAGE_URI_STATE));
|
imageUri = Uri.parse(savedInstanceState.getString(IMAGE_URI_STATE));
|
||||||
loadImage();
|
loadImage();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(subredditName != null) {
|
if (subredditName != null) {
|
||||||
subredditNameTextView.setTextColor(getResources().getColor(R.color.primaryTextColor));
|
subredditNameTextView.setTextColor(getResources().getColor(R.color.primaryTextColor));
|
||||||
subredditNameTextView.setText(subredditName);
|
subredditNameTextView.setText(subredditName);
|
||||||
flairTextView.setVisibility(View.VISIBLE);
|
flairTextView.setVisibility(View.VISIBLE);
|
||||||
if(!loadSubredditIconSuccessful) {
|
if (!loadSubredditIconSuccessful) {
|
||||||
loadSubredditIcon();
|
loadSubredditIcon();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
displaySubredditIcon();
|
displaySubredditIcon();
|
||||||
|
|
||||||
if(isPosting) {
|
if (isPosting) {
|
||||||
mPostingSnackbar.show();
|
mPostingSnackbar.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(flair != null) {
|
if (flair != null) {
|
||||||
flairTextView.setText(flair.getText());
|
flairTextView.setText(flair.getText());
|
||||||
flairTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark));
|
flairTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark));
|
||||||
}
|
}
|
||||||
if(isSpoiler) {
|
if (isSpoiler) {
|
||||||
spoilerTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark));
|
spoilerTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark));
|
||||||
}
|
}
|
||||||
if(isNSFW) {
|
if (isNSFW) {
|
||||||
nsfwTextView.setBackgroundColor(getResources().getColor(R.color.colorAccent));
|
nsfwTextView.setBackgroundColor(getResources().getColor(R.color.colorAccent));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -251,7 +257,7 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
|
|
||||||
isPosting = false;
|
isPosting = false;
|
||||||
|
|
||||||
if(getIntent().hasExtra(EXTRA_SUBREDDIT_NAME)) {
|
if (getIntent().hasExtra(EXTRA_SUBREDDIT_NAME)) {
|
||||||
loadSubredditIconSuccessful = false;
|
loadSubredditIconSuccessful = false;
|
||||||
subredditName = getIntent().getStringExtra(EXTRA_SUBREDDIT_NAME);
|
subredditName = getIntent().getStringExtra(EXTRA_SUBREDDIT_NAME);
|
||||||
subredditSelected = true;
|
subredditSelected = true;
|
||||||
@ -265,7 +271,7 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
}
|
}
|
||||||
|
|
||||||
imageUri = getIntent().getData();
|
imageUri = getIntent().getData();
|
||||||
if(imageUri != null) {
|
if (imageUri != null) {
|
||||||
loadImage();
|
loadImage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -281,11 +287,11 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
});
|
});
|
||||||
|
|
||||||
rulesButton.setOnClickListener(view -> {
|
rulesButton.setOnClickListener(view -> {
|
||||||
if(subredditName == null) {
|
if (subredditName == null) {
|
||||||
Snackbar.make(coordinatorLayout, R.string.select_a_subreddit, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, R.string.select_a_subreddit, Snackbar.LENGTH_SHORT).show();
|
||||||
} else {
|
} else {
|
||||||
Intent intent = new Intent(this, RulesActivity.class);
|
Intent intent = new Intent(this, RulesActivity.class);
|
||||||
if(subredditIsUser) {
|
if (subredditIsUser) {
|
||||||
intent.putExtra(RulesActivity.EXTRA_SUBREDDIT_NAME, "u_" + subredditName);
|
intent.putExtra(RulesActivity.EXTRA_SUBREDDIT_NAME, "u_" + subredditName);
|
||||||
} else {
|
} else {
|
||||||
intent.putExtra(RulesActivity.EXTRA_SUBREDDIT_NAME, subredditName);
|
intent.putExtra(RulesActivity.EXTRA_SUBREDDIT_NAME, subredditName);
|
||||||
@ -295,7 +301,7 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
});
|
});
|
||||||
|
|
||||||
flairTextView.setOnClickListener(view -> {
|
flairTextView.setOnClickListener(view -> {
|
||||||
if(flair == null) {
|
if (flair == null) {
|
||||||
flairSelectionBottomSheetFragment = new FlairBottomSheetFragment();
|
flairSelectionBottomSheetFragment = new FlairBottomSheetFragment();
|
||||||
Bundle bundle = new Bundle();
|
Bundle bundle = new Bundle();
|
||||||
bundle.putString(FlairBottomSheetFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
|
bundle.putString(FlairBottomSheetFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
|
||||||
@ -310,7 +316,7 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
});
|
});
|
||||||
|
|
||||||
spoilerTextView.setOnClickListener(view -> {
|
spoilerTextView.setOnClickListener(view -> {
|
||||||
if(!isSpoiler) {
|
if (!isSpoiler) {
|
||||||
spoilerTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark));
|
spoilerTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark));
|
||||||
isSpoiler = true;
|
isSpoiler = true;
|
||||||
} else {
|
} else {
|
||||||
@ -320,7 +326,7 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
});
|
});
|
||||||
|
|
||||||
nsfwTextView.setOnClickListener(view -> {
|
nsfwTextView.setOnClickListener(view -> {
|
||||||
if(!isNSFW) {
|
if (!isNSFW) {
|
||||||
nsfwTextView.setBackgroundColor(getResources().getColor(R.color.colorAccent));
|
nsfwTextView.setBackgroundColor(getResources().getColor(R.color.colorAccent));
|
||||||
isNSFW = true;
|
isNSFW = true;
|
||||||
} else {
|
} else {
|
||||||
@ -331,7 +337,7 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
|
|
||||||
captureFab.setOnClickListener(view -> {
|
captureFab.setOnClickListener(view -> {
|
||||||
Intent pictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
|
Intent pictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
|
||||||
if(pictureIntent.resolveActivity(getPackageManager()) != null) {
|
if (pictureIntent.resolveActivity(getPackageManager()) != null) {
|
||||||
try {
|
try {
|
||||||
imageUri = FileProvider.getUriForFile(this, "ml.docilealligator.infinityforreddit.provider",
|
imageUri = FileProvider.getUriForFile(this, "ml.docilealligator.infinityforreddit.provider",
|
||||||
File.createTempFile("temp_img", ".jpg", getExternalFilesDir(Environment.DIRECTORY_PICTURES)));
|
File.createTempFile("temp_img", ".jpg", getExternalFilesDir(Environment.DIRECTORY_PICTURES)));
|
||||||
@ -349,7 +355,7 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
Intent intent = new Intent();
|
Intent intent = new Intent();
|
||||||
intent.setType("image/*");
|
intent.setType("image/*");
|
||||||
intent.setAction(Intent.ACTION_GET_CONTENT);
|
intent.setAction(Intent.ACTION_GET_CONTENT);
|
||||||
startActivityForResult(Intent.createChooser(intent,getResources().getString(R.string.select_from_gallery)), PICK_IMAGE_REQUEST_CODE);
|
startActivityForResult(Intent.createChooser(intent, getResources().getString(R.string.select_from_gallery)), PICK_IMAGE_REQUEST_CODE);
|
||||||
});
|
});
|
||||||
|
|
||||||
selectAgainTextView.setOnClickListener(view -> {
|
selectAgainTextView.setOnClickListener(view -> {
|
||||||
@ -363,7 +369,7 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
|
|
||||||
private void getCurrentAccount() {
|
private void getCurrentAccount() {
|
||||||
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
||||||
if(account == null) {
|
if (account == null) {
|
||||||
mNullAccessToken = true;
|
mNullAccessToken = true;
|
||||||
} else {
|
} else {
|
||||||
mAccessToken = account.getAccessToken();
|
mAccessToken = account.getAccessToken();
|
||||||
@ -380,7 +386,7 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void displaySubredditIcon() {
|
private void displaySubredditIcon() {
|
||||||
if(iconUrl != null && !iconUrl.equals("")) {
|
if (iconUrl != null && !iconUrl.equals("")) {
|
||||||
mGlide.load(iconUrl)
|
mGlide.load(iconUrl)
|
||||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
||||||
.error(mGlide.load(R.drawable.subreddit_default_icon)
|
.error(mGlide.load(R.drawable.subreddit_default_icon)
|
||||||
@ -415,7 +421,7 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
getMenuInflater().inflate(R.menu.post_image_activity, menu);
|
getMenuInflater().inflate(R.menu.post_image_activity, menu);
|
||||||
mMemu = menu;
|
mMemu = menu;
|
||||||
if(isPosting) {
|
if (isPosting) {
|
||||||
mMemu.findItem(R.id.action_send_post_image_activity).setEnabled(false);
|
mMemu.findItem(R.id.action_send_post_image_activity).setEnabled(false);
|
||||||
mMemu.findItem(R.id.action_send_post_image_activity).getIcon().setAlpha(130);
|
mMemu.findItem(R.id.action_send_post_image_activity).getIcon().setAlpha(130);
|
||||||
}
|
}
|
||||||
@ -426,11 +432,11 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||||
switch (item.getItemId()) {
|
switch (item.getItemId()) {
|
||||||
case android.R.id.home:
|
case android.R.id.home:
|
||||||
if(isPosting) {
|
if (isPosting) {
|
||||||
promptAlertDialog(R.string.exit_when_submit_post, R.string.exit_when_submit_post_detail);
|
promptAlertDialog(R.string.exit_when_submit_post, R.string.exit_when_submit_post_detail);
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
if(!titleEditText.getText().toString().equals("") || imageUri != null) {
|
if (!titleEditText.getText().toString().equals("") || imageUri != null) {
|
||||||
promptAlertDialog(R.string.discard_post, R.string.discard_post_detail);
|
promptAlertDialog(R.string.discard_post, R.string.discard_post_detail);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -438,17 +444,17 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
finish();
|
finish();
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_send_post_image_activity:
|
case R.id.action_send_post_image_activity:
|
||||||
if(!subredditSelected) {
|
if (!subredditSelected) {
|
||||||
Snackbar.make(coordinatorLayout, R.string.select_a_subreddit, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, R.string.select_a_subreddit, Snackbar.LENGTH_SHORT).show();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(titleEditText.getText() == null || titleEditText.getText().toString().equals("")) {
|
if (titleEditText.getText() == null || titleEditText.getText().toString().equals("")) {
|
||||||
Snackbar.make(coordinatorLayout, R.string.title_required, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, R.string.title_required, Snackbar.LENGTH_SHORT).show();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(imageUri == null) {
|
if (imageUri == null) {
|
||||||
Snackbar.make(coordinatorLayout, R.string.select_an_image, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, R.string.select_an_image, Snackbar.LENGTH_SHORT).show();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -461,7 +467,7 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
mPostingSnackbar.show();
|
mPostingSnackbar.show();
|
||||||
|
|
||||||
String subredditName;
|
String subredditName;
|
||||||
if(subredditIsUser) {
|
if (subredditIsUser) {
|
||||||
subredditName = "u_" + subredditNameTextView.getText().toString();
|
subredditName = "u_" + subredditNameTextView.getText().toString();
|
||||||
} else {
|
} else {
|
||||||
subredditName = subredditNameTextView.getText().toString();
|
subredditName = subredditNameTextView.getText().toString();
|
||||||
@ -478,7 +484,7 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
intent.putExtra(SubmitPostService.EXTRA_POST_TYPE, SubmitPostService.EXTRA_POST_TYPE_IMAGE);
|
intent.putExtra(SubmitPostService.EXTRA_POST_TYPE, SubmitPostService.EXTRA_POST_TYPE_IMAGE);
|
||||||
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||||
|
|
||||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
startForegroundService(intent);
|
startForegroundService(intent);
|
||||||
} else {
|
} else {
|
||||||
startService(intent);
|
startService(intent);
|
||||||
@ -492,10 +498,10 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBackPressed() {
|
public void onBackPressed() {
|
||||||
if(isPosting) {
|
if (isPosting) {
|
||||||
promptAlertDialog(R.string.exit_when_submit_post, R.string.exit_when_submit_post_detail);
|
promptAlertDialog(R.string.exit_when_submit_post, R.string.exit_when_submit_post_detail);
|
||||||
} else {
|
} else {
|
||||||
if(!titleEditText.getText().toString().equals("") || imageUri != null) {
|
if (!titleEditText.getText().toString().equals("") || imageUri != null) {
|
||||||
promptAlertDialog(R.string.discard_post, R.string.discard_post_detail);
|
promptAlertDialog(R.string.discard_post, R.string.discard_post_detail);
|
||||||
} else {
|
} else {
|
||||||
finish();
|
finish();
|
||||||
@ -510,7 +516,7 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
outState.putString(SUBREDDIT_ICON_STATE, iconUrl);
|
outState.putString(SUBREDDIT_ICON_STATE, iconUrl);
|
||||||
outState.putBoolean(SUBREDDIT_SELECTED_STATE, subredditSelected);
|
outState.putBoolean(SUBREDDIT_SELECTED_STATE, subredditSelected);
|
||||||
outState.putBoolean(SUBREDDIT_IS_USER_STATE, subredditIsUser);
|
outState.putBoolean(SUBREDDIT_IS_USER_STATE, subredditIsUser);
|
||||||
if(imageUri != null) {
|
if (imageUri != null) {
|
||||||
outState.putString(IMAGE_URI_STATE, imageUri.toString());
|
outState.putString(IMAGE_URI_STATE, imageUri.toString());
|
||||||
}
|
}
|
||||||
outState.putBoolean(LOAD_SUBREDDIT_ICON_STATE, loadSubredditIconSuccessful);
|
outState.putBoolean(LOAD_SUBREDDIT_ICON_STATE, loadSubredditIconSuccessful);
|
||||||
@ -526,8 +532,8 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
@Override
|
@Override
|
||||||
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
||||||
super.onActivityResult(requestCode, resultCode, data);
|
super.onActivityResult(requestCode, resultCode, data);
|
||||||
if(requestCode == SUBREDDIT_SELECTION_REQUEST_CODE) {
|
if (requestCode == SUBREDDIT_SELECTION_REQUEST_CODE) {
|
||||||
if(resultCode == RESULT_OK) {
|
if (resultCode == RESULT_OK) {
|
||||||
subredditName = data.getExtras().getString(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_NAME);
|
subredditName = data.getExtras().getString(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_NAME);
|
||||||
iconUrl = data.getExtras().getString(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_ICON_URL);
|
iconUrl = data.getExtras().getString(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_ICON_URL);
|
||||||
subredditSelected = true;
|
subredditSelected = true;
|
||||||
@ -542,9 +548,9 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
flairTextView.setText(getString(R.string.flair));
|
flairTextView.setText(getString(R.string.flair));
|
||||||
flair = null;
|
flair = null;
|
||||||
}
|
}
|
||||||
} else if(requestCode == PICK_IMAGE_REQUEST_CODE) {
|
} else if (requestCode == PICK_IMAGE_REQUEST_CODE) {
|
||||||
if(resultCode == RESULT_OK) {
|
if (resultCode == RESULT_OK) {
|
||||||
if(data == null) {
|
if (data == null) {
|
||||||
Snackbar.make(coordinatorLayout, R.string.error_getting_image, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, R.string.error_getting_image, Snackbar.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -552,8 +558,8 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
imageUri = data.getData();
|
imageUri = data.getData();
|
||||||
loadImage();
|
loadImage();
|
||||||
}
|
}
|
||||||
} else if(requestCode == CAPTURE_IMAGE_REQUEST_CODE) {
|
} else if (requestCode == CAPTURE_IMAGE_REQUEST_CODE) {
|
||||||
if(resultCode == RESULT_OK) {
|
if (resultCode == RESULT_OK) {
|
||||||
loadImage();
|
loadImage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -581,7 +587,7 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
public void onSubmitImagePostEvent(SubmitImagePostEvent submitImagePostEvent) {
|
public void onSubmitImagePostEvent(SubmitImagePostEvent submitImagePostEvent) {
|
||||||
isPosting = false;
|
isPosting = false;
|
||||||
mPostingSnackbar.dismiss();
|
mPostingSnackbar.dismiss();
|
||||||
if(submitImagePostEvent.postSuccess) {
|
if (submitImagePostEvent.postSuccess) {
|
||||||
Intent intent = new Intent(PostImageActivity.this, ViewUserDetailActivity.class);
|
Intent intent = new Intent(PostImageActivity.this, ViewUserDetailActivity.class);
|
||||||
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, mAccountName);
|
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, mAccountName);
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
|
@ -79,17 +79,36 @@ public class PostLinkActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
|
|
||||||
private static final int SUBREDDIT_SELECTION_REQUEST_CODE = 0;
|
private static final int SUBREDDIT_SELECTION_REQUEST_CODE = 0;
|
||||||
|
|
||||||
@BindView(R.id.coordinator_layout_post_link_activity) CoordinatorLayout coordinatorLayout;
|
@BindView(R.id.coordinator_layout_post_link_activity)
|
||||||
@BindView(R.id.toolbar_post_link_activity) Toolbar toolbar;
|
CoordinatorLayout coordinatorLayout;
|
||||||
@BindView(R.id.subreddit_icon_gif_image_view_post_link_activity) GifImageView iconGifImageView;
|
@BindView(R.id.toolbar_post_link_activity)
|
||||||
@BindView(R.id.subreddit_name_text_view_post_link_activity) TextView subredditNameTextView;
|
Toolbar toolbar;
|
||||||
@BindView(R.id.rules_button_post_link_activity) Button rulesButton;
|
@BindView(R.id.subreddit_icon_gif_image_view_post_link_activity)
|
||||||
@BindView(R.id.flair_custom_text_view_post_link_activity) CustomTextView flairTextView;
|
GifImageView iconGifImageView;
|
||||||
@BindView(R.id.spoiler_custom_text_view_post_link_activity) CustomTextView spoilerTextView;
|
@BindView(R.id.subreddit_name_text_view_post_link_activity)
|
||||||
@BindView(R.id.nsfw_custom_text_view_post_link_activity) CustomTextView nsfwTextView;
|
TextView subredditNameTextView;
|
||||||
@BindView(R.id.post_title_edit_text_post_link_activity) EditText titleEditText;
|
@BindView(R.id.rules_button_post_link_activity)
|
||||||
@BindView(R.id.post_link_edit_text_post_link_activity) EditText contentEditText;
|
Button rulesButton;
|
||||||
|
@BindView(R.id.flair_custom_text_view_post_link_activity)
|
||||||
|
CustomTextView flairTextView;
|
||||||
|
@BindView(R.id.spoiler_custom_text_view_post_link_activity)
|
||||||
|
CustomTextView spoilerTextView;
|
||||||
|
@BindView(R.id.nsfw_custom_text_view_post_link_activity)
|
||||||
|
CustomTextView nsfwTextView;
|
||||||
|
@BindView(R.id.post_title_edit_text_post_link_activity)
|
||||||
|
EditText titleEditText;
|
||||||
|
@BindView(R.id.post_link_edit_text_post_link_activity)
|
||||||
|
EditText contentEditText;
|
||||||
|
@Inject
|
||||||
|
@Named("no_oauth")
|
||||||
|
Retrofit mRetrofit;
|
||||||
|
@Inject
|
||||||
|
@Named("oauth")
|
||||||
|
Retrofit mOauthRetrofit;
|
||||||
|
@Inject
|
||||||
|
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
|
@Inject
|
||||||
|
SharedPreferences mSharedPreferences;
|
||||||
private boolean mNullAccessToken = false;
|
private boolean mNullAccessToken = false;
|
||||||
private String mAccessToken;
|
private String mAccessToken;
|
||||||
private String iconUrl;
|
private String iconUrl;
|
||||||
@ -98,30 +117,14 @@ public class PostLinkActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
private boolean subredditIsUser;
|
private boolean subredditIsUser;
|
||||||
private boolean loadSubredditIconSuccessful = true;
|
private boolean loadSubredditIconSuccessful = true;
|
||||||
private boolean isPosting;
|
private boolean isPosting;
|
||||||
|
|
||||||
private Flair flair;
|
private Flair flair;
|
||||||
private boolean isSpoiler = false;
|
private boolean isSpoiler = false;
|
||||||
private boolean isNSFW = false;
|
private boolean isNSFW = false;
|
||||||
|
|
||||||
private Menu mMemu;
|
private Menu mMemu;
|
||||||
private RequestManager mGlide;
|
private RequestManager mGlide;
|
||||||
private FlairBottomSheetFragment flairSelectionBottomSheetFragment;
|
private FlairBottomSheetFragment flairSelectionBottomSheetFragment;
|
||||||
private Snackbar mPostingSnackbar;
|
private Snackbar mPostingSnackbar;
|
||||||
|
|
||||||
@Inject
|
|
||||||
@Named("no_oauth")
|
|
||||||
Retrofit mRetrofit;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
@Named("oauth")
|
|
||||||
Retrofit mOauthRetrofit;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
SharedPreferences mSharedPreferences;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -143,9 +146,9 @@ public class PostLinkActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
|
|
||||||
EventBus.getDefault().register(this);
|
EventBus.getDefault().register(this);
|
||||||
|
|
||||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
Window window = getWindow();
|
Window window = getWindow();
|
||||||
if((getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
if ((getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
window.setNavigationBarColor(ContextCompat.getColor(this, R.color.navBarColor));
|
window.setNavigationBarColor(ContextCompat.getColor(this, R.color.navBarColor));
|
||||||
@ -161,7 +164,7 @@ public class PostLinkActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(systemDefault) {
|
if (systemDefault) {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
||||||
@ -176,11 +179,11 @@ public class PostLinkActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
|
|
||||||
mPostingSnackbar = Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_INDEFINITE);
|
mPostingSnackbar = Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_INDEFINITE);
|
||||||
|
|
||||||
if(savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
|
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
|
||||||
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
|
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
|
||||||
|
|
||||||
if(!mNullAccessToken && mAccessToken == null) {
|
if (!mNullAccessToken && mAccessToken == null) {
|
||||||
getCurrentAccount();
|
getCurrentAccount();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -194,28 +197,28 @@ public class PostLinkActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
isSpoiler = savedInstanceState.getBoolean(IS_SPOILER_STATE);
|
isSpoiler = savedInstanceState.getBoolean(IS_SPOILER_STATE);
|
||||||
isNSFW = savedInstanceState.getBoolean(IS_NSFW_STATE);
|
isNSFW = savedInstanceState.getBoolean(IS_NSFW_STATE);
|
||||||
|
|
||||||
if(subredditName != null) {
|
if (subredditName != null) {
|
||||||
subredditNameTextView.setTextColor(getResources().getColor(R.color.primaryTextColor));
|
subredditNameTextView.setTextColor(getResources().getColor(R.color.primaryTextColor));
|
||||||
subredditNameTextView.setText(subredditName);
|
subredditNameTextView.setText(subredditName);
|
||||||
flairTextView.setVisibility(View.VISIBLE);
|
flairTextView.setVisibility(View.VISIBLE);
|
||||||
if(!loadSubredditIconSuccessful) {
|
if (!loadSubredditIconSuccessful) {
|
||||||
loadSubredditIcon();
|
loadSubredditIcon();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
displaySubredditIcon();
|
displaySubredditIcon();
|
||||||
|
|
||||||
if(isPosting) {
|
if (isPosting) {
|
||||||
mPostingSnackbar.show();
|
mPostingSnackbar.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(flair != null) {
|
if (flair != null) {
|
||||||
flairTextView.setText(flair.getText());
|
flairTextView.setText(flair.getText());
|
||||||
flairTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark));
|
flairTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark));
|
||||||
}
|
}
|
||||||
if(isSpoiler) {
|
if (isSpoiler) {
|
||||||
spoilerTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark));
|
spoilerTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark));
|
||||||
}
|
}
|
||||||
if(isNSFW) {
|
if (isNSFW) {
|
||||||
nsfwTextView.setBackgroundColor(getResources().getColor(R.color.colorAccent));
|
nsfwTextView.setBackgroundColor(getResources().getColor(R.color.colorAccent));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -223,7 +226,7 @@ public class PostLinkActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
|
|
||||||
isPosting = false;
|
isPosting = false;
|
||||||
|
|
||||||
if(getIntent().hasExtra(EXTRA_SUBREDDIT_NAME)) {
|
if (getIntent().hasExtra(EXTRA_SUBREDDIT_NAME)) {
|
||||||
loadSubredditIconSuccessful = false;
|
loadSubredditIconSuccessful = false;
|
||||||
subredditName = getIntent().getStringExtra(EXTRA_SUBREDDIT_NAME);
|
subredditName = getIntent().getStringExtra(EXTRA_SUBREDDIT_NAME);
|
||||||
subredditSelected = true;
|
subredditSelected = true;
|
||||||
@ -238,7 +241,7 @@ public class PostLinkActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
}
|
}
|
||||||
|
|
||||||
String link = getIntent().getStringExtra(EXTRA_LINK);
|
String link = getIntent().getStringExtra(EXTRA_LINK);
|
||||||
if(link != null) {
|
if (link != null) {
|
||||||
contentEditText.setText(link);
|
contentEditText.setText(link);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -254,11 +257,11 @@ public class PostLinkActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
});
|
});
|
||||||
|
|
||||||
rulesButton.setOnClickListener(view -> {
|
rulesButton.setOnClickListener(view -> {
|
||||||
if(subredditName == null) {
|
if (subredditName == null) {
|
||||||
Snackbar.make(coordinatorLayout, R.string.select_a_subreddit, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, R.string.select_a_subreddit, Snackbar.LENGTH_SHORT).show();
|
||||||
} else {
|
} else {
|
||||||
Intent intent = new Intent(this, RulesActivity.class);
|
Intent intent = new Intent(this, RulesActivity.class);
|
||||||
if(subredditIsUser) {
|
if (subredditIsUser) {
|
||||||
intent.putExtra(RulesActivity.EXTRA_SUBREDDIT_NAME, "u_" + subredditName);
|
intent.putExtra(RulesActivity.EXTRA_SUBREDDIT_NAME, "u_" + subredditName);
|
||||||
} else {
|
} else {
|
||||||
intent.putExtra(RulesActivity.EXTRA_SUBREDDIT_NAME, subredditName);
|
intent.putExtra(RulesActivity.EXTRA_SUBREDDIT_NAME, subredditName);
|
||||||
@ -268,7 +271,7 @@ public class PostLinkActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
});
|
});
|
||||||
|
|
||||||
flairTextView.setOnClickListener(view -> {
|
flairTextView.setOnClickListener(view -> {
|
||||||
if(flair == null) {
|
if (flair == null) {
|
||||||
flairSelectionBottomSheetFragment = new FlairBottomSheetFragment();
|
flairSelectionBottomSheetFragment = new FlairBottomSheetFragment();
|
||||||
Bundle bundle = new Bundle();
|
Bundle bundle = new Bundle();
|
||||||
bundle.putString(FlairBottomSheetFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
|
bundle.putString(FlairBottomSheetFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
|
||||||
@ -283,7 +286,7 @@ public class PostLinkActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
});
|
});
|
||||||
|
|
||||||
spoilerTextView.setOnClickListener(view -> {
|
spoilerTextView.setOnClickListener(view -> {
|
||||||
if(!isSpoiler) {
|
if (!isSpoiler) {
|
||||||
spoilerTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark));
|
spoilerTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark));
|
||||||
isSpoiler = true;
|
isSpoiler = true;
|
||||||
} else {
|
} else {
|
||||||
@ -293,7 +296,7 @@ public class PostLinkActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
});
|
});
|
||||||
|
|
||||||
nsfwTextView.setOnClickListener(view -> {
|
nsfwTextView.setOnClickListener(view -> {
|
||||||
if(!isNSFW) {
|
if (!isNSFW) {
|
||||||
nsfwTextView.setBackgroundColor(getResources().getColor(R.color.colorAccent));
|
nsfwTextView.setBackgroundColor(getResources().getColor(R.color.colorAccent));
|
||||||
isNSFW = true;
|
isNSFW = true;
|
||||||
} else {
|
} else {
|
||||||
@ -305,7 +308,7 @@ public class PostLinkActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
|
|
||||||
private void getCurrentAccount() {
|
private void getCurrentAccount() {
|
||||||
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
||||||
if(account == null) {
|
if (account == null) {
|
||||||
mNullAccessToken = true;
|
mNullAccessToken = true;
|
||||||
} else {
|
} else {
|
||||||
mAccessToken = account.getAccessToken();
|
mAccessToken = account.getAccessToken();
|
||||||
@ -314,7 +317,7 @@ public class PostLinkActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void displaySubredditIcon() {
|
private void displaySubredditIcon() {
|
||||||
if(iconUrl != null && !iconUrl.equals("")) {
|
if (iconUrl != null && !iconUrl.equals("")) {
|
||||||
mGlide.load(iconUrl)
|
mGlide.load(iconUrl)
|
||||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
||||||
.error(mGlide.load(R.drawable.subreddit_default_icon)
|
.error(mGlide.load(R.drawable.subreddit_default_icon)
|
||||||
@ -348,7 +351,7 @@ public class PostLinkActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
getMenuInflater().inflate(R.menu.post_link_activity, menu);
|
getMenuInflater().inflate(R.menu.post_link_activity, menu);
|
||||||
mMemu = menu;
|
mMemu = menu;
|
||||||
if(isPosting) {
|
if (isPosting) {
|
||||||
mMemu.findItem(R.id.action_send_post_link_activity).setEnabled(false);
|
mMemu.findItem(R.id.action_send_post_link_activity).setEnabled(false);
|
||||||
mMemu.findItem(R.id.action_send_post_link_activity).getIcon().setAlpha(130);
|
mMemu.findItem(R.id.action_send_post_link_activity).getIcon().setAlpha(130);
|
||||||
}
|
}
|
||||||
@ -359,11 +362,11 @@ public class PostLinkActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||||
switch (item.getItemId()) {
|
switch (item.getItemId()) {
|
||||||
case android.R.id.home:
|
case android.R.id.home:
|
||||||
if(isPosting) {
|
if (isPosting) {
|
||||||
promptAlertDialog(R.string.exit_when_submit_post, R.string.exit_when_submit_post_detail);
|
promptAlertDialog(R.string.exit_when_submit_post, R.string.exit_when_submit_post_detail);
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
if(!titleEditText.getText().toString().equals("") || !contentEditText.getText().toString().equals("")) {
|
if (!titleEditText.getText().toString().equals("") || !contentEditText.getText().toString().equals("")) {
|
||||||
promptAlertDialog(R.string.discard_post, R.string.discard_post_detail);
|
promptAlertDialog(R.string.discard_post, R.string.discard_post_detail);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -371,17 +374,17 @@ public class PostLinkActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
finish();
|
finish();
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_send_post_link_activity:
|
case R.id.action_send_post_link_activity:
|
||||||
if(!subredditSelected) {
|
if (!subredditSelected) {
|
||||||
Snackbar.make(coordinatorLayout, R.string.select_a_subreddit, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, R.string.select_a_subreddit, Snackbar.LENGTH_SHORT).show();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(titleEditText.getText() == null || titleEditText.getText().toString().equals("")) {
|
if (titleEditText.getText() == null || titleEditText.getText().toString().equals("")) {
|
||||||
Snackbar.make(coordinatorLayout, R.string.title_required, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, R.string.title_required, Snackbar.LENGTH_SHORT).show();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(contentEditText.getText() == null || contentEditText.getText().toString().equals("")) {
|
if (contentEditText.getText() == null || contentEditText.getText().toString().equals("")) {
|
||||||
Snackbar.make(coordinatorLayout, R.string.link_required, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, R.string.link_required, Snackbar.LENGTH_SHORT).show();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -394,7 +397,7 @@ public class PostLinkActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
mPostingSnackbar.show();
|
mPostingSnackbar.show();
|
||||||
|
|
||||||
String subredditName;
|
String subredditName;
|
||||||
if(subredditIsUser) {
|
if (subredditIsUser) {
|
||||||
subredditName = "u_" + subredditNameTextView.getText().toString();
|
subredditName = "u_" + subredditNameTextView.getText().toString();
|
||||||
} else {
|
} else {
|
||||||
subredditName = subredditNameTextView.getText().toString();
|
subredditName = subredditNameTextView.getText().toString();
|
||||||
@ -420,10 +423,10 @@ public class PostLinkActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBackPressed() {
|
public void onBackPressed() {
|
||||||
if(isPosting) {
|
if (isPosting) {
|
||||||
promptAlertDialog(R.string.exit_when_submit_post, R.string.exit_when_submit_post_detail);
|
promptAlertDialog(R.string.exit_when_submit_post, R.string.exit_when_submit_post_detail);
|
||||||
} else {
|
} else {
|
||||||
if(!titleEditText.getText().toString().equals("") || !contentEditText.getText().toString().equals("")) {
|
if (!titleEditText.getText().toString().equals("") || !contentEditText.getText().toString().equals("")) {
|
||||||
promptAlertDialog(R.string.discard_post, R.string.discard_post_detail);
|
promptAlertDialog(R.string.discard_post, R.string.discard_post_detail);
|
||||||
} else {
|
} else {
|
||||||
finish();
|
finish();
|
||||||
@ -450,8 +453,8 @@ public class PostLinkActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
@Override
|
@Override
|
||||||
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
||||||
super.onActivityResult(requestCode, resultCode, data);
|
super.onActivityResult(requestCode, resultCode, data);
|
||||||
if(requestCode == SUBREDDIT_SELECTION_REQUEST_CODE) {
|
if (requestCode == SUBREDDIT_SELECTION_REQUEST_CODE) {
|
||||||
if(resultCode == RESULT_OK) {
|
if (resultCode == RESULT_OK) {
|
||||||
subredditName = data.getExtras().getString(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_NAME);
|
subredditName = data.getExtras().getString(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_NAME);
|
||||||
iconUrl = data.getExtras().getString(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_ICON_URL);
|
iconUrl = data.getExtras().getString(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_ICON_URL);
|
||||||
subredditSelected = true;
|
subredditSelected = true;
|
||||||
@ -491,7 +494,7 @@ public class PostLinkActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
public void onSubmitLinkPostEvent(SubmitTextOrLinkPostEvent submitTextOrLinkPostEvent) {
|
public void onSubmitLinkPostEvent(SubmitTextOrLinkPostEvent submitTextOrLinkPostEvent) {
|
||||||
isPosting = false;
|
isPosting = false;
|
||||||
mPostingSnackbar.dismiss();
|
mPostingSnackbar.dismiss();
|
||||||
if(submitTextOrLinkPostEvent.postSuccess) {
|
if (submitTextOrLinkPostEvent.postSuccess) {
|
||||||
Intent intent = new Intent(PostLinkActivity.this, ViewPostDetailActivity.class);
|
Intent intent = new Intent(PostLinkActivity.this, ViewPostDetailActivity.class);
|
||||||
intent.putExtra(ViewPostDetailActivity.EXTRA_POST_DATA, submitTextOrLinkPostEvent.post);
|
intent.putExtra(ViewPostDetailActivity.EXTRA_POST_DATA, submitTextOrLinkPostEvent.post);
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
@ -499,7 +502,7 @@ public class PostLinkActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
} else {
|
} else {
|
||||||
mMemu.findItem(R.id.action_send_post_link_activity).setEnabled(true);
|
mMemu.findItem(R.id.action_send_post_link_activity).setEnabled(true);
|
||||||
mMemu.findItem(R.id.action_send_post_link_activity).getIcon().setAlpha(255);
|
mMemu.findItem(R.id.action_send_post_link_activity).getIcon().setAlpha(255);
|
||||||
if(submitTextOrLinkPostEvent.errorMessage == null) {
|
if (submitTextOrLinkPostEvent.errorMessage == null) {
|
||||||
Snackbar.make(coordinatorLayout, R.string.post_failed, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, R.string.post_failed, Snackbar.LENGTH_SHORT).show();
|
||||||
} else {
|
} else {
|
||||||
Snackbar.make(coordinatorLayout, submitTextOrLinkPostEvent.errorMessage.substring(0, 1).toUpperCase()
|
Snackbar.make(coordinatorLayout, submitTextOrLinkPostEvent.errorMessage.substring(0, 1).toUpperCase()
|
||||||
|
@ -79,17 +79,36 @@ public class PostTextActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
|
|
||||||
private static final int SUBREDDIT_SELECTION_REQUEST_CODE = 0;
|
private static final int SUBREDDIT_SELECTION_REQUEST_CODE = 0;
|
||||||
|
|
||||||
@BindView(R.id.coordinator_layout_post_text_activity) CoordinatorLayout coordinatorLayout;
|
@BindView(R.id.coordinator_layout_post_text_activity)
|
||||||
@BindView(R.id.toolbar_post_text_activity) Toolbar toolbar;
|
CoordinatorLayout coordinatorLayout;
|
||||||
@BindView(R.id.subreddit_icon_gif_image_view_search_activity) GifImageView iconGifImageView;
|
@BindView(R.id.toolbar_post_text_activity)
|
||||||
@BindView(R.id.subreddit_name_text_view_search_activity) TextView subredditNameTextView;
|
Toolbar toolbar;
|
||||||
@BindView(R.id.rules_button_post_text_activity) Button rulesButton;
|
@BindView(R.id.subreddit_icon_gif_image_view_search_activity)
|
||||||
@BindView(R.id.flair_custom_text_view_post_text_activity) CustomTextView flairTextView;
|
GifImageView iconGifImageView;
|
||||||
@BindView(R.id.spoiler_custom_text_view_post_text_activity) CustomTextView spoilerTextView;
|
@BindView(R.id.subreddit_name_text_view_search_activity)
|
||||||
@BindView(R.id.nsfw_custom_text_view_post_text_activity) CustomTextView nsfwTextView;
|
TextView subredditNameTextView;
|
||||||
@BindView(R.id.post_title_edit_text_post_text_activity) EditText titleEditText;
|
@BindView(R.id.rules_button_post_text_activity)
|
||||||
@BindView(R.id.post_text_content_edit_text_post_text_activity) EditText contentEditText;
|
Button rulesButton;
|
||||||
|
@BindView(R.id.flair_custom_text_view_post_text_activity)
|
||||||
|
CustomTextView flairTextView;
|
||||||
|
@BindView(R.id.spoiler_custom_text_view_post_text_activity)
|
||||||
|
CustomTextView spoilerTextView;
|
||||||
|
@BindView(R.id.nsfw_custom_text_view_post_text_activity)
|
||||||
|
CustomTextView nsfwTextView;
|
||||||
|
@BindView(R.id.post_title_edit_text_post_text_activity)
|
||||||
|
EditText titleEditText;
|
||||||
|
@BindView(R.id.post_text_content_edit_text_post_text_activity)
|
||||||
|
EditText contentEditText;
|
||||||
|
@Inject
|
||||||
|
@Named("no_oauth")
|
||||||
|
Retrofit mRetrofit;
|
||||||
|
@Inject
|
||||||
|
@Named("oauth")
|
||||||
|
Retrofit mOauthRetrofit;
|
||||||
|
@Inject
|
||||||
|
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
|
@Inject
|
||||||
|
SharedPreferences mSharedPreferences;
|
||||||
private boolean mNullAccessToken = false;
|
private boolean mNullAccessToken = false;
|
||||||
private String mAccessToken;
|
private String mAccessToken;
|
||||||
private String iconUrl;
|
private String iconUrl;
|
||||||
@ -98,30 +117,14 @@ public class PostTextActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
private boolean subredditIsUser;
|
private boolean subredditIsUser;
|
||||||
private boolean loadSubredditIconSuccessful = true;
|
private boolean loadSubredditIconSuccessful = true;
|
||||||
private boolean isPosting;
|
private boolean isPosting;
|
||||||
|
|
||||||
private Flair flair;
|
private Flair flair;
|
||||||
private boolean isSpoiler = false;
|
private boolean isSpoiler = false;
|
||||||
private boolean isNSFW = false;
|
private boolean isNSFW = false;
|
||||||
|
|
||||||
private Menu mMemu;
|
private Menu mMemu;
|
||||||
private RequestManager mGlide;
|
private RequestManager mGlide;
|
||||||
private FlairBottomSheetFragment flairSelectionBottomSheetFragment;
|
private FlairBottomSheetFragment flairSelectionBottomSheetFragment;
|
||||||
private Snackbar mPostingSnackbar;
|
private Snackbar mPostingSnackbar;
|
||||||
|
|
||||||
@Inject
|
|
||||||
@Named("no_oauth")
|
|
||||||
Retrofit mRetrofit;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
@Named("oauth")
|
|
||||||
Retrofit mOauthRetrofit;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
SharedPreferences mSharedPreferences;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -143,9 +146,9 @@ public class PostTextActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
|
|
||||||
EventBus.getDefault().register(this);
|
EventBus.getDefault().register(this);
|
||||||
|
|
||||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
Window window = getWindow();
|
Window window = getWindow();
|
||||||
if((getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
if ((getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
window.setNavigationBarColor(ContextCompat.getColor(this, R.color.navBarColor));
|
window.setNavigationBarColor(ContextCompat.getColor(this, R.color.navBarColor));
|
||||||
@ -161,7 +164,7 @@ public class PostTextActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(systemDefault) {
|
if (systemDefault) {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
||||||
@ -176,11 +179,11 @@ public class PostTextActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
|
|
||||||
mPostingSnackbar = Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_INDEFINITE);
|
mPostingSnackbar = Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_INDEFINITE);
|
||||||
|
|
||||||
if(savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
|
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
|
||||||
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
|
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
|
||||||
|
|
||||||
if(!mNullAccessToken && mAccessToken == null) {
|
if (!mNullAccessToken && mAccessToken == null) {
|
||||||
getCurrentAccount();
|
getCurrentAccount();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -194,28 +197,28 @@ public class PostTextActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
isSpoiler = savedInstanceState.getBoolean(IS_SPOILER_STATE);
|
isSpoiler = savedInstanceState.getBoolean(IS_SPOILER_STATE);
|
||||||
isNSFW = savedInstanceState.getBoolean(IS_NSFW_STATE);
|
isNSFW = savedInstanceState.getBoolean(IS_NSFW_STATE);
|
||||||
|
|
||||||
if(subredditName != null) {
|
if (subredditName != null) {
|
||||||
subredditNameTextView.setTextColor(getResources().getColor(R.color.primaryTextColor));
|
subredditNameTextView.setTextColor(getResources().getColor(R.color.primaryTextColor));
|
||||||
subredditNameTextView.setText(subredditName);
|
subredditNameTextView.setText(subredditName);
|
||||||
flairTextView.setVisibility(View.VISIBLE);
|
flairTextView.setVisibility(View.VISIBLE);
|
||||||
if(!loadSubredditIconSuccessful) {
|
if (!loadSubredditIconSuccessful) {
|
||||||
loadSubredditIcon();
|
loadSubredditIcon();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
displaySubredditIcon();
|
displaySubredditIcon();
|
||||||
|
|
||||||
if(isPosting) {
|
if (isPosting) {
|
||||||
mPostingSnackbar.show();
|
mPostingSnackbar.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(flair != null) {
|
if (flair != null) {
|
||||||
flairTextView.setText(flair.getText());
|
flairTextView.setText(flair.getText());
|
||||||
flairTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark));
|
flairTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark));
|
||||||
}
|
}
|
||||||
if(isSpoiler) {
|
if (isSpoiler) {
|
||||||
spoilerTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark));
|
spoilerTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark));
|
||||||
}
|
}
|
||||||
if(isNSFW) {
|
if (isNSFW) {
|
||||||
nsfwTextView.setBackgroundColor(getResources().getColor(R.color.colorAccent));
|
nsfwTextView.setBackgroundColor(getResources().getColor(R.color.colorAccent));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -223,7 +226,7 @@ public class PostTextActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
|
|
||||||
isPosting = false;
|
isPosting = false;
|
||||||
|
|
||||||
if(getIntent().hasExtra(EXTRA_SUBREDDIT_NAME)) {
|
if (getIntent().hasExtra(EXTRA_SUBREDDIT_NAME)) {
|
||||||
loadSubredditIconSuccessful = false;
|
loadSubredditIconSuccessful = false;
|
||||||
subredditName = getIntent().getStringExtra(EXTRA_SUBREDDIT_NAME);
|
subredditName = getIntent().getStringExtra(EXTRA_SUBREDDIT_NAME);
|
||||||
subredditSelected = true;
|
subredditSelected = true;
|
||||||
@ -238,7 +241,7 @@ public class PostTextActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
}
|
}
|
||||||
|
|
||||||
String text = getIntent().getStringExtra(EXTRA_CONTENT);
|
String text = getIntent().getStringExtra(EXTRA_CONTENT);
|
||||||
if(text != null) {
|
if (text != null) {
|
||||||
contentEditText.setText(text);
|
contentEditText.setText(text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -254,11 +257,11 @@ public class PostTextActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
});
|
});
|
||||||
|
|
||||||
rulesButton.setOnClickListener(view -> {
|
rulesButton.setOnClickListener(view -> {
|
||||||
if(subredditName == null) {
|
if (subredditName == null) {
|
||||||
Snackbar.make(coordinatorLayout, R.string.select_a_subreddit, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, R.string.select_a_subreddit, Snackbar.LENGTH_SHORT).show();
|
||||||
} else {
|
} else {
|
||||||
Intent intent = new Intent(this, RulesActivity.class);
|
Intent intent = new Intent(this, RulesActivity.class);
|
||||||
if(subredditIsUser) {
|
if (subredditIsUser) {
|
||||||
intent.putExtra(RulesActivity.EXTRA_SUBREDDIT_NAME, "u_" + subredditName);
|
intent.putExtra(RulesActivity.EXTRA_SUBREDDIT_NAME, "u_" + subredditName);
|
||||||
} else {
|
} else {
|
||||||
intent.putExtra(RulesActivity.EXTRA_SUBREDDIT_NAME, subredditName);
|
intent.putExtra(RulesActivity.EXTRA_SUBREDDIT_NAME, subredditName);
|
||||||
@ -268,11 +271,11 @@ public class PostTextActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
});
|
});
|
||||||
|
|
||||||
flairTextView.setOnClickListener(view -> {
|
flairTextView.setOnClickListener(view -> {
|
||||||
if(flair == null) {
|
if (flair == null) {
|
||||||
flairSelectionBottomSheetFragment = new FlairBottomSheetFragment();
|
flairSelectionBottomSheetFragment = new FlairBottomSheetFragment();
|
||||||
Bundle bundle = new Bundle();
|
Bundle bundle = new Bundle();
|
||||||
bundle.putString(FlairBottomSheetFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
|
bundle.putString(FlairBottomSheetFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
|
||||||
if(subredditIsUser) {
|
if (subredditIsUser) {
|
||||||
bundle.putString(FlairBottomSheetFragment.EXTRA_SUBREDDIT_NAME, "u_" + subredditName);
|
bundle.putString(FlairBottomSheetFragment.EXTRA_SUBREDDIT_NAME, "u_" + subredditName);
|
||||||
} else {
|
} else {
|
||||||
bundle.putString(FlairBottomSheetFragment.EXTRA_SUBREDDIT_NAME, subredditName);
|
bundle.putString(FlairBottomSheetFragment.EXTRA_SUBREDDIT_NAME, subredditName);
|
||||||
@ -287,7 +290,7 @@ public class PostTextActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
});
|
});
|
||||||
|
|
||||||
spoilerTextView.setOnClickListener(view -> {
|
spoilerTextView.setOnClickListener(view -> {
|
||||||
if(!isSpoiler) {
|
if (!isSpoiler) {
|
||||||
spoilerTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark));
|
spoilerTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark));
|
||||||
isSpoiler = true;
|
isSpoiler = true;
|
||||||
} else {
|
} else {
|
||||||
@ -297,7 +300,7 @@ public class PostTextActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
});
|
});
|
||||||
|
|
||||||
nsfwTextView.setOnClickListener(view -> {
|
nsfwTextView.setOnClickListener(view -> {
|
||||||
if(!isNSFW) {
|
if (!isNSFW) {
|
||||||
nsfwTextView.setBackgroundColor(getResources().getColor(R.color.colorAccent));
|
nsfwTextView.setBackgroundColor(getResources().getColor(R.color.colorAccent));
|
||||||
isNSFW = true;
|
isNSFW = true;
|
||||||
} else {
|
} else {
|
||||||
@ -309,7 +312,7 @@ public class PostTextActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
|
|
||||||
private void getCurrentAccount() {
|
private void getCurrentAccount() {
|
||||||
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
||||||
if(account == null) {
|
if (account == null) {
|
||||||
mNullAccessToken = true;
|
mNullAccessToken = true;
|
||||||
} else {
|
} else {
|
||||||
mAccessToken = account.getAccessToken();
|
mAccessToken = account.getAccessToken();
|
||||||
@ -318,7 +321,7 @@ public class PostTextActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void displaySubredditIcon() {
|
private void displaySubredditIcon() {
|
||||||
if(iconUrl != null && !iconUrl.equals("")) {
|
if (iconUrl != null && !iconUrl.equals("")) {
|
||||||
mGlide.load(iconUrl)
|
mGlide.load(iconUrl)
|
||||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
||||||
.error(mGlide.load(R.drawable.subreddit_default_icon)
|
.error(mGlide.load(R.drawable.subreddit_default_icon)
|
||||||
@ -353,7 +356,7 @@ public class PostTextActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
getMenuInflater().inflate(R.menu.post_text_activity, menu);
|
getMenuInflater().inflate(R.menu.post_text_activity, menu);
|
||||||
mMemu = menu;
|
mMemu = menu;
|
||||||
if(isPosting) {
|
if (isPosting) {
|
||||||
mMemu.findItem(R.id.action_send_post_text_activity).setEnabled(false);
|
mMemu.findItem(R.id.action_send_post_text_activity).setEnabled(false);
|
||||||
mMemu.findItem(R.id.action_send_post_text_activity).getIcon().setAlpha(130);
|
mMemu.findItem(R.id.action_send_post_text_activity).getIcon().setAlpha(130);
|
||||||
}
|
}
|
||||||
@ -364,11 +367,11 @@ public class PostTextActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||||
switch (item.getItemId()) {
|
switch (item.getItemId()) {
|
||||||
case android.R.id.home:
|
case android.R.id.home:
|
||||||
if(isPosting) {
|
if (isPosting) {
|
||||||
promptAlertDialog(R.string.exit_when_submit_post, R.string.exit_when_submit_post_detail);
|
promptAlertDialog(R.string.exit_when_submit_post, R.string.exit_when_submit_post_detail);
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
if(!titleEditText.getText().toString().equals("") || !contentEditText.getText().toString().equals("")) {
|
if (!titleEditText.getText().toString().equals("") || !contentEditText.getText().toString().equals("")) {
|
||||||
promptAlertDialog(R.string.discard_post, R.string.discard_post_detail);
|
promptAlertDialog(R.string.discard_post, R.string.discard_post_detail);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -376,12 +379,12 @@ public class PostTextActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
finish();
|
finish();
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_send_post_text_activity:
|
case R.id.action_send_post_text_activity:
|
||||||
if(!subredditSelected) {
|
if (!subredditSelected) {
|
||||||
Snackbar.make(coordinatorLayout, R.string.select_a_subreddit, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, R.string.select_a_subreddit, Snackbar.LENGTH_SHORT).show();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(titleEditText.getText() == null || titleEditText.getText().toString().equals("")) {
|
if (titleEditText.getText() == null || titleEditText.getText().toString().equals("")) {
|
||||||
Snackbar.make(coordinatorLayout, R.string.title_required, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, R.string.title_required, Snackbar.LENGTH_SHORT).show();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -394,7 +397,7 @@ public class PostTextActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
mPostingSnackbar.show();
|
mPostingSnackbar.show();
|
||||||
|
|
||||||
String subredditName;
|
String subredditName;
|
||||||
if(subredditIsUser) {
|
if (subredditIsUser) {
|
||||||
subredditName = "u_" + subredditNameTextView.getText().toString();
|
subredditName = "u_" + subredditNameTextView.getText().toString();
|
||||||
} else {
|
} else {
|
||||||
subredditName = subredditNameTextView.getText().toString();
|
subredditName = subredditNameTextView.getText().toString();
|
||||||
@ -420,10 +423,10 @@ public class PostTextActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBackPressed() {
|
public void onBackPressed() {
|
||||||
if(isPosting) {
|
if (isPosting) {
|
||||||
promptAlertDialog(R.string.exit_when_submit_post, R.string.exit_when_submit_post_detail);
|
promptAlertDialog(R.string.exit_when_submit_post, R.string.exit_when_submit_post_detail);
|
||||||
} else {
|
} else {
|
||||||
if(!titleEditText.getText().toString().equals("") || !contentEditText.getText().toString().equals("")) {
|
if (!titleEditText.getText().toString().equals("") || !contentEditText.getText().toString().equals("")) {
|
||||||
promptAlertDialog(R.string.discard_post, R.string.discard_post_detail);
|
promptAlertDialog(R.string.discard_post, R.string.discard_post_detail);
|
||||||
} else {
|
} else {
|
||||||
finish();
|
finish();
|
||||||
@ -450,8 +453,8 @@ public class PostTextActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
@Override
|
@Override
|
||||||
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
||||||
super.onActivityResult(requestCode, resultCode, data);
|
super.onActivityResult(requestCode, resultCode, data);
|
||||||
if(requestCode == SUBREDDIT_SELECTION_REQUEST_CODE) {
|
if (requestCode == SUBREDDIT_SELECTION_REQUEST_CODE) {
|
||||||
if(resultCode == RESULT_OK) {
|
if (resultCode == RESULT_OK) {
|
||||||
subredditName = data.getExtras().getString(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_NAME);
|
subredditName = data.getExtras().getString(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_NAME);
|
||||||
iconUrl = data.getExtras().getString(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_ICON_URL);
|
iconUrl = data.getExtras().getString(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_ICON_URL);
|
||||||
subredditSelected = true;
|
subredditSelected = true;
|
||||||
@ -491,7 +494,7 @@ public class PostTextActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
public void onSubmitTextPostEvent(SubmitTextOrLinkPostEvent submitTextOrLinkPostEvent) {
|
public void onSubmitTextPostEvent(SubmitTextOrLinkPostEvent submitTextOrLinkPostEvent) {
|
||||||
isPosting = false;
|
isPosting = false;
|
||||||
mPostingSnackbar.dismiss();
|
mPostingSnackbar.dismiss();
|
||||||
if(submitTextOrLinkPostEvent.postSuccess) {
|
if (submitTextOrLinkPostEvent.postSuccess) {
|
||||||
Intent intent = new Intent(PostTextActivity.this, ViewPostDetailActivity.class);
|
Intent intent = new Intent(PostTextActivity.this, ViewPostDetailActivity.class);
|
||||||
intent.putExtra(ViewPostDetailActivity.EXTRA_POST_DATA, submitTextOrLinkPostEvent.post);
|
intent.putExtra(ViewPostDetailActivity.EXTRA_POST_DATA, submitTextOrLinkPostEvent.post);
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
@ -499,7 +502,7 @@ public class PostTextActivity extends AppCompatActivity implements FlairBottomSh
|
|||||||
} else {
|
} else {
|
||||||
mMemu.findItem(R.id.action_send_post_text_activity).setEnabled(true);
|
mMemu.findItem(R.id.action_send_post_text_activity).setEnabled(true);
|
||||||
mMemu.findItem(R.id.action_send_post_text_activity).getIcon().setAlpha(255);
|
mMemu.findItem(R.id.action_send_post_text_activity).getIcon().setAlpha(255);
|
||||||
if(submitTextOrLinkPostEvent.errorMessage == null) {
|
if (submitTextOrLinkPostEvent.errorMessage == null) {
|
||||||
Snackbar.make(coordinatorLayout, R.string.post_failed, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, R.string.post_failed, Snackbar.LENGTH_SHORT).show();
|
||||||
} else {
|
} else {
|
||||||
Snackbar.make(coordinatorLayout, submitTextOrLinkPostEvent.errorMessage.substring(0, 1).toUpperCase()
|
Snackbar.make(coordinatorLayout, submitTextOrLinkPostEvent.errorMessage.substring(0, 1).toUpperCase()
|
||||||
|
@ -49,19 +49,19 @@ import javax.inject.Named;
|
|||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
|
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
|
||||||
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
|
||||||
import ml.docilealligator.infinityforreddit.Flair;
|
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.FlairBottomSheetFragment;
|
|
||||||
import ml.docilealligator.infinityforreddit.FontStyle;
|
|
||||||
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
|
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
|
||||||
import ml.docilealligator.infinityforreddit.AsyncTask.LoadSubredditIconAsyncTask;
|
import ml.docilealligator.infinityforreddit.AsyncTask.LoadSubredditIconAsyncTask;
|
||||||
|
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
||||||
|
import ml.docilealligator.infinityforreddit.Event.SubmitVideoPostEvent;
|
||||||
|
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
||||||
|
import ml.docilealligator.infinityforreddit.Flair;
|
||||||
|
import ml.docilealligator.infinityforreddit.FontStyle;
|
||||||
|
import ml.docilealligator.infinityforreddit.Fragment.FlairBottomSheetFragment;
|
||||||
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||||
import ml.docilealligator.infinityforreddit.SubmitPostService;
|
import ml.docilealligator.infinityforreddit.SubmitPostService;
|
||||||
import ml.docilealligator.infinityforreddit.Event.SubmitVideoPostEvent;
|
|
||||||
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
|
||||||
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
||||||
import pl.droidsonroids.gif.GifImageView;
|
import pl.droidsonroids.gif.GifImageView;
|
||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
@ -93,21 +93,50 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
private static final int PICK_VIDEO_REQUEST_CODE = 1;
|
private static final int PICK_VIDEO_REQUEST_CODE = 1;
|
||||||
private static final int CAPTURE_VIDEO_REQUEST_CODE = 2;
|
private static final int CAPTURE_VIDEO_REQUEST_CODE = 2;
|
||||||
|
|
||||||
@BindView(R.id.coordinator_layout_post_video_activity) CoordinatorLayout coordinatorLayout;
|
@BindView(R.id.coordinator_layout_post_video_activity)
|
||||||
@BindView(R.id.toolbar_post_video_activity) Toolbar toolbar;
|
CoordinatorLayout coordinatorLayout;
|
||||||
@BindView(R.id.subreddit_icon_gif_image_view_post_video_activity) GifImageView iconGifImageView;
|
@BindView(R.id.toolbar_post_video_activity)
|
||||||
@BindView(R.id.subreddit_name_text_view_post_video_activity) TextView subredditNameTextView;
|
Toolbar toolbar;
|
||||||
@BindView(R.id.rules_button_post_video_activity) Button rulesButton;
|
@BindView(R.id.subreddit_icon_gif_image_view_post_video_activity)
|
||||||
@BindView(R.id.flair_custom_text_view_post_video_activity) CustomTextView flairTextView;
|
GifImageView iconGifImageView;
|
||||||
@BindView(R.id.spoiler_custom_text_view_post_video_activity) CustomTextView spoilerTextView;
|
@BindView(R.id.subreddit_name_text_view_post_video_activity)
|
||||||
@BindView(R.id.nsfw_custom_text_view_post_video_activity) CustomTextView nsfwTextView;
|
TextView subredditNameTextView;
|
||||||
@BindView(R.id.post_title_edit_text_post_video_activity) EditText titleEditText;
|
@BindView(R.id.rules_button_post_video_activity)
|
||||||
@BindView(R.id.select_video_constraint_layout_post_video_activity) ConstraintLayout constraintLayout;
|
Button rulesButton;
|
||||||
@BindView(R.id.capture_fab_post_video_activity) FloatingActionButton captureFab;
|
@BindView(R.id.flair_custom_text_view_post_video_activity)
|
||||||
@BindView(R.id.select_from_library_fab_post_video_activity) FloatingActionButton selectFromLibraryFab;
|
CustomTextView flairTextView;
|
||||||
@BindView(R.id.select_again_text_view_post_video_activity) TextView selectAgainTextView;
|
@BindView(R.id.spoiler_custom_text_view_post_video_activity)
|
||||||
@BindView(R.id.player_view_post_video_activity) PlayerView videoPlayerView;
|
CustomTextView spoilerTextView;
|
||||||
|
@BindView(R.id.nsfw_custom_text_view_post_video_activity)
|
||||||
|
CustomTextView nsfwTextView;
|
||||||
|
@BindView(R.id.post_title_edit_text_post_video_activity)
|
||||||
|
EditText titleEditText;
|
||||||
|
@BindView(R.id.select_video_constraint_layout_post_video_activity)
|
||||||
|
ConstraintLayout constraintLayout;
|
||||||
|
@BindView(R.id.capture_fab_post_video_activity)
|
||||||
|
FloatingActionButton captureFab;
|
||||||
|
@BindView(R.id.select_from_library_fab_post_video_activity)
|
||||||
|
FloatingActionButton selectFromLibraryFab;
|
||||||
|
@BindView(R.id.select_again_text_view_post_video_activity)
|
||||||
|
TextView selectAgainTextView;
|
||||||
|
@BindView(R.id.player_view_post_video_activity)
|
||||||
|
PlayerView videoPlayerView;
|
||||||
|
@Inject
|
||||||
|
@Named("no_oauth")
|
||||||
|
Retrofit mRetrofit;
|
||||||
|
@Inject
|
||||||
|
@Named("oauth")
|
||||||
|
Retrofit mOauthRetrofit;
|
||||||
|
@Inject
|
||||||
|
@Named("upload_media")
|
||||||
|
Retrofit mUploadMediaRetrofit;
|
||||||
|
@Inject
|
||||||
|
@Named("upload_video")
|
||||||
|
Retrofit mUploadVideoRetrofit;
|
||||||
|
@Inject
|
||||||
|
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
|
@Inject
|
||||||
|
SharedPreferences mSharedPreferences;
|
||||||
private boolean mNullAccessToken = false;
|
private boolean mNullAccessToken = false;
|
||||||
private String mAccessToken;
|
private String mAccessToken;
|
||||||
private String mAccountName;
|
private String mAccountName;
|
||||||
@ -119,41 +148,16 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
private boolean loadSubredditIconSuccessful = true;
|
private boolean loadSubredditIconSuccessful = true;
|
||||||
private boolean isPosting;
|
private boolean isPosting;
|
||||||
private boolean wasPlaying;
|
private boolean wasPlaying;
|
||||||
|
|
||||||
private Flair flair;
|
private Flair flair;
|
||||||
private boolean isSpoiler = false;
|
private boolean isSpoiler = false;
|
||||||
private boolean isNSFW = false;
|
private boolean isNSFW = false;
|
||||||
|
|
||||||
private Menu mMemu;
|
private Menu mMemu;
|
||||||
private RequestManager mGlide;
|
private RequestManager mGlide;
|
||||||
private FlairBottomSheetFragment mFlairSelectionBottomSheetFragment;
|
private FlairBottomSheetFragment mFlairSelectionBottomSheetFragment;
|
||||||
private Snackbar mPostingSnackbar;
|
private Snackbar mPostingSnackbar;
|
||||||
|
|
||||||
private DataSource.Factory dataSourceFactory;
|
private DataSource.Factory dataSourceFactory;
|
||||||
private SimpleExoPlayer player;
|
private SimpleExoPlayer player;
|
||||||
|
|
||||||
@Inject
|
|
||||||
@Named("no_oauth")
|
|
||||||
Retrofit mRetrofit;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
@Named("oauth")
|
|
||||||
Retrofit mOauthRetrofit;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
@Named("upload_media")
|
|
||||||
Retrofit mUploadMediaRetrofit;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
@Named("upload_video")
|
|
||||||
Retrofit mUploadVideoRetrofit;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
SharedPreferences mSharedPreferences;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -175,9 +179,9 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
|
|
||||||
EventBus.getDefault().register(this);
|
EventBus.getDefault().register(this);
|
||||||
|
|
||||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
Window window = getWindow();
|
Window window = getWindow();
|
||||||
if((getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
if ((getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
window.setNavigationBarColor(ContextCompat.getColor(this, R.color.navBarColor));
|
window.setNavigationBarColor(ContextCompat.getColor(this, R.color.navBarColor));
|
||||||
@ -193,7 +197,7 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(systemDefault) {
|
if (systemDefault) {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
||||||
@ -214,7 +218,7 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
|
|
||||||
mPostingSnackbar = Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_INDEFINITE);
|
mPostingSnackbar = Snackbar.make(coordinatorLayout, R.string.posting, Snackbar.LENGTH_INDEFINITE);
|
||||||
|
|
||||||
if(savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
subredditName = savedInstanceState.getString(SUBREDDIT_NAME_STATE);
|
subredditName = savedInstanceState.getString(SUBREDDIT_NAME_STATE);
|
||||||
iconUrl = savedInstanceState.getString(SUBREDDIT_ICON_STATE);
|
iconUrl = savedInstanceState.getString(SUBREDDIT_ICON_STATE);
|
||||||
subredditSelected = savedInstanceState.getBoolean(SUBREDDIT_SELECTED_STATE);
|
subredditSelected = savedInstanceState.getBoolean(SUBREDDIT_SELECTED_STATE);
|
||||||
@ -228,37 +232,37 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
|
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
|
||||||
mAccountName = savedInstanceState.getString(ACCOUNT_NAME_STATE);
|
mAccountName = savedInstanceState.getString(ACCOUNT_NAME_STATE);
|
||||||
|
|
||||||
if(!mNullAccessToken && mAccessToken == null) {
|
if (!mNullAccessToken && mAccessToken == null) {
|
||||||
getCurrentAccount();
|
getCurrentAccount();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(savedInstanceState.getString(VIDEO_URI_STATE) != null) {
|
if (savedInstanceState.getString(VIDEO_URI_STATE) != null) {
|
||||||
videoUri = Uri.parse(savedInstanceState.getString(VIDEO_URI_STATE));
|
videoUri = Uri.parse(savedInstanceState.getString(VIDEO_URI_STATE));
|
||||||
loadVideo();
|
loadVideo();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(subredditName != null) {
|
if (subredditName != null) {
|
||||||
subredditNameTextView.setTextColor(getResources().getColor(R.color.primaryTextColor));
|
subredditNameTextView.setTextColor(getResources().getColor(R.color.primaryTextColor));
|
||||||
subredditNameTextView.setText(subredditName);
|
subredditNameTextView.setText(subredditName);
|
||||||
flairTextView.setVisibility(View.VISIBLE);
|
flairTextView.setVisibility(View.VISIBLE);
|
||||||
if(!loadSubredditIconSuccessful) {
|
if (!loadSubredditIconSuccessful) {
|
||||||
loadSubredditIcon();
|
loadSubredditIcon();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
displaySubredditIcon();
|
displaySubredditIcon();
|
||||||
|
|
||||||
if(isPosting) {
|
if (isPosting) {
|
||||||
mPostingSnackbar.show();
|
mPostingSnackbar.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(flair != null) {
|
if (flair != null) {
|
||||||
flairTextView.setText(flair.getText());
|
flairTextView.setText(flair.getText());
|
||||||
flairTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark));
|
flairTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark));
|
||||||
}
|
}
|
||||||
if(isSpoiler) {
|
if (isSpoiler) {
|
||||||
spoilerTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark));
|
spoilerTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark));
|
||||||
}
|
}
|
||||||
if(isNSFW) {
|
if (isNSFW) {
|
||||||
nsfwTextView.setBackgroundColor(getResources().getColor(R.color.colorAccent));
|
nsfwTextView.setBackgroundColor(getResources().getColor(R.color.colorAccent));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -266,7 +270,7 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
|
|
||||||
isPosting = false;
|
isPosting = false;
|
||||||
|
|
||||||
if(getIntent().hasExtra(EXTRA_SUBREDDIT_NAME)) {
|
if (getIntent().hasExtra(EXTRA_SUBREDDIT_NAME)) {
|
||||||
loadSubredditIconSuccessful = false;
|
loadSubredditIconSuccessful = false;
|
||||||
subredditName = getIntent().getStringExtra(EXTRA_SUBREDDIT_NAME);
|
subredditName = getIntent().getStringExtra(EXTRA_SUBREDDIT_NAME);
|
||||||
subredditSelected = true;
|
subredditSelected = true;
|
||||||
@ -280,7 +284,7 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
}
|
}
|
||||||
|
|
||||||
videoUri = getIntent().getData();
|
videoUri = getIntent().getData();
|
||||||
if(videoUri != null) {
|
if (videoUri != null) {
|
||||||
loadVideo();
|
loadVideo();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -296,11 +300,11 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
});
|
});
|
||||||
|
|
||||||
rulesButton.setOnClickListener(view -> {
|
rulesButton.setOnClickListener(view -> {
|
||||||
if(subredditName == null) {
|
if (subredditName == null) {
|
||||||
Snackbar.make(coordinatorLayout, R.string.select_a_subreddit, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, R.string.select_a_subreddit, Snackbar.LENGTH_SHORT).show();
|
||||||
} else {
|
} else {
|
||||||
Intent intent = new Intent(this, RulesActivity.class);
|
Intent intent = new Intent(this, RulesActivity.class);
|
||||||
if(subredditIsUser) {
|
if (subredditIsUser) {
|
||||||
intent.putExtra(RulesActivity.EXTRA_SUBREDDIT_NAME, "u_" + subredditName);
|
intent.putExtra(RulesActivity.EXTRA_SUBREDDIT_NAME, "u_" + subredditName);
|
||||||
} else {
|
} else {
|
||||||
intent.putExtra(RulesActivity.EXTRA_SUBREDDIT_NAME, subredditName);
|
intent.putExtra(RulesActivity.EXTRA_SUBREDDIT_NAME, subredditName);
|
||||||
@ -310,7 +314,7 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
});
|
});
|
||||||
|
|
||||||
flairTextView.setOnClickListener(view -> {
|
flairTextView.setOnClickListener(view -> {
|
||||||
if(flair == null) {
|
if (flair == null) {
|
||||||
mFlairSelectionBottomSheetFragment = new FlairBottomSheetFragment();
|
mFlairSelectionBottomSheetFragment = new FlairBottomSheetFragment();
|
||||||
Bundle bundle = new Bundle();
|
Bundle bundle = new Bundle();
|
||||||
bundle.putString(FlairBottomSheetFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
|
bundle.putString(FlairBottomSheetFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
|
||||||
@ -325,7 +329,7 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
});
|
});
|
||||||
|
|
||||||
spoilerTextView.setOnClickListener(view -> {
|
spoilerTextView.setOnClickListener(view -> {
|
||||||
if(!isSpoiler) {
|
if (!isSpoiler) {
|
||||||
spoilerTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark));
|
spoilerTextView.setBackgroundColor(getResources().getColor(R.color.backgroundColorPrimaryDark));
|
||||||
isSpoiler = true;
|
isSpoiler = true;
|
||||||
} else {
|
} else {
|
||||||
@ -335,7 +339,7 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
});
|
});
|
||||||
|
|
||||||
nsfwTextView.setOnClickListener(view -> {
|
nsfwTextView.setOnClickListener(view -> {
|
||||||
if(!isNSFW) {
|
if (!isNSFW) {
|
||||||
nsfwTextView.setBackgroundColor(getResources().getColor(R.color.colorAccent));
|
nsfwTextView.setBackgroundColor(getResources().getColor(R.color.colorAccent));
|
||||||
isNSFW = true;
|
isNSFW = true;
|
||||||
} else {
|
} else {
|
||||||
@ -355,7 +359,7 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
Intent intent = new Intent();
|
Intent intent = new Intent();
|
||||||
intent.setType("video/*");
|
intent.setType("video/*");
|
||||||
intent.setAction(Intent.ACTION_GET_CONTENT);
|
intent.setAction(Intent.ACTION_GET_CONTENT);
|
||||||
startActivityForResult(Intent.createChooser(intent,getResources().getString(R.string.select_from_gallery)), PICK_VIDEO_REQUEST_CODE);
|
startActivityForResult(Intent.createChooser(intent, getResources().getString(R.string.select_from_gallery)), PICK_VIDEO_REQUEST_CODE);
|
||||||
});
|
});
|
||||||
|
|
||||||
selectAgainTextView.setOnClickListener(view -> {
|
selectAgainTextView.setOnClickListener(view -> {
|
||||||
@ -370,7 +374,7 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
|
|
||||||
private void getCurrentAccount() {
|
private void getCurrentAccount() {
|
||||||
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
||||||
if(account == null) {
|
if (account == null) {
|
||||||
mNullAccessToken = true;
|
mNullAccessToken = true;
|
||||||
} else {
|
} else {
|
||||||
mAccessToken = account.getAccessToken();
|
mAccessToken = account.getAccessToken();
|
||||||
@ -389,7 +393,7 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void displaySubredditIcon() {
|
private void displaySubredditIcon() {
|
||||||
if(iconUrl != null && !iconUrl.equals("")) {
|
if (iconUrl != null && !iconUrl.equals("")) {
|
||||||
mGlide.load(iconUrl)
|
mGlide.load(iconUrl)
|
||||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
||||||
.error(mGlide.load(R.drawable.subreddit_default_icon)
|
.error(mGlide.load(R.drawable.subreddit_default_icon)
|
||||||
@ -423,7 +427,7 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
getMenuInflater().inflate(R.menu.post_video_activity, menu);
|
getMenuInflater().inflate(R.menu.post_video_activity, menu);
|
||||||
mMemu = menu;
|
mMemu = menu;
|
||||||
if(isPosting) {
|
if (isPosting) {
|
||||||
mMemu.findItem(R.id.action_send_post_video_activity).setEnabled(false);
|
mMemu.findItem(R.id.action_send_post_video_activity).setEnabled(false);
|
||||||
mMemu.findItem(R.id.action_send_post_video_activity).getIcon().setAlpha(130);
|
mMemu.findItem(R.id.action_send_post_video_activity).getIcon().setAlpha(130);
|
||||||
}
|
}
|
||||||
@ -434,11 +438,11 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||||
switch (item.getItemId()) {
|
switch (item.getItemId()) {
|
||||||
case android.R.id.home:
|
case android.R.id.home:
|
||||||
if(isPosting) {
|
if (isPosting) {
|
||||||
promptAlertDialog(R.string.exit_when_submit_post, R.string.exit_when_submit_post_detail);
|
promptAlertDialog(R.string.exit_when_submit_post, R.string.exit_when_submit_post_detail);
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
if(!titleEditText.getText().toString().equals("") || videoUri != null) {
|
if (!titleEditText.getText().toString().equals("") || videoUri != null) {
|
||||||
promptAlertDialog(R.string.discard_post, R.string.discard_post_detail);
|
promptAlertDialog(R.string.discard_post, R.string.discard_post_detail);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -446,17 +450,17 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
finish();
|
finish();
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_send_post_video_activity:
|
case R.id.action_send_post_video_activity:
|
||||||
if(!subredditSelected) {
|
if (!subredditSelected) {
|
||||||
Snackbar.make(coordinatorLayout, R.string.select_a_subreddit, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, R.string.select_a_subreddit, Snackbar.LENGTH_SHORT).show();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(titleEditText.getText() == null || titleEditText.getText().toString().equals("")) {
|
if (titleEditText.getText() == null || titleEditText.getText().toString().equals("")) {
|
||||||
Snackbar.make(coordinatorLayout, R.string.title_required, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, R.string.title_required, Snackbar.LENGTH_SHORT).show();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(videoUri == null) {
|
if (videoUri == null) {
|
||||||
Snackbar.make(coordinatorLayout, R.string.select_an_image, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, R.string.select_an_image, Snackbar.LENGTH_SHORT).show();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -469,7 +473,7 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
mPostingSnackbar.show();
|
mPostingSnackbar.show();
|
||||||
|
|
||||||
String subredditName;
|
String subredditName;
|
||||||
if(subredditIsUser) {
|
if (subredditIsUser) {
|
||||||
subredditName = "u_" + subredditNameTextView.getText().toString();
|
subredditName = "u_" + subredditNameTextView.getText().toString();
|
||||||
} else {
|
} else {
|
||||||
subredditName = subredditNameTextView.getText().toString();
|
subredditName = subredditNameTextView.getText().toString();
|
||||||
@ -486,7 +490,7 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
intent.putExtra(SubmitPostService.EXTRA_POST_TYPE, SubmitPostService.EXTRA_POST_TYPE_VIDEO);
|
intent.putExtra(SubmitPostService.EXTRA_POST_TYPE, SubmitPostService.EXTRA_POST_TYPE_VIDEO);
|
||||||
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||||
|
|
||||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
startForegroundService(intent);
|
startForegroundService(intent);
|
||||||
} else {
|
} else {
|
||||||
startService(intent);
|
startService(intent);
|
||||||
@ -500,10 +504,10 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBackPressed() {
|
public void onBackPressed() {
|
||||||
if(isPosting) {
|
if (isPosting) {
|
||||||
promptAlertDialog(R.string.exit_when_submit_post, R.string.exit_when_submit_post_detail);
|
promptAlertDialog(R.string.exit_when_submit_post, R.string.exit_when_submit_post_detail);
|
||||||
} else {
|
} else {
|
||||||
if(!titleEditText.getText().toString().equals("") || videoUri != null) {
|
if (!titleEditText.getText().toString().equals("") || videoUri != null) {
|
||||||
promptAlertDialog(R.string.discard_post, R.string.discard_post_detail);
|
promptAlertDialog(R.string.discard_post, R.string.discard_post_detail);
|
||||||
} else {
|
} else {
|
||||||
finish();
|
finish();
|
||||||
@ -514,7 +518,7 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
@Override
|
@Override
|
||||||
protected void onStart() {
|
protected void onStart() {
|
||||||
super.onStart();
|
super.onStart();
|
||||||
if(wasPlaying) {
|
if (wasPlaying) {
|
||||||
player.setPlayWhenReady(true);
|
player.setPlayWhenReady(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -532,7 +536,7 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
outState.putString(SUBREDDIT_ICON_STATE, iconUrl);
|
outState.putString(SUBREDDIT_ICON_STATE, iconUrl);
|
||||||
outState.putBoolean(SUBREDDIT_SELECTED_STATE, subredditSelected);
|
outState.putBoolean(SUBREDDIT_SELECTED_STATE, subredditSelected);
|
||||||
outState.putBoolean(SUBREDDIT_IS_USER_STATE, subredditIsUser);
|
outState.putBoolean(SUBREDDIT_IS_USER_STATE, subredditIsUser);
|
||||||
if(videoUri != null) {
|
if (videoUri != null) {
|
||||||
outState.putString(VIDEO_URI_STATE, videoUri.toString());
|
outState.putString(VIDEO_URI_STATE, videoUri.toString());
|
||||||
}
|
}
|
||||||
outState.putBoolean(LOAD_SUBREDDIT_ICON_STATE, loadSubredditIconSuccessful);
|
outState.putBoolean(LOAD_SUBREDDIT_ICON_STATE, loadSubredditIconSuccessful);
|
||||||
@ -548,9 +552,9 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
@Override
|
@Override
|
||||||
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
||||||
super.onActivityResult(requestCode, resultCode, data);
|
super.onActivityResult(requestCode, resultCode, data);
|
||||||
if(requestCode == SUBREDDIT_SELECTION_REQUEST_CODE) {
|
if (requestCode == SUBREDDIT_SELECTION_REQUEST_CODE) {
|
||||||
if(resultCode == RESULT_OK) {
|
if (resultCode == RESULT_OK) {
|
||||||
if(data != null) {
|
if (data != null) {
|
||||||
subredditName = data.getStringExtra(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_NAME);
|
subredditName = data.getStringExtra(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_NAME);
|
||||||
iconUrl = data.getStringExtra(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_ICON_URL);
|
iconUrl = data.getStringExtra(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_ICON_URL);
|
||||||
subredditSelected = true;
|
subredditSelected = true;
|
||||||
@ -566,9 +570,9 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
flair = null;
|
flair = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if(requestCode == PICK_VIDEO_REQUEST_CODE) {
|
} else if (requestCode == PICK_VIDEO_REQUEST_CODE) {
|
||||||
if(resultCode == RESULT_OK) {
|
if (resultCode == RESULT_OK) {
|
||||||
if(data == null) {
|
if (data == null) {
|
||||||
Snackbar.make(coordinatorLayout, R.string.error_getting_video, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, R.string.error_getting_video, Snackbar.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -577,8 +581,8 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
loadVideo();
|
loadVideo();
|
||||||
}
|
}
|
||||||
} else if (requestCode == CAPTURE_VIDEO_REQUEST_CODE) {
|
} else if (requestCode == CAPTURE_VIDEO_REQUEST_CODE) {
|
||||||
if(resultCode == RESULT_OK) {
|
if (resultCode == RESULT_OK) {
|
||||||
if(data != null && data.getData() != null) {
|
if (data != null && data.getData() != null) {
|
||||||
videoUri = data.getData();
|
videoUri = data.getData();
|
||||||
loadVideo();
|
loadVideo();
|
||||||
} else {
|
} else {
|
||||||
@ -614,13 +618,13 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS
|
|||||||
mMemu.findItem(R.id.action_send_post_video_activity).setEnabled(true);
|
mMemu.findItem(R.id.action_send_post_video_activity).setEnabled(true);
|
||||||
mMemu.findItem(R.id.action_send_post_video_activity).getIcon().setAlpha(255);
|
mMemu.findItem(R.id.action_send_post_video_activity).getIcon().setAlpha(255);
|
||||||
|
|
||||||
if(submitVideoPostEvent.postSuccess) {
|
if (submitVideoPostEvent.postSuccess) {
|
||||||
Intent intent = new Intent(this, ViewUserDetailActivity.class);
|
Intent intent = new Intent(this, ViewUserDetailActivity.class);
|
||||||
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY,
|
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY,
|
||||||
mAccountName);
|
mAccountName);
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
finish();
|
finish();
|
||||||
} else if(submitVideoPostEvent.errorProcessingVideo) {
|
} else if (submitVideoPostEvent.errorProcessingVideo) {
|
||||||
Snackbar.make(coordinatorLayout, R.string.error_processing_video, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(coordinatorLayout, R.string.error_processing_video, Snackbar.LENGTH_SHORT).show();
|
||||||
} else {
|
} else {
|
||||||
if (submitVideoPostEvent.errorMessage == null || submitVideoPostEvent.errorMessage.equals("")) {
|
if (submitVideoPostEvent.errorMessage == null || submitVideoPostEvent.errorMessage.equals("")) {
|
||||||
|
@ -63,22 +63,23 @@ public class RulesActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
static final String EXTRA_SUBREDDIT_NAME = "ESN";
|
static final String EXTRA_SUBREDDIT_NAME = "ESN";
|
||||||
|
|
||||||
@BindView(R.id.appbar_layout_rules_activity) AppBarLayout appBarLayout;
|
@BindView(R.id.appbar_layout_rules_activity)
|
||||||
@BindView(R.id.toolbar_rules_activity) Toolbar toolbar;
|
AppBarLayout appBarLayout;
|
||||||
@BindView(R.id.progress_bar_rules_activity) ProgressBar progressBar;
|
@BindView(R.id.toolbar_rules_activity)
|
||||||
@BindView(R.id.recycler_view_rules_activity) RecyclerView recyclerView;
|
Toolbar toolbar;
|
||||||
@BindView(R.id.error_text_view_rules_activity) TextView errorTextView;
|
@BindView(R.id.progress_bar_rules_activity)
|
||||||
|
ProgressBar progressBar;
|
||||||
private String mSubredditName;
|
@BindView(R.id.recycler_view_rules_activity)
|
||||||
|
RecyclerView recyclerView;
|
||||||
private RulesRecyclerViewAdapter mAdapter;
|
@BindView(R.id.error_text_view_rules_activity)
|
||||||
|
TextView errorTextView;
|
||||||
@Inject
|
@Inject
|
||||||
@Named("no_oauth")
|
@Named("no_oauth")
|
||||||
Retrofit mRetrofit;
|
Retrofit mRetrofit;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
SharedPreferences mSharedPreferences;
|
SharedPreferences mSharedPreferences;
|
||||||
|
private String mSubredditName;
|
||||||
|
private RulesRecyclerViewAdapter mAdapter;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
@ -104,29 +105,29 @@ public class RulesActivity extends AppCompatActivity {
|
|||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
||||||
Resources resources = getResources();
|
Resources resources = getResources();
|
||||||
|
|
||||||
if(resources.getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT || resources.getBoolean(R.bool.isTablet)) {
|
if (resources.getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT || resources.getBoolean(R.bool.isTablet)) {
|
||||||
Window window = getWindow();
|
Window window = getWindow();
|
||||||
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
||||||
|
|
||||||
boolean lightNavBar = false;
|
boolean lightNavBar = false;
|
||||||
if((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
if ((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
lightNavBar = true;
|
lightNavBar = true;
|
||||||
}
|
}
|
||||||
boolean finalLightNavBar = lightNavBar;
|
boolean finalLightNavBar = lightNavBar;
|
||||||
|
|
||||||
View decorView = window.getDecorView();
|
View decorView = window.getDecorView();
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
||||||
if(state == State.COLLAPSED) {
|
if (state == State.COLLAPSED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
} else if(state == State.EXPANDED) {
|
} else if (state == State.EXPANDED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -159,7 +160,7 @@ public class RulesActivity extends AppCompatActivity {
|
|||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(systemDefault) {
|
if (systemDefault) {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
||||||
@ -188,15 +189,16 @@ public class RulesActivity extends AppCompatActivity {
|
|||||||
rulesCall.enqueue(new Callback<String>() {
|
rulesCall.enqueue(new Callback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
if(response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
new ParseRulesAsyncTask(response.body(), new ParseRulesAsyncTask.ParseRulesAsyncTaskListener() {
|
new ParseRulesAsyncTask(response.body(), new ParseRulesAsyncTask.ParseRulesAsyncTaskListener() {
|
||||||
@Override
|
@Override
|
||||||
public void parseSuccessful(ArrayList<Rule> rules) {
|
public void parseSuccessful(ArrayList<Rule> rules) {
|
||||||
progressBar.setVisibility(View.GONE);
|
progressBar.setVisibility(View.GONE);
|
||||||
if(rules == null || rules.size() == 0) {
|
if (rules == null || rules.size() == 0) {
|
||||||
errorTextView.setVisibility(View.VISIBLE);
|
errorTextView.setVisibility(View.VISIBLE);
|
||||||
errorTextView.setText(R.string.no_rule);
|
errorTextView.setText(R.string.no_rule);
|
||||||
errorTextView.setOnClickListener(view -> {});
|
errorTextView.setOnClickListener(view -> {
|
||||||
|
});
|
||||||
}
|
}
|
||||||
mAdapter.changeDataset(rules);
|
mAdapter.changeDataset(rules);
|
||||||
}
|
}
|
||||||
@ -227,7 +229,7 @@ public class RulesActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||||
if(item.getItemId() == android.R.id.home) {
|
if (item.getItemId() == android.R.id.home) {
|
||||||
finish();
|
finish();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -250,11 +252,6 @@ public class RulesActivity extends AppCompatActivity {
|
|||||||
private String response;
|
private String response;
|
||||||
private ParseRulesAsyncTaskListener parseRulesAsyncTaskListener;
|
private ParseRulesAsyncTaskListener parseRulesAsyncTaskListener;
|
||||||
|
|
||||||
interface ParseRulesAsyncTaskListener {
|
|
||||||
void parseSuccessful(ArrayList<Rule> rules);
|
|
||||||
void parseFailed();
|
|
||||||
}
|
|
||||||
|
|
||||||
ParseRulesAsyncTask(String response, ParseRulesAsyncTaskListener parseRulesAsyncTaskListener) {
|
ParseRulesAsyncTask(String response, ParseRulesAsyncTaskListener parseRulesAsyncTaskListener) {
|
||||||
this.response = response;
|
this.response = response;
|
||||||
this.parseRulesAsyncTaskListener = parseRulesAsyncTaskListener;
|
this.parseRulesAsyncTaskListener = parseRulesAsyncTaskListener;
|
||||||
@ -265,10 +262,10 @@ public class RulesActivity extends AppCompatActivity {
|
|||||||
try {
|
try {
|
||||||
JSONArray rulesArray = new JSONObject(response).getJSONArray(JSONUtils.RULES_KEY);
|
JSONArray rulesArray = new JSONObject(response).getJSONArray(JSONUtils.RULES_KEY);
|
||||||
ArrayList<Rule> rules = new ArrayList<>();
|
ArrayList<Rule> rules = new ArrayList<>();
|
||||||
for(int i = 0; i < rulesArray.length(); i++) {
|
for (int i = 0; i < rulesArray.length(); i++) {
|
||||||
String shortName = rulesArray.getJSONObject(i).getString(JSONUtils.SHORT_NAME_KEY);
|
String shortName = rulesArray.getJSONObject(i).getString(JSONUtils.SHORT_NAME_KEY);
|
||||||
String description = null;
|
String description = null;
|
||||||
if(rulesArray.getJSONObject(i).has(JSONUtils.DESCRIPTION_KEY)) {
|
if (rulesArray.getJSONObject(i).has(JSONUtils.DESCRIPTION_KEY)) {
|
||||||
description = Utils.addSubredditAndUserLink(rulesArray.getJSONObject(i).getString(JSONUtils.DESCRIPTION_KEY));
|
description = Utils.addSubredditAndUserLink(rulesArray.getJSONObject(i).getString(JSONUtils.DESCRIPTION_KEY));
|
||||||
}
|
}
|
||||||
rules.add(new Rule(shortName, description));
|
rules.add(new Rule(shortName, description));
|
||||||
@ -282,11 +279,17 @@ public class RulesActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(ArrayList<Rule> rules) {
|
protected void onPostExecute(ArrayList<Rule> rules) {
|
||||||
if(rules != null) {
|
if (rules != null) {
|
||||||
parseRulesAsyncTaskListener.parseSuccessful(rules);
|
parseRulesAsyncTaskListener.parseSuccessful(rules);
|
||||||
} else {
|
} else {
|
||||||
parseRulesAsyncTaskListener.parseFailed();
|
parseRulesAsyncTaskListener.parseFailed();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface ParseRulesAsyncTaskListener {
|
||||||
|
void parseSuccessful(ArrayList<Rule> rules);
|
||||||
|
|
||||||
|
void parseFailed();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,11 +32,11 @@ import javax.inject.Inject;
|
|||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
||||||
|
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
||||||
import ml.docilealligator.infinityforreddit.FontStyle;
|
import ml.docilealligator.infinityforreddit.FontStyle;
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||||
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
|
||||||
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
||||||
|
|
||||||
import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY;
|
import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY;
|
||||||
@ -59,18 +59,20 @@ public class SearchActivity extends AppCompatActivity {
|
|||||||
private static final int SUBREDDIT_SELECTION_REQUEST_CODE = 0;
|
private static final int SUBREDDIT_SELECTION_REQUEST_CODE = 0;
|
||||||
private static final int SUBREDDIT_SEARCH_REQUEST_CODE = 1;
|
private static final int SUBREDDIT_SEARCH_REQUEST_CODE = 1;
|
||||||
|
|
||||||
@BindView(R.id.toolbar) Toolbar toolbar;
|
@BindView(R.id.toolbar)
|
||||||
@BindView(R.id.search_view_search_activity) SimpleSearchView simpleSearchView;
|
Toolbar toolbar;
|
||||||
@BindView(R.id.subreddit_name_relative_layout_search_activity) RelativeLayout subredditNameRelativeLayout;
|
@BindView(R.id.search_view_search_activity)
|
||||||
@BindView(R.id.subreddit_name_text_view_search_activity) TextView subredditNameTextView;
|
SimpleSearchView simpleSearchView;
|
||||||
|
@BindView(R.id.subreddit_name_relative_layout_search_activity)
|
||||||
|
RelativeLayout subredditNameRelativeLayout;
|
||||||
|
@BindView(R.id.subreddit_name_text_view_search_activity)
|
||||||
|
TextView subredditNameTextView;
|
||||||
|
@Inject
|
||||||
|
SharedPreferences mSharedPreferences;
|
||||||
private String query;
|
private String query;
|
||||||
private String subredditName;
|
private String subredditName;
|
||||||
private boolean subredditIsUser;
|
private boolean subredditIsUser;
|
||||||
|
|
||||||
@Inject
|
|
||||||
SharedPreferences mSharedPreferences;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -92,9 +94,9 @@ public class SearchActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
EventBus.getDefault().register(this);
|
EventBus.getDefault().register(this);
|
||||||
|
|
||||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
Window window = getWindow();
|
Window window = getWindow();
|
||||||
if((getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
if ((getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
window.setNavigationBarColor(ContextCompat.getColor(this, R.color.navBarColor));
|
window.setNavigationBarColor(ContextCompat.getColor(this, R.color.navBarColor));
|
||||||
@ -110,7 +112,7 @@ public class SearchActivity extends AppCompatActivity {
|
|||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(systemDefault) {
|
if (systemDefault) {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
||||||
@ -147,15 +149,15 @@ public class SearchActivity extends AppCompatActivity {
|
|||||||
simpleSearchView.setOnQueryTextListener(new SimpleSearchView.OnQueryTextListener() {
|
simpleSearchView.setOnQueryTextListener(new SimpleSearchView.OnQueryTextListener() {
|
||||||
@Override
|
@Override
|
||||||
public boolean onQueryTextSubmit(String query) {
|
public boolean onQueryTextSubmit(String query) {
|
||||||
if(searchOnlySubreddits) {
|
if (searchOnlySubreddits) {
|
||||||
Intent intent = new Intent(SearchActivity.this, SearchSubredditsResultActivity.class);
|
Intent intent = new Intent(SearchActivity.this, SearchSubredditsResultActivity.class);
|
||||||
intent.putExtra(SearchSubredditsResultActivity.EXTRA_QUERY, query);
|
intent.putExtra(SearchSubredditsResultActivity.EXTRA_QUERY, query);
|
||||||
startActivityForResult(intent, SUBREDDIT_SEARCH_REQUEST_CODE);
|
startActivityForResult(intent, SUBREDDIT_SEARCH_REQUEST_CODE);
|
||||||
} else {
|
} else {
|
||||||
Intent intent = new Intent(SearchActivity.this, SearchResultActivity.class);
|
Intent intent = new Intent(SearchActivity.this, SearchResultActivity.class);
|
||||||
intent.putExtra(SearchResultActivity.EXTRA_QUERY, query);
|
intent.putExtra(SearchResultActivity.EXTRA_QUERY, query);
|
||||||
if(subredditName != null) {
|
if (subredditName != null) {
|
||||||
if(subredditIsUser) {
|
if (subredditIsUser) {
|
||||||
intent.putExtra(SearchResultActivity.EXTRA_SUBREDDIT_NAME, "u_" + subredditName);
|
intent.putExtra(SearchResultActivity.EXTRA_SUBREDDIT_NAME, "u_" + subredditName);
|
||||||
} else {
|
} else {
|
||||||
intent.putExtra(SearchResultActivity.EXTRA_SUBREDDIT_NAME, subredditName);
|
intent.putExtra(SearchResultActivity.EXTRA_SUBREDDIT_NAME, subredditName);
|
||||||
@ -178,11 +180,11 @@ public class SearchActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if(savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
subredditName = savedInstanceState.getString(SUBREDDIT_NAME_STATE);
|
subredditName = savedInstanceState.getString(SUBREDDIT_NAME_STATE);
|
||||||
subredditIsUser = savedInstanceState.getBoolean(SUBREDDIT_IS_USER_STATE);
|
subredditIsUser = savedInstanceState.getBoolean(SUBREDDIT_IS_USER_STATE);
|
||||||
|
|
||||||
if(subredditName == null) {
|
if (subredditName == null) {
|
||||||
subredditNameTextView.setText(R.string.all_subreddits);
|
subredditNameTextView.setText(R.string.all_subreddits);
|
||||||
} else {
|
} else {
|
||||||
subredditNameTextView.setText(subredditName);
|
subredditNameTextView.setText(subredditName);
|
||||||
@ -191,7 +193,7 @@ public class SearchActivity extends AppCompatActivity {
|
|||||||
query = getIntent().getStringExtra(EXTRA_QUERY);
|
query = getIntent().getStringExtra(EXTRA_QUERY);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(searchOnlySubreddits) {
|
if (searchOnlySubreddits) {
|
||||||
subredditNameRelativeLayout.setVisibility(View.GONE);
|
subredditNameRelativeLayout.setVisibility(View.GONE);
|
||||||
} else {
|
} else {
|
||||||
subredditNameRelativeLayout.setOnClickListener(view -> {
|
subredditNameRelativeLayout.setOnClickListener(view -> {
|
||||||
@ -202,7 +204,7 @@ public class SearchActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Intent intent = getIntent();
|
Intent intent = getIntent();
|
||||||
if(intent.hasExtra(EXTRA_SUBREDDIT_NAME)) {
|
if (intent.hasExtra(EXTRA_SUBREDDIT_NAME)) {
|
||||||
subredditName = intent.getExtras().getString(EXTRA_SUBREDDIT_NAME);
|
subredditName = intent.getExtras().getString(EXTRA_SUBREDDIT_NAME);
|
||||||
subredditNameTextView.setText(subredditName);
|
subredditNameTextView.setText(subredditName);
|
||||||
subredditIsUser = intent.getExtras().getBoolean(EXTRA_SUBREDDIT_IS_USER);
|
subredditIsUser = intent.getExtras().getBoolean(EXTRA_SUBREDDIT_IS_USER);
|
||||||
@ -215,14 +217,14 @@ public class SearchActivity extends AppCompatActivity {
|
|||||||
simpleSearchView.showSearch(false);
|
simpleSearchView.showSearch(false);
|
||||||
simpleSearchView.getSearchEditText().requestFocus();
|
simpleSearchView.getSearchEditText().requestFocus();
|
||||||
|
|
||||||
if(query != null) {
|
if (query != null) {
|
||||||
simpleSearchView.getSearchEditText().setText(query);
|
simpleSearchView.getSearchEditText().setText(query);
|
||||||
simpleSearchView.getSearchEditText().setSelection(query.length());
|
simpleSearchView.getSearchEditText().setSelection(query.length());
|
||||||
query = null;
|
query = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
if(imm != null) {
|
if (imm != null) {
|
||||||
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
|
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -230,8 +232,8 @@ public class SearchActivity extends AppCompatActivity {
|
|||||||
@Override
|
@Override
|
||||||
protected void onPause() {
|
protected void onPause() {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
|
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
if(imm != null) {
|
if (imm != null) {
|
||||||
imm.hideSoftInputFromWindow(simpleSearchView.getSearchEditText().getWindowToken(), 0);
|
imm.hideSoftInputFromWindow(simpleSearchView.getSearchEditText().getWindowToken(), 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -242,19 +244,19 @@ public class SearchActivity extends AppCompatActivity {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(requestCode == SUBREDDIT_SELECTION_REQUEST_CODE) {
|
if (requestCode == SUBREDDIT_SELECTION_REQUEST_CODE) {
|
||||||
if(resultCode == RESULT_OK) {
|
if (resultCode == RESULT_OK) {
|
||||||
subredditName = data.getExtras().getString(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_NAME);
|
subredditName = data.getExtras().getString(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_NAME);
|
||||||
subredditIsUser = data.getExtras().getBoolean(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_IS_USER);
|
subredditIsUser = data.getExtras().getBoolean(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_IS_USER);
|
||||||
|
|
||||||
if(subredditName == null) {
|
if (subredditName == null) {
|
||||||
subredditNameTextView.setText(R.string.all_subreddits);
|
subredditNameTextView.setText(R.string.all_subreddits);
|
||||||
} else {
|
} else {
|
||||||
subredditNameTextView.setText(subredditName);
|
subredditNameTextView.setText(subredditName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if(requestCode == SUBREDDIT_SEARCH_REQUEST_CODE) {
|
} else if (requestCode == SUBREDDIT_SEARCH_REQUEST_CODE) {
|
||||||
if(resultCode == RESULT_OK) {
|
if (resultCode == RESULT_OK) {
|
||||||
String name = data.getExtras().getString(SearchSubredditsResultActivity.EXTRA_RETURN_SUBREDDIT_NAME);
|
String name = data.getExtras().getString(SearchSubredditsResultActivity.EXTRA_RETURN_SUBREDDIT_NAME);
|
||||||
String iconUrl = data.getExtras().getString(SearchSubredditsResultActivity.EXTRA_RETURN_SUBREDDIT_ICON_URL);
|
String iconUrl = data.getExtras().getString(SearchSubredditsResultActivity.EXTRA_RETURN_SUBREDDIT_ICON_URL);
|
||||||
Intent returnIntent = new Intent();
|
Intent returnIntent = new Intent();
|
||||||
@ -277,7 +279,7 @@ public class SearchActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||||
if(item.getItemId() == android.R.id.home) {
|
if (item.getItemId() == android.R.id.home) {
|
||||||
finish();
|
finish();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -33,23 +33,23 @@ import javax.inject.Inject;
|
|||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import ml.docilealligator.infinityforreddit.AppBarStateChangeListener;
|
import ml.docilealligator.infinityforreddit.AppBarStateChangeListener;
|
||||||
import ml.docilealligator.infinityforreddit.Event.ChangeNSFWEvent;
|
|
||||||
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
|
||||||
import ml.docilealligator.infinityforreddit.FontStyle;
|
|
||||||
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
|
||||||
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
|
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
||||||
import ml.docilealligator.infinityforreddit.PostDataSource;
|
import ml.docilealligator.infinityforreddit.Event.ChangeNSFWEvent;
|
||||||
|
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
||||||
|
import ml.docilealligator.infinityforreddit.FontStyle;
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.PostFragment;
|
import ml.docilealligator.infinityforreddit.Fragment.PostFragment;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
|
||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.SearchPostSortTypeBottomSheetFragment;
|
import ml.docilealligator.infinityforreddit.Fragment.SearchPostSortTypeBottomSheetFragment;
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.SearchUserAndSubredditSortTypeBottomSheetFragment;
|
import ml.docilealligator.infinityforreddit.Fragment.SearchUserAndSubredditSortTypeBottomSheetFragment;
|
||||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.SubredditListingFragment;
|
import ml.docilealligator.infinityforreddit.Fragment.SubredditListingFragment;
|
||||||
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
|
||||||
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.UserListingFragment;
|
import ml.docilealligator.infinityforreddit.Fragment.UserListingFragment;
|
||||||
|
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
||||||
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
|
import ml.docilealligator.infinityforreddit.PostDataSource;
|
||||||
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
|
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||||
|
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
||||||
|
|
||||||
import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY;
|
import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY;
|
||||||
import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM;
|
import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM;
|
||||||
@ -64,29 +64,27 @@ public class SearchResultActivity extends AppCompatActivity implements SearchPos
|
|||||||
private static final String NULL_ACCESS_TOKEN_STATE = "NATS";
|
private static final String NULL_ACCESS_TOKEN_STATE = "NATS";
|
||||||
private static final String ACCESS_TOKEN_STATE = "ATS";
|
private static final String ACCESS_TOKEN_STATE = "ATS";
|
||||||
private static final String ACCOUNT_NAME_STATE = "ANS";
|
private static final String ACCOUNT_NAME_STATE = "ANS";
|
||||||
|
@BindView(R.id.appbar_layout_search_result_activity)
|
||||||
|
AppBarLayout appBarLayout;
|
||||||
|
@BindView(R.id.toolbar_search_result_activity)
|
||||||
|
Toolbar toolbar;
|
||||||
|
@BindView(R.id.tab_layout_search_result_activity)
|
||||||
|
TabLayout tabLayout;
|
||||||
|
@BindView(R.id.view_pager_search_result_activity)
|
||||||
|
ViewPager viewPager;
|
||||||
|
@Inject
|
||||||
|
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
|
@Inject
|
||||||
|
SharedPreferences mSharedPreferences;
|
||||||
private boolean mNullAccessToken = false;
|
private boolean mNullAccessToken = false;
|
||||||
private String mAccessToken;
|
private String mAccessToken;
|
||||||
private String mAccountName;
|
private String mAccountName;
|
||||||
private String mQuery;
|
private String mQuery;
|
||||||
private String mSubredditName;
|
private String mSubredditName;
|
||||||
|
|
||||||
@BindView(R.id.appbar_layout_search_result_activity) AppBarLayout appBarLayout;
|
|
||||||
@BindView(R.id.toolbar_search_result_activity) Toolbar toolbar;
|
|
||||||
@BindView(R.id.tab_layout_search_result_activity) TabLayout tabLayout;
|
|
||||||
@BindView(R.id.view_pager_search_result_activity) ViewPager viewPager;
|
|
||||||
|
|
||||||
private SectionsPagerAdapter sectionsPagerAdapter;
|
private SectionsPagerAdapter sectionsPagerAdapter;
|
||||||
|
|
||||||
private SearchPostSortTypeBottomSheetFragment searchPostSortTypeBottomSheetFragment;
|
private SearchPostSortTypeBottomSheetFragment searchPostSortTypeBottomSheetFragment;
|
||||||
private SearchUserAndSubredditSortTypeBottomSheetFragment searchUserAndSubredditSortTypeBottomSheetFragment;
|
private SearchUserAndSubredditSortTypeBottomSheetFragment searchUserAndSubredditSortTypeBottomSheetFragment;
|
||||||
|
|
||||||
@Inject
|
|
||||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
SharedPreferences mSharedPreferences;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -111,12 +109,12 @@ public class SearchResultActivity extends AppCompatActivity implements SearchPos
|
|||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
||||||
Resources resources = getResources();
|
Resources resources = getResources();
|
||||||
|
|
||||||
if(resources.getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT || resources.getBoolean(R.bool.isTablet)) {
|
if (resources.getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT || resources.getBoolean(R.bool.isTablet)) {
|
||||||
Window window = getWindow();
|
Window window = getWindow();
|
||||||
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
||||||
|
|
||||||
boolean lightNavBar = false;
|
boolean lightNavBar = false;
|
||||||
if((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
if ((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
lightNavBar = true;
|
lightNavBar = true;
|
||||||
}
|
}
|
||||||
boolean finalLightNavBar = lightNavBar;
|
boolean finalLightNavBar = lightNavBar;
|
||||||
@ -125,12 +123,12 @@ public class SearchResultActivity extends AppCompatActivity implements SearchPos
|
|||||||
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
||||||
if(state == State.COLLAPSED) {
|
if (state == State.COLLAPSED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
} else if(state == State.EXPANDED) {
|
} else if (state == State.EXPANDED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -156,7 +154,7 @@ public class SearchResultActivity extends AppCompatActivity implements SearchPos
|
|||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(systemDefault) {
|
if (systemDefault) {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
||||||
@ -167,13 +165,13 @@ public class SearchResultActivity extends AppCompatActivity implements SearchPos
|
|||||||
setSupportActionBar(toolbar);
|
setSupportActionBar(toolbar);
|
||||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||||
|
|
||||||
if(savedInstanceState == null) {
|
if (savedInstanceState == null) {
|
||||||
getCurrentAccountAndInitializeViewPager();
|
getCurrentAccountAndInitializeViewPager();
|
||||||
} else {
|
} else {
|
||||||
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
|
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
|
||||||
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
|
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
|
||||||
mAccountName = savedInstanceState.getString(ACCOUNT_NAME_STATE);
|
mAccountName = savedInstanceState.getString(ACCOUNT_NAME_STATE);
|
||||||
if(!mNullAccessToken && mAccessToken == null) {
|
if (!mNullAccessToken && mAccessToken == null) {
|
||||||
getCurrentAccountAndInitializeViewPager();
|
getCurrentAccountAndInitializeViewPager();
|
||||||
} else {
|
} else {
|
||||||
initializeViewPager();
|
initializeViewPager();
|
||||||
@ -192,7 +190,7 @@ public class SearchResultActivity extends AppCompatActivity implements SearchPos
|
|||||||
|
|
||||||
mSubredditName = intent.getStringExtra(EXTRA_SUBREDDIT_NAME);
|
mSubredditName = intent.getStringExtra(EXTRA_SUBREDDIT_NAME);
|
||||||
|
|
||||||
if(query != null) {
|
if (query != null) {
|
||||||
mQuery = query;
|
mQuery = query;
|
||||||
setTitle(query);
|
setTitle(query);
|
||||||
}
|
}
|
||||||
@ -200,7 +198,7 @@ public class SearchResultActivity extends AppCompatActivity implements SearchPos
|
|||||||
|
|
||||||
private void getCurrentAccountAndInitializeViewPager() {
|
private void getCurrentAccountAndInitializeViewPager() {
|
||||||
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
||||||
if(account == null) {
|
if (account == null) {
|
||||||
mNullAccessToken = true;
|
mNullAccessToken = true;
|
||||||
} else {
|
} else {
|
||||||
mAccessToken = account.getAccessToken();
|
mAccessToken = account.getAccessToken();
|
||||||
@ -404,7 +402,7 @@ public class SearchResultActivity extends AppCompatActivity implements SearchPos
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void changeNSFW(boolean nsfw) {
|
public void changeNSFW(boolean nsfw) {
|
||||||
if(postFragment != null) {
|
if (postFragment != null) {
|
||||||
postFragment.changeNSFW(nsfw);
|
postFragment.changeNSFW(nsfw);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,15 +29,15 @@ import javax.inject.Inject;
|
|||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import ml.docilealligator.infinityforreddit.AppBarStateChangeListener;
|
import ml.docilealligator.infinityforreddit.AppBarStateChangeListener;
|
||||||
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
|
||||||
import ml.docilealligator.infinityforreddit.FontStyle;
|
|
||||||
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
|
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
|
||||||
|
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
||||||
|
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
||||||
|
import ml.docilealligator.infinityforreddit.FontStyle;
|
||||||
|
import ml.docilealligator.infinityforreddit.Fragment.SubredditListingFragment;
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.SubredditListingFragment;
|
|
||||||
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
|
||||||
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
||||||
|
|
||||||
import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY;
|
import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_AUTO_BATTERY;
|
||||||
@ -56,21 +56,19 @@ public class SearchSubredditsResultActivity extends AppCompatActivity {
|
|||||||
private static final String ACCOUNT_NAME_STATE = "ANS";
|
private static final String ACCOUNT_NAME_STATE = "ANS";
|
||||||
private static final String FRAGMENT_OUT_STATE = "FOS";
|
private static final String FRAGMENT_OUT_STATE = "FOS";
|
||||||
|
|
||||||
@BindView(R.id.appbar_layout_search_subreddits_result_activity) AppBarLayout appBarLayout;
|
@BindView(R.id.appbar_layout_search_subreddits_result_activity)
|
||||||
@BindView(R.id.toolbar_search_subreddits_result_activity) Toolbar toolbar;
|
AppBarLayout appBarLayout;
|
||||||
|
@BindView(R.id.toolbar_search_subreddits_result_activity)
|
||||||
|
Toolbar toolbar;
|
||||||
|
Fragment mFragment;
|
||||||
|
@Inject
|
||||||
|
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
|
@Inject
|
||||||
|
SharedPreferences mSharedPreferences;
|
||||||
private boolean mNullAccessToken = false;
|
private boolean mNullAccessToken = false;
|
||||||
private String mAccessToken;
|
private String mAccessToken;
|
||||||
private String mAccountName;
|
private String mAccountName;
|
||||||
|
|
||||||
Fragment mFragment;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
SharedPreferences mSharedPreferences;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -95,12 +93,12 @@ public class SearchSubredditsResultActivity extends AppCompatActivity {
|
|||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
||||||
Resources resources = getResources();
|
Resources resources = getResources();
|
||||||
|
|
||||||
if(resources.getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT || resources.getBoolean(R.bool.isTablet)) {
|
if (resources.getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT || resources.getBoolean(R.bool.isTablet)) {
|
||||||
Window window = getWindow();
|
Window window = getWindow();
|
||||||
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
||||||
|
|
||||||
boolean lightNavBar = false;
|
boolean lightNavBar = false;
|
||||||
if((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
if ((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
lightNavBar = true;
|
lightNavBar = true;
|
||||||
}
|
}
|
||||||
boolean finalLightNavBar = lightNavBar;
|
boolean finalLightNavBar = lightNavBar;
|
||||||
@ -109,12 +107,12 @@ public class SearchSubredditsResultActivity extends AppCompatActivity {
|
|||||||
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
||||||
if(state == State.COLLAPSED) {
|
if (state == State.COLLAPSED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
} else if(state == State.EXPANDED) {
|
} else if (state == State.EXPANDED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -140,7 +138,7 @@ public class SearchSubredditsResultActivity extends AppCompatActivity {
|
|||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(systemDefault) {
|
if (systemDefault) {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
||||||
@ -153,13 +151,13 @@ public class SearchSubredditsResultActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
String query = getIntent().getExtras().getString(EXTRA_QUERY);
|
String query = getIntent().getExtras().getString(EXTRA_QUERY);
|
||||||
|
|
||||||
if(savedInstanceState == null) {
|
if (savedInstanceState == null) {
|
||||||
getCurrentAccountAndInitializeFragment(query);
|
getCurrentAccountAndInitializeFragment(query);
|
||||||
} else {
|
} else {
|
||||||
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
|
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
|
||||||
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
|
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
|
||||||
mAccountName = savedInstanceState.getString(ACCOUNT_NAME_STATE);
|
mAccountName = savedInstanceState.getString(ACCOUNT_NAME_STATE);
|
||||||
if(!mNullAccessToken && mAccessToken == null) {
|
if (!mNullAccessToken && mAccessToken == null) {
|
||||||
getCurrentAccountAndInitializeFragment(query);
|
getCurrentAccountAndInitializeFragment(query);
|
||||||
} else {
|
} else {
|
||||||
mFragment = getSupportFragmentManager().getFragment(savedInstanceState, FRAGMENT_OUT_STATE);
|
mFragment = getSupportFragmentManager().getFragment(savedInstanceState, FRAGMENT_OUT_STATE);
|
||||||
@ -170,7 +168,7 @@ public class SearchSubredditsResultActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
private void getCurrentAccountAndInitializeFragment(String query) {
|
private void getCurrentAccountAndInitializeFragment(String query) {
|
||||||
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
||||||
if(account == null) {
|
if (account == null) {
|
||||||
mNullAccessToken = true;
|
mNullAccessToken = true;
|
||||||
} else {
|
} else {
|
||||||
mAccessToken = account.getAccessToken();
|
mAccessToken = account.getAccessToken();
|
||||||
@ -198,7 +196,7 @@ public class SearchSubredditsResultActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||||
if(item.getItemId() == android.R.id.home) {
|
if (item.getItemId() == android.R.id.home) {
|
||||||
finish();
|
finish();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -19,14 +19,14 @@ import androidx.preference.PreferenceFragmentCompat;
|
|||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import butterknife.BindView;
|
||||||
|
import butterknife.ButterKnife;
|
||||||
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
||||||
import ml.docilealligator.infinityforreddit.FontStyle;
|
import ml.docilealligator.infinityforreddit.FontStyle;
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.Settings.AboutPreferenceFragment;
|
import ml.docilealligator.infinityforreddit.Settings.AboutPreferenceFragment;
|
||||||
import ml.docilealligator.infinityforreddit.Settings.MainPreferenceFragment;
|
import ml.docilealligator.infinityforreddit.Settings.MainPreferenceFragment;
|
||||||
import butterknife.BindView;
|
|
||||||
import butterknife.ButterKnife;
|
|
||||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||||
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
||||||
|
|
||||||
@ -40,7 +40,8 @@ public class SettingsActivity extends AppCompatActivity implements
|
|||||||
|
|
||||||
private static final String TITLE_STATE = "TS";
|
private static final String TITLE_STATE = "TS";
|
||||||
|
|
||||||
@BindView(R.id.toolbar_settings_activity) Toolbar toolbar;
|
@BindView(R.id.toolbar_settings_activity)
|
||||||
|
Toolbar toolbar;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
SharedPreferences mSharedPreferences;
|
SharedPreferences mSharedPreferences;
|
||||||
@ -64,9 +65,9 @@ public class SettingsActivity extends AppCompatActivity implements
|
|||||||
|
|
||||||
ButterKnife.bind(this);
|
ButterKnife.bind(this);
|
||||||
|
|
||||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
Window window = getWindow();
|
Window window = getWindow();
|
||||||
if((getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
if ((getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
window.setNavigationBarColor(ContextCompat.getColor(this, R.color.navBarColor));
|
window.setNavigationBarColor(ContextCompat.getColor(this, R.color.navBarColor));
|
||||||
@ -82,7 +83,7 @@ public class SettingsActivity extends AppCompatActivity implements
|
|||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(systemDefault) {
|
if (systemDefault) {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
||||||
@ -113,7 +114,7 @@ public class SettingsActivity extends AppCompatActivity implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||||
if(item.getItemId() == android.R.id.home) {
|
if (item.getItemId() == android.R.id.home) {
|
||||||
onBackPressed();
|
onBackPressed();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -8,10 +8,6 @@ import android.widget.Toast;
|
|||||||
|
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
import ml.docilealligator.infinityforreddit.Activity.PostImageActivity;
|
|
||||||
import ml.docilealligator.infinityforreddit.Activity.PostLinkActivity;
|
|
||||||
import ml.docilealligator.infinityforreddit.Activity.PostTextActivity;
|
|
||||||
import ml.docilealligator.infinityforreddit.Activity.PostVideoActivity;
|
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
|
|
||||||
public class ShareDataResolverActivity extends AppCompatActivity {
|
public class ShareDataResolverActivity extends AppCompatActivity {
|
||||||
@ -24,11 +20,11 @@ public class ShareDataResolverActivity extends AppCompatActivity {
|
|||||||
String action = receivedIntent.getAction();
|
String action = receivedIntent.getAction();
|
||||||
String type = receivedIntent.getType();
|
String type = receivedIntent.getType();
|
||||||
|
|
||||||
if(Intent.ACTION_SEND.equals(action) && type != null) {
|
if (Intent.ACTION_SEND.equals(action) && type != null) {
|
||||||
if("text/plain".equals(type)) {
|
if ("text/plain".equals(type)) {
|
||||||
String text = receivedIntent.getStringExtra(Intent.EXTRA_TEXT);
|
String text = receivedIntent.getStringExtra(Intent.EXTRA_TEXT);
|
||||||
if(text != null) {
|
if (text != null) {
|
||||||
if(Patterns.WEB_URL.matcher(text).matches()) {
|
if (Patterns.WEB_URL.matcher(text).matches()) {
|
||||||
//It's a link
|
//It's a link
|
||||||
Intent intent = new Intent(this, PostLinkActivity.class);
|
Intent intent = new Intent(this, PostLinkActivity.class);
|
||||||
intent.putExtra(PostLinkActivity.EXTRA_LINK, text);
|
intent.putExtra(PostLinkActivity.EXTRA_LINK, text);
|
||||||
@ -41,9 +37,9 @@ public class ShareDataResolverActivity extends AppCompatActivity {
|
|||||||
} else {
|
} else {
|
||||||
Toast.makeText(this, R.string.no_data_received, Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, R.string.no_data_received, Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
} else if(type.equals("image/gif")) {
|
} else if (type.equals("image/gif")) {
|
||||||
Uri videoUri = receivedIntent.getParcelableExtra(Intent.EXTRA_STREAM);
|
Uri videoUri = receivedIntent.getParcelableExtra(Intent.EXTRA_STREAM);
|
||||||
if(videoUri != null) {
|
if (videoUri != null) {
|
||||||
Intent intent = new Intent(this, PostVideoActivity.class);
|
Intent intent = new Intent(this, PostVideoActivity.class);
|
||||||
intent.setData(videoUri);
|
intent.setData(videoUri);
|
||||||
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||||
@ -51,9 +47,9 @@ public class ShareDataResolverActivity extends AppCompatActivity {
|
|||||||
} else {
|
} else {
|
||||||
Toast.makeText(this, R.string.no_video_path_received, Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, R.string.no_video_path_received, Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
} else if(type.startsWith("image/")) {
|
} else if (type.startsWith("image/")) {
|
||||||
Uri imageUri = receivedIntent.getParcelableExtra(Intent.EXTRA_STREAM);
|
Uri imageUri = receivedIntent.getParcelableExtra(Intent.EXTRA_STREAM);
|
||||||
if(imageUri != null) {
|
if (imageUri != null) {
|
||||||
Intent intent = new Intent(this, PostImageActivity.class);
|
Intent intent = new Intent(this, PostImageActivity.class);
|
||||||
intent.setData(imageUri);
|
intent.setData(imageUri);
|
||||||
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||||
@ -61,9 +57,9 @@ public class ShareDataResolverActivity extends AppCompatActivity {
|
|||||||
} else {
|
} else {
|
||||||
Toast.makeText(this, R.string.no_image_path_received, Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, R.string.no_image_path_received, Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
} else if(type.startsWith("video/")) {
|
} else if (type.startsWith("video/")) {
|
||||||
Uri videoUri = receivedIntent.getParcelableExtra(Intent.EXTRA_STREAM);
|
Uri videoUri = receivedIntent.getParcelableExtra(Intent.EXTRA_STREAM);
|
||||||
if(videoUri != null) {
|
if (videoUri != null) {
|
||||||
Intent intent = new Intent(this, PostVideoActivity.class);
|
Intent intent = new Intent(this, PostVideoActivity.class);
|
||||||
intent.setData(videoUri);
|
intent.setData(videoUri);
|
||||||
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||||
|
@ -71,27 +71,24 @@ public class SubredditSelectionActivity extends AppCompatActivity {
|
|||||||
private static final String ACCOUNT_PROFILE_IMAGE_URL = "APIU";
|
private static final String ACCOUNT_PROFILE_IMAGE_URL = "APIU";
|
||||||
private static final String FRAGMENT_OUT_STATE = "FOS";
|
private static final String FRAGMENT_OUT_STATE = "FOS";
|
||||||
|
|
||||||
@BindView(R.id.appbar_layout_subreddit_selection_activity) AppBarLayout appBarLayout;
|
@BindView(R.id.appbar_layout_subreddit_selection_activity)
|
||||||
@BindView(R.id.toolbar_subreddit_selection_activity) Toolbar toolbar;
|
AppBarLayout appBarLayout;
|
||||||
|
@BindView(R.id.toolbar_subreddit_selection_activity)
|
||||||
|
Toolbar toolbar;
|
||||||
|
@Inject
|
||||||
|
@Named("oauth")
|
||||||
|
Retrofit mOauthRetrofit;
|
||||||
|
@Inject
|
||||||
|
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
|
@Inject
|
||||||
|
SharedPreferences mSharedPreferences;
|
||||||
private boolean mNullAccessToken = false;
|
private boolean mNullAccessToken = false;
|
||||||
private String mAccessToken;
|
private String mAccessToken;
|
||||||
private String mAccountName;
|
private String mAccountName;
|
||||||
private String mAccountProfileImageUrl;
|
private String mAccountProfileImageUrl;
|
||||||
private boolean mInsertSuccess = false;
|
private boolean mInsertSuccess = false;
|
||||||
|
|
||||||
private Fragment mFragment;
|
private Fragment mFragment;
|
||||||
|
|
||||||
@Inject
|
|
||||||
@Named("oauth")
|
|
||||||
Retrofit mOauthRetrofit;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
SharedPreferences mSharedPreferences;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -116,29 +113,29 @@ public class SubredditSelectionActivity extends AppCompatActivity {
|
|||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
||||||
Resources resources = getResources();
|
Resources resources = getResources();
|
||||||
|
|
||||||
if(resources.getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT || resources.getBoolean(R.bool.isTablet)) {
|
if (resources.getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT || resources.getBoolean(R.bool.isTablet)) {
|
||||||
Window window = getWindow();
|
Window window = getWindow();
|
||||||
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
||||||
|
|
||||||
boolean lightNavBar = false;
|
boolean lightNavBar = false;
|
||||||
if((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
if ((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
lightNavBar = true;
|
lightNavBar = true;
|
||||||
}
|
}
|
||||||
boolean finalLightNavBar = lightNavBar;
|
boolean finalLightNavBar = lightNavBar;
|
||||||
|
|
||||||
View decorView = window.getDecorView();
|
View decorView = window.getDecorView();
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
||||||
if(state == State.COLLAPSED) {
|
if (state == State.COLLAPSED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
} else if(state == State.EXPANDED) {
|
} else if (state == State.EXPANDED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -164,7 +161,7 @@ public class SubredditSelectionActivity extends AppCompatActivity {
|
|||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(systemDefault) {
|
if (systemDefault) {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
||||||
@ -175,7 +172,7 @@ public class SubredditSelectionActivity extends AppCompatActivity {
|
|||||||
setSupportActionBar(toolbar);
|
setSupportActionBar(toolbar);
|
||||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||||
|
|
||||||
if(savedInstanceState == null) {
|
if (savedInstanceState == null) {
|
||||||
getCurrentAccountAndBindView();
|
getCurrentAccountAndBindView();
|
||||||
} else {
|
} else {
|
||||||
mInsertSuccess = savedInstanceState.getBoolean(INSERT_SUBSCRIBED_SUBREDDIT_STATE);
|
mInsertSuccess = savedInstanceState.getBoolean(INSERT_SUBSCRIBED_SUBREDDIT_STATE);
|
||||||
@ -184,7 +181,7 @@ public class SubredditSelectionActivity extends AppCompatActivity {
|
|||||||
mAccountName = savedInstanceState.getString(ACCOUNT_NAME_STATE);
|
mAccountName = savedInstanceState.getString(ACCOUNT_NAME_STATE);
|
||||||
mAccountProfileImageUrl = savedInstanceState.getString(ACCOUNT_PROFILE_IMAGE_URL);
|
mAccountProfileImageUrl = savedInstanceState.getString(ACCOUNT_PROFILE_IMAGE_URL);
|
||||||
|
|
||||||
if(!mNullAccessToken && mAccountName == null) {
|
if (!mNullAccessToken && mAccountName == null) {
|
||||||
getCurrentAccountAndBindView();
|
getCurrentAccountAndBindView();
|
||||||
} else {
|
} else {
|
||||||
mFragment = getSupportFragmentManager().getFragment(savedInstanceState, FRAGMENT_OUT_STATE);
|
mFragment = getSupportFragmentManager().getFragment(savedInstanceState, FRAGMENT_OUT_STATE);
|
||||||
@ -195,7 +192,7 @@ public class SubredditSelectionActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
private void getCurrentAccountAndBindView() {
|
private void getCurrentAccountAndBindView() {
|
||||||
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
||||||
if(account == null) {
|
if (account == null) {
|
||||||
mNullAccessToken = true;
|
mNullAccessToken = true;
|
||||||
} else {
|
} else {
|
||||||
mAccessToken = account.getAccessToken();
|
mAccessToken = account.getAccessToken();
|
||||||
@ -214,7 +211,7 @@ public class SubredditSelectionActivity extends AppCompatActivity {
|
|||||||
bundle.putString(SubscribedSubredditsListingFragment.EXTRA_ACCOUNT_NAME, mAccountName);
|
bundle.putString(SubscribedSubredditsListingFragment.EXTRA_ACCOUNT_NAME, mAccountName);
|
||||||
bundle.putString(SubscribedSubredditsListingFragment.EXTRA_ACCOUNT_PROFILE_IMAGE_URL, mAccountProfileImageUrl);
|
bundle.putString(SubscribedSubredditsListingFragment.EXTRA_ACCOUNT_PROFILE_IMAGE_URL, mAccountProfileImageUrl);
|
||||||
bundle.putBoolean(SubscribedSubredditsListingFragment.EXTRA_IS_SUBREDDIT_SELECTION, true);
|
bundle.putBoolean(SubscribedSubredditsListingFragment.EXTRA_IS_SUBREDDIT_SELECTION, true);
|
||||||
if(getIntent().hasExtra(EXTRA_EXTRA_CLEAR_SELECTION)) {
|
if (getIntent().hasExtra(EXTRA_EXTRA_CLEAR_SELECTION)) {
|
||||||
bundle.putBoolean(SubscribedSubredditsListingFragment.EXTRA_EXTRA_CLEAR_SELECTION,
|
bundle.putBoolean(SubscribedSubredditsListingFragment.EXTRA_EXTRA_CLEAR_SELECTION,
|
||||||
getIntent().getExtras().getBoolean(EXTRA_EXTRA_CLEAR_SELECTION));
|
getIntent().getExtras().getBoolean(EXTRA_EXTRA_CLEAR_SELECTION));
|
||||||
}
|
}
|
||||||
@ -282,8 +279,8 @@ public class SubredditSelectionActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
||||||
if(requestCode == SUBREDDIT_SEARCH_REQUEST_CODE) {
|
if (requestCode == SUBREDDIT_SEARCH_REQUEST_CODE) {
|
||||||
if(resultCode == RESULT_OK) {
|
if (resultCode == RESULT_OK) {
|
||||||
String name = data.getStringExtra(SearchActivity.EXTRA_RETURN_SUBREDDIT_NAME);
|
String name = data.getStringExtra(SearchActivity.EXTRA_RETURN_SUBREDDIT_NAME);
|
||||||
String iconUrl = data.getStringExtra(SearchActivity.EXTRA_RETURN_SUBREDDIT_ICON_URL);
|
String iconUrl = data.getStringExtra(SearchActivity.EXTRA_RETURN_SUBREDDIT_ICON_URL);
|
||||||
Intent returnIntent = new Intent();
|
Intent returnIntent = new Intent();
|
||||||
|
@ -64,28 +64,27 @@ public class SubscribedThingListingActivity extends AppCompatActivity {
|
|||||||
private static final String ACCESS_TOKEN_STATE = "ATS";
|
private static final String ACCESS_TOKEN_STATE = "ATS";
|
||||||
private static final String ACCOUNT_NAME_STATE = "ANS";
|
private static final String ACCOUNT_NAME_STATE = "ANS";
|
||||||
|
|
||||||
@BindView(R.id.appbar_layout_subscribed_thing_listing_activity) AppBarLayout appBarLayout;
|
@BindView(R.id.appbar_layout_subscribed_thing_listing_activity)
|
||||||
@BindView(R.id.toolbar_subscribed_thing_listing_activity) Toolbar toolbar;
|
AppBarLayout appBarLayout;
|
||||||
@BindView(R.id.tab_layout_subscribed_thing_listing_activity) TabLayout tabLayout;
|
@BindView(R.id.toolbar_subscribed_thing_listing_activity)
|
||||||
@BindView(R.id.view_pager_subscribed_thing_listing_activity) ViewPager viewPager;
|
Toolbar toolbar;
|
||||||
|
@BindView(R.id.tab_layout_subscribed_thing_listing_activity)
|
||||||
|
TabLayout tabLayout;
|
||||||
|
@BindView(R.id.view_pager_subscribed_thing_listing_activity)
|
||||||
|
ViewPager viewPager;
|
||||||
|
@Inject
|
||||||
|
@Named("oauth")
|
||||||
|
Retrofit mOauthRetrofit;
|
||||||
|
@Inject
|
||||||
|
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
|
@Inject
|
||||||
|
SharedPreferences mSharedPreferences;
|
||||||
private boolean mNullAccessToken = false;
|
private boolean mNullAccessToken = false;
|
||||||
private String mAccessToken;
|
private String mAccessToken;
|
||||||
private String mAccountName;
|
private String mAccountName;
|
||||||
private boolean mInsertSuccess = false;
|
private boolean mInsertSuccess = false;
|
||||||
|
|
||||||
private SectionsPagerAdapter sectionsPagerAdapter;
|
private SectionsPagerAdapter sectionsPagerAdapter;
|
||||||
|
|
||||||
@Inject
|
|
||||||
@Named("oauth")
|
|
||||||
Retrofit mOauthRetrofit;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
SharedPreferences mSharedPreferences;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -110,29 +109,29 @@ public class SubscribedThingListingActivity extends AppCompatActivity {
|
|||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
||||||
Resources resources = getResources();
|
Resources resources = getResources();
|
||||||
|
|
||||||
if(resources.getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT || resources.getBoolean(R.bool.isTablet)) {
|
if (resources.getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT || resources.getBoolean(R.bool.isTablet)) {
|
||||||
Window window = getWindow();
|
Window window = getWindow();
|
||||||
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
||||||
|
|
||||||
boolean lightNavBar = false;
|
boolean lightNavBar = false;
|
||||||
if((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
if ((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
lightNavBar = true;
|
lightNavBar = true;
|
||||||
}
|
}
|
||||||
boolean finalLightNavBar = lightNavBar;
|
boolean finalLightNavBar = lightNavBar;
|
||||||
|
|
||||||
View decorView = window.getDecorView();
|
View decorView = window.getDecorView();
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
||||||
if(state == State.COLLAPSED) {
|
if (state == State.COLLAPSED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
} else if(state == State.EXPANDED) {
|
} else if (state == State.EXPANDED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -158,7 +157,7 @@ public class SubscribedThingListingActivity extends AppCompatActivity {
|
|||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(systemDefault) {
|
if (systemDefault) {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
||||||
@ -169,12 +168,12 @@ public class SubscribedThingListingActivity extends AppCompatActivity {
|
|||||||
setSupportActionBar(toolbar);
|
setSupportActionBar(toolbar);
|
||||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||||
|
|
||||||
if(savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
mInsertSuccess = savedInstanceState.getBoolean(INSERT_SUBSCRIBED_SUBREDDIT_STATE);
|
mInsertSuccess = savedInstanceState.getBoolean(INSERT_SUBSCRIBED_SUBREDDIT_STATE);
|
||||||
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
|
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
|
||||||
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
|
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
|
||||||
mAccountName = savedInstanceState.getString(ACCOUNT_NAME_STATE);
|
mAccountName = savedInstanceState.getString(ACCOUNT_NAME_STATE);
|
||||||
if(!mNullAccessToken && mAccessToken == null) {
|
if (!mNullAccessToken && mAccessToken == null) {
|
||||||
getCurrentAccountAndInitializeViewPager();
|
getCurrentAccountAndInitializeViewPager();
|
||||||
} else {
|
} else {
|
||||||
initializeViewPagerAndLoadSubscriptions();
|
initializeViewPagerAndLoadSubscriptions();
|
||||||
@ -186,7 +185,7 @@ public class SubscribedThingListingActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
private void getCurrentAccountAndInitializeViewPager() {
|
private void getCurrentAccountAndInitializeViewPager() {
|
||||||
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
||||||
if(account == null) {
|
if (account == null) {
|
||||||
mNullAccessToken = true;
|
mNullAccessToken = true;
|
||||||
} else {
|
} else {
|
||||||
mAccessToken = account.getAccessToken();
|
mAccessToken = account.getAccessToken();
|
||||||
@ -207,7 +206,7 @@ public class SubscribedThingListingActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||||
if(item.getItemId() == android.R.id.home) {
|
if (item.getItemId() == android.R.id.home) {
|
||||||
finish();
|
finish();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -280,8 +279,7 @@ public class SubscribedThingListingActivity extends AppCompatActivity {
|
|||||||
fragment.setArguments(bundle);
|
fragment.setArguments(bundle);
|
||||||
return fragment;
|
return fragment;
|
||||||
}
|
}
|
||||||
default:
|
default: {
|
||||||
{
|
|
||||||
FollowedUsersListingFragment fragment = new FollowedUsersListingFragment();
|
FollowedUsersListingFragment fragment = new FollowedUsersListingFragment();
|
||||||
Bundle bundle = new Bundle();
|
Bundle bundle = new Bundle();
|
||||||
bundle.putString(FollowedUsersListingFragment.EXTRA_ACCOUNT_NAME, mAccountName);
|
bundle.putString(FollowedUsersListingFragment.EXTRA_ACCOUNT_NAME, mAccountName);
|
||||||
|
@ -59,35 +59,31 @@ import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
|||||||
|
|
||||||
public class ViewImageActivity extends AppCompatActivity {
|
public class ViewImageActivity extends AppCompatActivity {
|
||||||
|
|
||||||
private static final int PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE = 0;
|
|
||||||
|
|
||||||
public static final String TITLE_KEY = "TK";
|
public static final String TITLE_KEY = "TK";
|
||||||
public static final String IMAGE_URL_KEY = "IUK";
|
public static final String IMAGE_URL_KEY = "IUK";
|
||||||
public static final String FILE_NAME_KEY = "FNK";
|
public static final String FILE_NAME_KEY = "FNK";
|
||||||
|
private static final int PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE = 0;
|
||||||
@BindView(R.id.parent_relative_layout_view_image_activity) RelativeLayout mRelativeLayout;
|
@BindView(R.id.parent_relative_layout_view_image_activity)
|
||||||
@BindView(R.id.progress_bar_view_image_activity) ProgressBar mProgressBar;
|
RelativeLayout mRelativeLayout;
|
||||||
@BindView(R.id.image_view_view_image_activity) GestureImageView mImageView;
|
@BindView(R.id.progress_bar_view_image_activity)
|
||||||
@BindView(R.id.load_image_error_linear_layout_view_image_activity) LinearLayout mLoadErrorLinearLayout;
|
ProgressBar mProgressBar;
|
||||||
|
@BindView(R.id.image_view_view_image_activity)
|
||||||
|
GestureImageView mImageView;
|
||||||
|
@BindView(R.id.load_image_error_linear_layout_view_image_activity)
|
||||||
|
LinearLayout mLoadErrorLinearLayout;
|
||||||
|
@Inject
|
||||||
|
SharedPreferences mSharedPreferences;
|
||||||
private boolean isActionBarHidden = false;
|
private boolean isActionBarHidden = false;
|
||||||
private boolean isDownloading = false;
|
private boolean isDownloading = false;
|
||||||
|
|
||||||
private Menu mMenu;
|
private Menu mMenu;
|
||||||
private Swipe swipe;
|
private Swipe swipe;
|
||||||
|
|
||||||
private String mImageUrl;
|
private String mImageUrl;
|
||||||
private String mImageFileName;
|
private String mImageFileName;
|
||||||
|
|
||||||
private float totalLengthY = 0.0f;
|
private float totalLengthY = 0.0f;
|
||||||
private float touchY = -1.0f;
|
private float touchY = -1.0f;
|
||||||
private float zoom = 1.0f;
|
private float zoom = 1.0f;
|
||||||
|
|
||||||
private boolean isSwiping = false;
|
private boolean isSwiping = false;
|
||||||
|
|
||||||
@Inject
|
|
||||||
SharedPreferences mSharedPreferences;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -118,7 +114,7 @@ public class ViewImageActivity extends AppCompatActivity {
|
|||||||
mImageFileName = intent.getStringExtra(FILE_NAME_KEY) + ".jpg";
|
mImageFileName = intent.getStringExtra(FILE_NAME_KEY) + ".jpg";
|
||||||
|
|
||||||
mLoadErrorLinearLayout.setOnClickListener(view -> {
|
mLoadErrorLinearLayout.setOnClickListener(view -> {
|
||||||
if(!isSwiping) {
|
if (!isSwiping) {
|
||||||
mProgressBar.setVisibility(View.VISIBLE);
|
mProgressBar.setVisibility(View.VISIBLE);
|
||||||
mLoadErrorLinearLayout.setVisibility(View.GONE);
|
mLoadErrorLinearLayout.setVisibility(View.GONE);
|
||||||
loadImage();
|
loadImage();
|
||||||
@ -146,7 +142,7 @@ public class ViewImageActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
actionBarElementColorAnimation.addUpdateListener(valueAnimator -> {
|
actionBarElementColorAnimation.addUpdateListener(valueAnimator -> {
|
||||||
upArrow.setColorFilter((int) valueAnimator.getAnimatedValue(), PorterDuff.Mode.SRC_IN);
|
upArrow.setColorFilter((int) valueAnimator.getAnimatedValue(), PorterDuff.Mode.SRC_IN);
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
Drawable drawable = mMenu.getItem(0).getIcon();
|
Drawable drawable = mMenu.getItem(0).getIcon();
|
||||||
//drawable.mutate();
|
//drawable.mutate();
|
||||||
drawable.setColorFilter((int) valueAnimator.getAnimatedValue(), PorterDuff.Mode.SRC_IN);
|
drawable.setColorFilter((int) valueAnimator.getAnimatedValue(), PorterDuff.Mode.SRC_IN);
|
||||||
@ -398,7 +394,7 @@ public class ViewImageActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean dispatchTouchEvent(MotionEvent ev) {
|
public boolean dispatchTouchEvent(MotionEvent ev) {
|
||||||
if(zoom == 1.0) {
|
if (zoom == 1.0) {
|
||||||
swipe.dispatchTouchEvent(ev);
|
swipe.dispatchTouchEvent(ev);
|
||||||
}
|
}
|
||||||
return super.dispatchTouchEvent(ev);
|
return super.dispatchTouchEvent(ev);
|
||||||
@ -406,10 +402,10 @@ public class ViewImageActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
||||||
if(requestCode == PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE && grantResults.length > 0) {
|
if (requestCode == PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE && grantResults.length > 0) {
|
||||||
if(grantResults[0] == PackageManager.PERMISSION_DENIED) {
|
if (grantResults[0] == PackageManager.PERMISSION_DENIED) {
|
||||||
Toast.makeText(this, R.string.no_storage_permission, Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, R.string.no_storage_permission, Toast.LENGTH_SHORT).show();
|
||||||
} else if(grantResults[0] == PackageManager.PERMISSION_GRANTED && isDownloading) {
|
} else if (grantResults[0] == PackageManager.PERMISSION_GRANTED && isDownloading) {
|
||||||
saveImage();
|
saveImage();
|
||||||
}
|
}
|
||||||
isDownloading = false;
|
isDownloading = false;
|
||||||
@ -424,25 +420,25 @@ public class ViewImageActivity extends AppCompatActivity {
|
|||||||
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
|
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
|
||||||
|
|
||||||
//Android Q support
|
//Android Q support
|
||||||
if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||||
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_PICTURES, mImageFileName);
|
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_PICTURES, mImageFileName);
|
||||||
} else {
|
} else {
|
||||||
String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString();
|
String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString();
|
||||||
File directory = new File(path + "/Infinity/");
|
File directory = new File(path + "/Infinity/");
|
||||||
boolean saveToInfinityFolder = true;
|
boolean saveToInfinityFolder = true;
|
||||||
if(!directory.exists()) {
|
if (!directory.exists()) {
|
||||||
if(!directory.mkdir()) {
|
if (!directory.mkdir()) {
|
||||||
saveToInfinityFolder = false;
|
saveToInfinityFolder = false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(directory.isFile()) {
|
if (directory.isFile()) {
|
||||||
if(!(directory.delete() && directory.mkdir())) {
|
if (!(directory.delete() && directory.mkdir())) {
|
||||||
saveToInfinityFolder = false;
|
saveToInfinityFolder = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(saveToInfinityFolder) {
|
if (saveToInfinityFolder) {
|
||||||
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_PICTURES + "/Infinity/", mImageFileName);
|
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_PICTURES + "/Infinity/", mImageFileName);
|
||||||
} else {
|
} else {
|
||||||
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_PICTURES, mImageFileName);
|
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_PICTURES, mImageFileName);
|
||||||
@ -451,7 +447,7 @@ public class ViewImageActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
|
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
|
||||||
|
|
||||||
if(manager == null) {
|
if (manager == null) {
|
||||||
Toast.makeText(this, R.string.download_failed, Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, R.string.download_failed, Toast.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -39,20 +39,20 @@ import javax.inject.Named;
|
|||||||
|
|
||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
|
import ml.docilealligator.infinityforreddit.Adapter.MessageRecyclerViewAdapter;
|
||||||
import ml.docilealligator.infinityforreddit.AppBarStateChangeListener;
|
import ml.docilealligator.infinityforreddit.AppBarStateChangeListener;
|
||||||
|
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
|
||||||
|
import ml.docilealligator.infinityforreddit.AsyncTask.SwitchAccountAsyncTask;
|
||||||
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
||||||
|
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
||||||
import ml.docilealligator.infinityforreddit.FetchMessages;
|
import ml.docilealligator.infinityforreddit.FetchMessages;
|
||||||
import ml.docilealligator.infinityforreddit.FontStyle;
|
import ml.docilealligator.infinityforreddit.FontStyle;
|
||||||
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
|
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.Adapter.MessageRecyclerViewAdapter;
|
|
||||||
import ml.docilealligator.infinityforreddit.MessageViewModel;
|
import ml.docilealligator.infinityforreddit.MessageViewModel;
|
||||||
import ml.docilealligator.infinityforreddit.NetworkState;
|
import ml.docilealligator.infinityforreddit.NetworkState;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||||
import ml.docilealligator.infinityforreddit.AsyncTask.SwitchAccountAsyncTask;
|
|
||||||
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
|
||||||
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
@ -69,34 +69,35 @@ public class ViewMessageActivity extends AppCompatActivity {
|
|||||||
private static final String ACCESS_TOKEN_STATE = "ATS";
|
private static final String ACCESS_TOKEN_STATE = "ATS";
|
||||||
private static final String NEW_ACCOUNT_NAME_STATE = "NANS";
|
private static final String NEW_ACCOUNT_NAME_STATE = "NANS";
|
||||||
|
|
||||||
@BindView(R.id.collapsing_toolbar_layout_view_message_activity) CollapsingToolbarLayout collapsingToolbarLayout;
|
@BindView(R.id.collapsing_toolbar_layout_view_message_activity)
|
||||||
@BindView(R.id.appbar_layout_view_message_activity) AppBarLayout appBarLayout;
|
CollapsingToolbarLayout collapsingToolbarLayout;
|
||||||
@BindView(R.id.toolbar_view_message_activity) Toolbar toolbar;
|
@BindView(R.id.appbar_layout_view_message_activity)
|
||||||
@BindView(R.id.progress_bar_view_message_activity) CircleProgressBar mProgressBar;
|
AppBarLayout appBarLayout;
|
||||||
@BindView(R.id.recycler_view_view_message_activity) RecyclerView recyclerView;
|
@BindView(R.id.toolbar_view_message_activity)
|
||||||
@BindView(R.id.fetch_messages_info_linear_layout_view_message_activity) LinearLayout mFetchMessageInfoLinearLayout;
|
Toolbar toolbar;
|
||||||
@BindView(R.id.fetch_messages_info_image_view_view_message_activity) ImageView mFetchMessageInfoImageView;
|
@BindView(R.id.progress_bar_view_message_activity)
|
||||||
@BindView(R.id.fetch_messages_info_text_view_view_message_activity) TextView mFetchMessageInfoTextView;
|
CircleProgressBar mProgressBar;
|
||||||
|
@BindView(R.id.recycler_view_view_message_activity)
|
||||||
private boolean mNullAccessToken = false;
|
RecyclerView recyclerView;
|
||||||
private String mAccessToken;
|
@BindView(R.id.fetch_messages_info_linear_layout_view_message_activity)
|
||||||
private String mNewAccountName;
|
LinearLayout mFetchMessageInfoLinearLayout;
|
||||||
|
@BindView(R.id.fetch_messages_info_image_view_view_message_activity)
|
||||||
private MessageRecyclerViewAdapter mAdapter;
|
ImageView mFetchMessageInfoImageView;
|
||||||
|
@BindView(R.id.fetch_messages_info_text_view_view_message_activity)
|
||||||
private RequestManager mGlide;
|
TextView mFetchMessageInfoTextView;
|
||||||
|
|
||||||
MessageViewModel mMessageViewModel;
|
MessageViewModel mMessageViewModel;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@Named("oauth")
|
@Named("oauth")
|
||||||
Retrofit mOauthRetrofit;
|
Retrofit mOauthRetrofit;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
SharedPreferences mSharedPreferences;
|
SharedPreferences mSharedPreferences;
|
||||||
|
private boolean mNullAccessToken = false;
|
||||||
|
private String mAccessToken;
|
||||||
|
private String mNewAccountName;
|
||||||
|
private MessageRecyclerViewAdapter mAdapter;
|
||||||
|
private RequestManager mGlide;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
@ -130,24 +131,24 @@ public class ViewMessageActivity extends AppCompatActivity {
|
|||||||
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
||||||
|
|
||||||
boolean lightNavBar = false;
|
boolean lightNavBar = false;
|
||||||
if((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
if ((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
lightNavBar = true;
|
lightNavBar = true;
|
||||||
}
|
}
|
||||||
boolean finalLightNavBar = lightNavBar;
|
boolean finalLightNavBar = lightNavBar;
|
||||||
|
|
||||||
View decorView = window.getDecorView();
|
View decorView = window.getDecorView();
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
||||||
if (state == State.COLLAPSED) {
|
if (state == State.COLLAPSED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
} else if (state == State.EXPANDED) {
|
} else if (state == State.EXPANDED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -177,7 +178,7 @@ public class ViewMessageActivity extends AppCompatActivity {
|
|||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(systemDefault) {
|
if (systemDefault) {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
||||||
@ -188,12 +189,12 @@ public class ViewMessageActivity extends AppCompatActivity {
|
|||||||
toolbar.setTitle(R.string.inbox);
|
toolbar.setTitle(R.string.inbox);
|
||||||
setSupportActionBar(toolbar);
|
setSupportActionBar(toolbar);
|
||||||
|
|
||||||
if(savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
|
mNullAccessToken = savedInstanceState.getBoolean(NULL_ACCESS_TOKEN_STATE);
|
||||||
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
|
mAccessToken = savedInstanceState.getString(ACCESS_TOKEN_STATE);
|
||||||
mNewAccountName = savedInstanceState.getString(NEW_ACCOUNT_NAME_STATE);
|
mNewAccountName = savedInstanceState.getString(NEW_ACCOUNT_NAME_STATE);
|
||||||
|
|
||||||
if(!mNullAccessToken && mAccessToken == null) {
|
if (!mNullAccessToken && mAccessToken == null) {
|
||||||
getCurrentAccountAndFetchMessage();
|
getCurrentAccountAndFetchMessage();
|
||||||
} else {
|
} else {
|
||||||
bindView();
|
bindView();
|
||||||
@ -206,14 +207,14 @@ public class ViewMessageActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
private void getCurrentAccountAndFetchMessage() {
|
private void getCurrentAccountAndFetchMessage() {
|
||||||
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
||||||
if(mNewAccountName != null) {
|
if (mNewAccountName != null) {
|
||||||
if(account == null || !account.getUsername().equals(mNewAccountName)) {
|
if (account == null || !account.getUsername().equals(mNewAccountName)) {
|
||||||
new SwitchAccountAsyncTask(mRedditDataRoomDatabase, mNewAccountName, newAccount -> {
|
new SwitchAccountAsyncTask(mRedditDataRoomDatabase, mNewAccountName, newAccount -> {
|
||||||
EventBus.getDefault().post(new SwitchAccountEvent(getClass().getName()));
|
EventBus.getDefault().post(new SwitchAccountEvent(getClass().getName()));
|
||||||
Toast.makeText(this, R.string.account_switched, Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, R.string.account_switched, Toast.LENGTH_SHORT).show();
|
||||||
|
|
||||||
mNewAccountName = null;
|
mNewAccountName = null;
|
||||||
if(newAccount == null) {
|
if (newAccount == null) {
|
||||||
mNullAccessToken = true;
|
mNullAccessToken = true;
|
||||||
} else {
|
} else {
|
||||||
mAccessToken = newAccount.getAccessToken();
|
mAccessToken = newAccount.getAccessToken();
|
||||||
@ -226,7 +227,7 @@ public class ViewMessageActivity extends AppCompatActivity {
|
|||||||
bindView();
|
bindView();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(account == null) {
|
if (account == null) {
|
||||||
mNullAccessToken = true;
|
mNullAccessToken = true;
|
||||||
} else {
|
} else {
|
||||||
mAccessToken = account.getAccessToken();
|
mAccessToken = account.getAccessToken();
|
||||||
@ -253,7 +254,7 @@ public class ViewMessageActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
mMessageViewModel.hasMessage().observe(this, hasMessage -> {
|
mMessageViewModel.hasMessage().observe(this, hasMessage -> {
|
||||||
mProgressBar.setVisibility(View.GONE);
|
mProgressBar.setVisibility(View.GONE);
|
||||||
if(hasMessage) {
|
if (hasMessage) {
|
||||||
mFetchMessageInfoLinearLayout.setVisibility(View.GONE);
|
mFetchMessageInfoLinearLayout.setVisibility(View.GONE);
|
||||||
} else {
|
} else {
|
||||||
mFetchMessageInfoLinearLayout.setOnClickListener(view -> {
|
mFetchMessageInfoLinearLayout.setOnClickListener(view -> {
|
||||||
@ -264,9 +265,9 @@ public class ViewMessageActivity extends AppCompatActivity {
|
|||||||
});
|
});
|
||||||
|
|
||||||
mMessageViewModel.getInitialLoadingState().observe(this, networkState -> {
|
mMessageViewModel.getInitialLoadingState().observe(this, networkState -> {
|
||||||
if(networkState.getStatus().equals(NetworkState.Status.SUCCESS)) {
|
if (networkState.getStatus().equals(NetworkState.Status.SUCCESS)) {
|
||||||
mProgressBar.setVisibility(View.GONE);
|
mProgressBar.setVisibility(View.GONE);
|
||||||
} else if(networkState.getStatus().equals(NetworkState.Status.FAILED)) {
|
} else if (networkState.getStatus().equals(NetworkState.Status.FAILED)) {
|
||||||
mProgressBar.setVisibility(View.GONE);
|
mProgressBar.setVisibility(View.GONE);
|
||||||
mFetchMessageInfoLinearLayout.setOnClickListener(view -> {
|
mFetchMessageInfoLinearLayout.setOnClickListener(view -> {
|
||||||
mFetchMessageInfoLinearLayout.setVisibility(View.GONE);
|
mFetchMessageInfoLinearLayout.setVisibility(View.GONE);
|
||||||
@ -299,11 +300,11 @@ public class ViewMessageActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||||
if(item.getItemId() == R.id.action_refresh_view_message_activity) {
|
if (item.getItemId() == R.id.action_refresh_view_message_activity) {
|
||||||
mMessageViewModel.refresh();
|
mMessageViewModel.refresh();
|
||||||
mAdapter.setNetworkState(null);
|
mAdapter.setNetworkState(null);
|
||||||
return true;
|
return true;
|
||||||
} else if(item.getItemId() == android.R.id.home) {
|
} else if (item.getItemId() == android.R.id.home) {
|
||||||
finish();
|
finish();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -326,7 +327,7 @@ public class ViewMessageActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onAccountSwitchEvent(SwitchAccountEvent event) {
|
public void onAccountSwitchEvent(SwitchAccountEvent event) {
|
||||||
if(!getClass().getName().equals(event.excludeActivityClassName)) {
|
if (!getClass().getName().equals(event.excludeActivityClassName)) {
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,26 +48,28 @@ import javax.inject.Named;
|
|||||||
|
|
||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import ml.docilealligator.infinityforreddit.AppBarStateChangeListener;
|
|
||||||
import ml.docilealligator.infinityforreddit.Event.ChangeNSFWBlurEvent;
|
|
||||||
import ml.docilealligator.infinityforreddit.Event.ChangeSpoilerBlurEvent;
|
|
||||||
import ml.docilealligator.infinityforreddit.Adapter.CommentAndPostRecyclerViewAdapter;
|
import ml.docilealligator.infinityforreddit.Adapter.CommentAndPostRecyclerViewAdapter;
|
||||||
|
import ml.docilealligator.infinityforreddit.AppBarStateChangeListener;
|
||||||
|
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
|
||||||
|
import ml.docilealligator.infinityforreddit.AsyncTask.SwitchAccountAsyncTask;
|
||||||
import ml.docilealligator.infinityforreddit.CommentData;
|
import ml.docilealligator.infinityforreddit.CommentData;
|
||||||
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
||||||
import ml.docilealligator.infinityforreddit.DeleteThing;
|
import ml.docilealligator.infinityforreddit.DeleteThing;
|
||||||
|
import ml.docilealligator.infinityforreddit.Event.ChangeNSFWBlurEvent;
|
||||||
|
import ml.docilealligator.infinityforreddit.Event.ChangeSpoilerBlurEvent;
|
||||||
|
import ml.docilealligator.infinityforreddit.Event.PostUpdateEventToDetailActivity;
|
||||||
|
import ml.docilealligator.infinityforreddit.Event.PostUpdateEventToPostList;
|
||||||
|
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
||||||
import ml.docilealligator.infinityforreddit.FetchComment;
|
import ml.docilealligator.infinityforreddit.FetchComment;
|
||||||
import ml.docilealligator.infinityforreddit.FetchPost;
|
import ml.docilealligator.infinityforreddit.FetchPost;
|
||||||
import ml.docilealligator.infinityforreddit.Flair;
|
import ml.docilealligator.infinityforreddit.Flair;
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.FlairBottomSheetFragment;
|
|
||||||
import ml.docilealligator.infinityforreddit.FontStyle;
|
import ml.docilealligator.infinityforreddit.FontStyle;
|
||||||
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
|
import ml.docilealligator.infinityforreddit.Fragment.FlairBottomSheetFragment;
|
||||||
import ml.docilealligator.infinityforreddit.HidePost;
|
import ml.docilealligator.infinityforreddit.HidePost;
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.ParseComment;
|
import ml.docilealligator.infinityforreddit.ParseComment;
|
||||||
import ml.docilealligator.infinityforreddit.ParsePost;
|
import ml.docilealligator.infinityforreddit.ParsePost;
|
||||||
import ml.docilealligator.infinityforreddit.Post;
|
import ml.docilealligator.infinityforreddit.Post;
|
||||||
import ml.docilealligator.infinityforreddit.Event.PostUpdateEventToDetailActivity;
|
|
||||||
import ml.docilealligator.infinityforreddit.Event.PostUpdateEventToPostList;
|
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.ReadMessage;
|
import ml.docilealligator.infinityforreddit.ReadMessage;
|
||||||
import ml.docilealligator.infinityforreddit.RedditAPI;
|
import ml.docilealligator.infinityforreddit.RedditAPI;
|
||||||
@ -75,8 +77,6 @@ import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
|||||||
import ml.docilealligator.infinityforreddit.RedditUtils;
|
import ml.docilealligator.infinityforreddit.RedditUtils;
|
||||||
import ml.docilealligator.infinityforreddit.SaveThing;
|
import ml.docilealligator.infinityforreddit.SaveThing;
|
||||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||||
import ml.docilealligator.infinityforreddit.AsyncTask.SwitchAccountAsyncTask;
|
|
||||||
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
|
||||||
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
import retrofit2.Callback;
|
import retrofit2.Callback;
|
||||||
@ -98,20 +98,8 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
public static final String EXTRA_SINGLE_COMMENT_ID = "ESCI";
|
public static final String EXTRA_SINGLE_COMMENT_ID = "ESCI";
|
||||||
public static final String EXTRA_MESSAGE_FULLNAME = "ENI";
|
public static final String EXTRA_MESSAGE_FULLNAME = "ENI";
|
||||||
public static final String EXTRA_NEW_ACCOUNT_NAME = "ENAN";
|
public static final String EXTRA_NEW_ACCOUNT_NAME = "ENAN";
|
||||||
|
|
||||||
private static final int EDIT_POST_REQUEST_CODE = 2;
|
|
||||||
public static final int EDIT_COMMENT_REQUEST_CODE = 3;
|
public static final int EDIT_COMMENT_REQUEST_CODE = 3;
|
||||||
|
private static final int EDIT_POST_REQUEST_CODE = 2;
|
||||||
private RequestManager mGlide;
|
|
||||||
private Locale mLocale;
|
|
||||||
private Menu mMenu;
|
|
||||||
|
|
||||||
private int orientation;
|
|
||||||
private int postListPosition = -1;
|
|
||||||
private String mSingleCommentId;
|
|
||||||
private boolean mNeedBlurNsfw;
|
|
||||||
private boolean mNeedBlurSpoiler;
|
|
||||||
|
|
||||||
@State
|
@State
|
||||||
boolean mNullAccessToken = false;
|
boolean mNullAccessToken = false;
|
||||||
@State
|
@State
|
||||||
@ -140,32 +128,43 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
String mMessageFullname;
|
String mMessageFullname;
|
||||||
@State
|
@State
|
||||||
String mNewAccountName;
|
String mNewAccountName;
|
||||||
|
@BindView(R.id.coordinator_layout_view_post_detail)
|
||||||
private boolean showToast = false;
|
CoordinatorLayout mCoordinatorLayout;
|
||||||
|
@BindView(R.id.appbar_layout_view_post_detail_activity)
|
||||||
private LinearLayoutManager mLinearLayoutManager;
|
AppBarLayout appBarLayout;
|
||||||
private CommentAndPostRecyclerViewAdapter mAdapter;
|
@BindView(R.id.toolbar_view_post_detail_activity)
|
||||||
|
Toolbar toolbar;
|
||||||
@BindView(R.id.coordinator_layout_view_post_detail) CoordinatorLayout mCoordinatorLayout;
|
@BindView(R.id.progress_bar_view_post_detail_activity)
|
||||||
@BindView(R.id.appbar_layout_view_post_detail_activity) AppBarLayout appBarLayout;
|
ProgressBar mProgressBar;
|
||||||
@BindView(R.id.toolbar_view_post_detail_activity) Toolbar toolbar;
|
@BindView(R.id.recycler_view_view_post_detail)
|
||||||
@BindView(R.id.progress_bar_view_post_detail_activity) ProgressBar mProgressBar;
|
RecyclerView mRecyclerView;
|
||||||
@BindView(R.id.recycler_view_view_post_detail) RecyclerView mRecyclerView;
|
@BindView(R.id.fetch_post_info_linear_layout_view_post_detail_activity)
|
||||||
@BindView(R.id.fetch_post_info_linear_layout_view_post_detail_activity) LinearLayout mFetchPostInfoLinearLayout;
|
LinearLayout mFetchPostInfoLinearLayout;
|
||||||
@BindView(R.id.fetch_post_info_image_view_view_post_detail_activity) ImageView mFetchPostInfoImageView;
|
@BindView(R.id.fetch_post_info_image_view_view_post_detail_activity)
|
||||||
@BindView(R.id.fetch_post_info_text_view_view_post_detail_activity) TextView mFetchPostInfoTextView;
|
ImageView mFetchPostInfoImageView;
|
||||||
|
@BindView(R.id.fetch_post_info_text_view_view_post_detail_activity)
|
||||||
@Inject @Named("no_oauth")
|
TextView mFetchPostInfoTextView;
|
||||||
|
@Inject
|
||||||
|
@Named("no_oauth")
|
||||||
Retrofit mRetrofit;
|
Retrofit mRetrofit;
|
||||||
|
@Inject
|
||||||
@Inject @Named("oauth")
|
@Named("oauth")
|
||||||
Retrofit mOauthRetrofit;
|
Retrofit mOauthRetrofit;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
SharedPreferences mSharedPreferences;
|
SharedPreferences mSharedPreferences;
|
||||||
|
private RequestManager mGlide;
|
||||||
|
private Locale mLocale;
|
||||||
|
private Menu mMenu;
|
||||||
|
private int orientation;
|
||||||
|
private int postListPosition = -1;
|
||||||
|
private String mSingleCommentId;
|
||||||
|
private boolean mNeedBlurNsfw;
|
||||||
|
private boolean mNeedBlurSpoiler;
|
||||||
|
private boolean showToast = false;
|
||||||
|
private LinearLayoutManager mLinearLayoutManager;
|
||||||
|
private CommentAndPostRecyclerViewAdapter mAdapter;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
@ -199,24 +198,24 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
||||||
|
|
||||||
boolean lightNavBar = false;
|
boolean lightNavBar = false;
|
||||||
if((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
if ((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
lightNavBar = true;
|
lightNavBar = true;
|
||||||
}
|
}
|
||||||
boolean finalLightNavBar = lightNavBar;
|
boolean finalLightNavBar = lightNavBar;
|
||||||
|
|
||||||
View decorView = window.getDecorView();
|
View decorView = window.getDecorView();
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
appBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
||||||
if (state == State.COLLAPSED) {
|
if (state == State.COLLAPSED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
} else if (state == State.EXPANDED) {
|
} else if (state == State.EXPANDED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -247,7 +246,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(systemDefault) {
|
if (systemDefault) {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
||||||
@ -268,8 +267,8 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
mRecyclerView.setLayoutManager(mLinearLayoutManager);
|
mRecyclerView.setLayoutManager(mLinearLayoutManager);
|
||||||
|
|
||||||
mSingleCommentId = getIntent().hasExtra(EXTRA_SINGLE_COMMENT_ID) ? getIntent().getExtras().getString(EXTRA_SINGLE_COMMENT_ID) : null;
|
mSingleCommentId = getIntent().hasExtra(EXTRA_SINGLE_COMMENT_ID) ? getIntent().getExtras().getString(EXTRA_SINGLE_COMMENT_ID) : null;
|
||||||
if(savedInstanceState == null) {
|
if (savedInstanceState == null) {
|
||||||
if(mSingleCommentId != null) {
|
if (mSingleCommentId != null) {
|
||||||
isSingleCommentThreadMode = true;
|
isSingleCommentThreadMode = true;
|
||||||
}
|
}
|
||||||
mMessageFullname = getIntent().getStringExtra(EXTRA_MESSAGE_FULLNAME);
|
mMessageFullname = getIntent().getStringExtra(EXTRA_MESSAGE_FULLNAME);
|
||||||
@ -278,27 +277,27 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
|
|
||||||
orientation = getResources().getConfiguration().orientation;
|
orientation = getResources().getConfiguration().orientation;
|
||||||
|
|
||||||
if(!mNullAccessToken && mAccessToken == null) {
|
if (!mNullAccessToken && mAccessToken == null) {
|
||||||
getCurrentAccountAndBindView();
|
getCurrentAccountAndBindView();
|
||||||
} else {
|
} else {
|
||||||
bindView();
|
bindView();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(getIntent().hasExtra(EXTRA_POST_LIST_POSITION)) {
|
if (getIntent().hasExtra(EXTRA_POST_LIST_POSITION)) {
|
||||||
postListPosition = getIntent().getIntExtra(EXTRA_POST_LIST_POSITION, -1);
|
postListPosition = getIntent().getIntExtra(EXTRA_POST_LIST_POSITION, -1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getCurrentAccountAndBindView() {
|
private void getCurrentAccountAndBindView() {
|
||||||
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
||||||
if(mNewAccountName != null) {
|
if (mNewAccountName != null) {
|
||||||
if(account == null || !account.getUsername().equals(mNewAccountName)) {
|
if (account == null || !account.getUsername().equals(mNewAccountName)) {
|
||||||
new SwitchAccountAsyncTask(mRedditDataRoomDatabase, mNewAccountName, newAccount -> {
|
new SwitchAccountAsyncTask(mRedditDataRoomDatabase, mNewAccountName, newAccount -> {
|
||||||
EventBus.getDefault().post(new SwitchAccountEvent(getClass().getName()));
|
EventBus.getDefault().post(new SwitchAccountEvent(getClass().getName()));
|
||||||
Toast.makeText(this, R.string.account_switched, Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, R.string.account_switched, Toast.LENGTH_SHORT).show();
|
||||||
|
|
||||||
mNewAccountName = null;
|
mNewAccountName = null;
|
||||||
if(newAccount == null) {
|
if (newAccount == null) {
|
||||||
mNullAccessToken = true;
|
mNullAccessToken = true;
|
||||||
} else {
|
} else {
|
||||||
mAccessToken = newAccount.getAccessToken();
|
mAccessToken = newAccount.getAccessToken();
|
||||||
@ -313,7 +312,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
bindView();
|
bindView();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(account == null) {
|
if (account == null) {
|
||||||
mNullAccessToken = true;
|
mNullAccessToken = true;
|
||||||
} else {
|
} else {
|
||||||
mAccessToken = account.getAccessToken();
|
mAccessToken = account.getAccessToken();
|
||||||
@ -326,7 +325,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void bindView() {
|
private void bindView() {
|
||||||
if(mAccessToken != null && mMessageFullname != null) {
|
if (mAccessToken != null && mMessageFullname != null) {
|
||||||
ReadMessage.readMessage(mOauthRetrofit, mAccessToken, mMessageFullname, new ReadMessage.ReadMessageListener() {
|
ReadMessage.readMessage(mOauthRetrofit, mAccessToken, mMessageFullname, new ReadMessage.ReadMessageListener() {
|
||||||
@Override
|
@Override
|
||||||
public void readSuccess() {
|
public void readSuccess() {
|
||||||
@ -340,21 +339,21 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mPost == null) {
|
if (mPost == null) {
|
||||||
mPost = getIntent().getParcelableExtra(EXTRA_POST_DATA);
|
mPost = getIntent().getParcelableExtra(EXTRA_POST_DATA);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mPost == null) {
|
if (mPost == null) {
|
||||||
fetchPostAndCommentsById(getIntent().getStringExtra(EXTRA_POST_ID));
|
fetchPostAndCommentsById(getIntent().getStringExtra(EXTRA_POST_ID));
|
||||||
} else {
|
} else {
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
MenuItem saveItem = mMenu.findItem(R.id.action_save_view_post_detail_activity);
|
MenuItem saveItem = mMenu.findItem(R.id.action_save_view_post_detail_activity);
|
||||||
MenuItem hideItem = mMenu.findItem(R.id.action_hide_view_post_detail_activity);
|
MenuItem hideItem = mMenu.findItem(R.id.action_hide_view_post_detail_activity);
|
||||||
|
|
||||||
mMenu.findItem(R.id.action_comment_view_post_detail_activity).setVisible(true);
|
mMenu.findItem(R.id.action_comment_view_post_detail_activity).setVisible(true);
|
||||||
|
|
||||||
if(mAccessToken != null) {
|
if (mAccessToken != null) {
|
||||||
if(mPost.isSaved()) {
|
if (mPost.isSaved()) {
|
||||||
saveItem.setVisible(true);
|
saveItem.setVisible(true);
|
||||||
saveItem.setIcon(R.drawable.ic_baseline_bookmark_24px);
|
saveItem.setIcon(R.drawable.ic_baseline_bookmark_24px);
|
||||||
} else {
|
} else {
|
||||||
@ -362,7 +361,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
saveItem.setIcon(R.drawable.ic_baseline_bookmark_border_24px);
|
saveItem.setIcon(R.drawable.ic_baseline_bookmark_border_24px);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mPost.isHidden()) {
|
if (mPost.isHidden()) {
|
||||||
hideItem.setVisible(true);
|
hideItem.setVisible(true);
|
||||||
hideItem.setTitle(R.string.action_unhide_post);
|
hideItem.setTitle(R.string.action_unhide_post);
|
||||||
} else {
|
} else {
|
||||||
@ -374,15 +373,15 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
hideItem.setVisible(false);
|
hideItem.setVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mPost.getAuthor().equals(mAccountName)) {
|
if (mPost.getAuthor().equals(mAccountName)) {
|
||||||
if(mPost.getPostType() == Post.TEXT_TYPE) {
|
if (mPost.getPostType() == Post.TEXT_TYPE) {
|
||||||
mMenu.findItem(R.id.action_edit_view_post_detail_activity).setVisible(true);
|
mMenu.findItem(R.id.action_edit_view_post_detail_activity).setVisible(true);
|
||||||
}
|
}
|
||||||
mMenu.findItem(R.id.action_delete_view_post_detail_activity).setVisible(true);
|
mMenu.findItem(R.id.action_delete_view_post_detail_activity).setVisible(true);
|
||||||
|
|
||||||
MenuItem nsfwItem = mMenu.findItem(R.id.action_nsfw_view_post_detail_activity);
|
MenuItem nsfwItem = mMenu.findItem(R.id.action_nsfw_view_post_detail_activity);
|
||||||
nsfwItem.setVisible(true);
|
nsfwItem.setVisible(true);
|
||||||
if(mPost.isNSFW()) {
|
if (mPost.isNSFW()) {
|
||||||
nsfwItem.setTitle(R.string.action_unmark_nsfw);
|
nsfwItem.setTitle(R.string.action_unmark_nsfw);
|
||||||
} else {
|
} else {
|
||||||
nsfwItem.setTitle(R.string.action_mark_nsfw);
|
nsfwItem.setTitle(R.string.action_mark_nsfw);
|
||||||
@ -390,7 +389,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
|
|
||||||
MenuItem spoilerItem = mMenu.findItem(R.id.action_spoiler_view_post_detail_activity);
|
MenuItem spoilerItem = mMenu.findItem(R.id.action_spoiler_view_post_detail_activity);
|
||||||
spoilerItem.setVisible(true);
|
spoilerItem.setVisible(true);
|
||||||
if(mPost.isSpoiler()) {
|
if (mPost.isSpoiler()) {
|
||||||
spoilerItem.setTitle(R.string.action_unmark_spoiler);
|
spoilerItem.setTitle(R.string.action_unmark_spoiler);
|
||||||
} else {
|
} else {
|
||||||
spoilerItem.setTitle(R.string.action_mark_spoiler);
|
spoilerItem.setTitle(R.string.action_mark_spoiler);
|
||||||
@ -426,15 +425,15 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
});
|
});
|
||||||
mRecyclerView.setAdapter(mAdapter);
|
mRecyclerView.setAdapter(mAdapter);
|
||||||
|
|
||||||
if(comments == null) {
|
if (comments == null) {
|
||||||
fetchComments(false);
|
fetchComments(false);
|
||||||
} else {
|
} else {
|
||||||
if(isRefreshing) {
|
if (isRefreshing) {
|
||||||
isRefreshing = false;
|
isRefreshing = false;
|
||||||
refresh(true, true);
|
refresh(true, true);
|
||||||
} else {
|
} else {
|
||||||
mAdapter.addComments(comments, hasMoreChildren);
|
mAdapter.addComments(comments, hasMoreChildren);
|
||||||
if(isLoadingMoreChildren) {
|
if (isLoadingMoreChildren) {
|
||||||
isLoadingMoreChildren = false;
|
isLoadingMoreChildren = false;
|
||||||
fetchMoreComments();
|
fetchMoreComments();
|
||||||
}
|
}
|
||||||
@ -450,14 +449,14 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
mGlide.clear(mFetchPostInfoImageView);
|
mGlide.clear(mFetchPostInfoImageView);
|
||||||
|
|
||||||
Call<String> postAndComments;
|
Call<String> postAndComments;
|
||||||
if(mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
if(isSingleCommentThreadMode && mSingleCommentId != null) {
|
if (isSingleCommentThreadMode && mSingleCommentId != null) {
|
||||||
postAndComments = mRetrofit.create(RedditAPI.class).getPostAndCommentsSingleThreadById(subredditId, mSingleCommentId);
|
postAndComments = mRetrofit.create(RedditAPI.class).getPostAndCommentsSingleThreadById(subredditId, mSingleCommentId);
|
||||||
} else {
|
} else {
|
||||||
postAndComments = mRetrofit.create(RedditAPI.class).getPostAndCommentsById(subredditId);
|
postAndComments = mRetrofit.create(RedditAPI.class).getPostAndCommentsById(subredditId);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(isSingleCommentThreadMode && mSingleCommentId != null) {
|
if (isSingleCommentThreadMode && mSingleCommentId != null) {
|
||||||
postAndComments = mOauthRetrofit.create(RedditAPI.class).getPostAndCommentsSingleThreadByIdOauth(subredditId,
|
postAndComments = mOauthRetrofit.create(RedditAPI.class).getPostAndCommentsSingleThreadByIdOauth(subredditId,
|
||||||
mSingleCommentId, RedditUtils.getOAuthHeader(mAccessToken));
|
mSingleCommentId, RedditUtils.getOAuthHeader(mAccessToken));
|
||||||
} else {
|
} else {
|
||||||
@ -470,20 +469,20 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
mProgressBar.setVisibility(View.GONE);
|
mProgressBar.setVisibility(View.GONE);
|
||||||
|
|
||||||
if(response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
ParsePost.parsePost(response.body(), mLocale, new ParsePost.ParsePostListener() {
|
ParsePost.parsePost(response.body(), mLocale, new ParsePost.ParsePostListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParsePostSuccess(Post post) {
|
public void onParsePostSuccess(Post post) {
|
||||||
mPost = post;
|
mPost = post;
|
||||||
|
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
MenuItem saveItem = mMenu.findItem(R.id.action_save_view_post_detail_activity);
|
MenuItem saveItem = mMenu.findItem(R.id.action_save_view_post_detail_activity);
|
||||||
MenuItem hideItem = mMenu.findItem(R.id.action_hide_view_post_detail_activity);
|
MenuItem hideItem = mMenu.findItem(R.id.action_hide_view_post_detail_activity);
|
||||||
|
|
||||||
mMenu.findItem(R.id.action_comment_view_post_detail_activity).setVisible(true);
|
mMenu.findItem(R.id.action_comment_view_post_detail_activity).setVisible(true);
|
||||||
|
|
||||||
if(mAccessToken != null) {
|
if (mAccessToken != null) {
|
||||||
if(post.isSaved()) {
|
if (post.isSaved()) {
|
||||||
saveItem.setVisible(true);
|
saveItem.setVisible(true);
|
||||||
saveItem.setIcon(R.drawable.ic_baseline_bookmark_24px);
|
saveItem.setIcon(R.drawable.ic_baseline_bookmark_24px);
|
||||||
} else {
|
} else {
|
||||||
@ -491,7 +490,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
saveItem.setIcon(R.drawable.ic_baseline_bookmark_border_24px);
|
saveItem.setIcon(R.drawable.ic_baseline_bookmark_border_24px);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(post.isHidden()) {
|
if (post.isHidden()) {
|
||||||
hideItem.setVisible(true);
|
hideItem.setVisible(true);
|
||||||
hideItem.setTitle(R.string.action_unhide_post);
|
hideItem.setTitle(R.string.action_unhide_post);
|
||||||
} else {
|
} else {
|
||||||
@ -503,8 +502,8 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
hideItem.setVisible(false);
|
hideItem.setVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mPost.getAuthor().equals(mAccountName)) {
|
if (mPost.getAuthor().equals(mAccountName)) {
|
||||||
if(mPost.getPostType() == Post.TEXT_TYPE) {
|
if (mPost.getPostType() == Post.TEXT_TYPE) {
|
||||||
mMenu.findItem(R.id.action_edit_view_post_detail_activity).setVisible(true);
|
mMenu.findItem(R.id.action_edit_view_post_detail_activity).setVisible(true);
|
||||||
}
|
}
|
||||||
mMenu.findItem(R.id.action_delete_view_post_detail_activity).setVisible(true);
|
mMenu.findItem(R.id.action_delete_view_post_detail_activity).setVisible(true);
|
||||||
@ -547,13 +546,13 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
hasMoreChildren = children.size() != 0;
|
hasMoreChildren = children.size() != 0;
|
||||||
mAdapter.addComments(expandedComments, hasMoreChildren);
|
mAdapter.addComments(expandedComments, hasMoreChildren);
|
||||||
|
|
||||||
if(children.size() > 0) {
|
if (children.size() > 0) {
|
||||||
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
|
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
|
||||||
super.onScrolled(recyclerView, dx, dy);
|
super.onScrolled(recyclerView, dx, dy);
|
||||||
|
|
||||||
if(!isLoadingMoreChildren && loadMoreChildrenSuccess) {
|
if (!isLoadingMoreChildren && loadMoreChildrenSuccess) {
|
||||||
int visibleItemCount = mLinearLayoutManager.getChildCount();
|
int visibleItemCount = mLinearLayoutManager.getChildCount();
|
||||||
int totalItemCount = mLinearLayoutManager.getItemCount();
|
int totalItemCount = mLinearLayoutManager.getItemCount();
|
||||||
int firstVisibleItemPosition = mLinearLayoutManager.findFirstVisibleItemPosition();
|
int firstVisibleItemPosition = mLinearLayoutManager.findFirstVisibleItemPosition();
|
||||||
@ -595,7 +594,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
mAdapter.setSingleComment(mSingleCommentId, isSingleCommentThreadMode);
|
mAdapter.setSingleComment(mSingleCommentId, isSingleCommentThreadMode);
|
||||||
mAdapter.initiallyLoading();
|
mAdapter.initiallyLoading();
|
||||||
String commentId = null;
|
String commentId = null;
|
||||||
if(isSingleCommentThreadMode) {
|
if (isSingleCommentThreadMode) {
|
||||||
commentId = mSingleCommentId;
|
commentId = mSingleCommentId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -610,13 +609,13 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
hasMoreChildren = children.size() != 0;
|
hasMoreChildren = children.size() != 0;
|
||||||
mAdapter.addComments(expandedComments, hasMoreChildren);
|
mAdapter.addComments(expandedComments, hasMoreChildren);
|
||||||
|
|
||||||
if(children.size() > 0) {
|
if (children.size() > 0) {
|
||||||
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
|
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
|
||||||
super.onScrolled(recyclerView, dx, dy);
|
super.onScrolled(recyclerView, dx, dy);
|
||||||
|
|
||||||
if(!isLoadingMoreChildren && loadMoreChildrenSuccess) {
|
if (!isLoadingMoreChildren && loadMoreChildrenSuccess) {
|
||||||
int visibleItemCount = mLinearLayoutManager.getChildCount();
|
int visibleItemCount = mLinearLayoutManager.getChildCount();
|
||||||
int totalItemCount = mLinearLayoutManager.getItemCount();
|
int totalItemCount = mLinearLayoutManager.getItemCount();
|
||||||
int firstVisibleItemPosition = mLinearLayoutManager.findFirstVisibleItemPosition();
|
int firstVisibleItemPosition = mLinearLayoutManager.findFirstVisibleItemPosition();
|
||||||
@ -628,7 +627,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if(changeRefreshState) {
|
if (changeRefreshState) {
|
||||||
isRefreshing = false;
|
isRefreshing = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -636,7 +635,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
@Override
|
@Override
|
||||||
public void onFetchCommentFailed() {
|
public void onFetchCommentFailed() {
|
||||||
mAdapter.initiallyLoadCommentsFailed();
|
mAdapter.initiallyLoadCommentsFailed();
|
||||||
if(changeRefreshState) {
|
if (changeRefreshState) {
|
||||||
isRefreshing = false;
|
isRefreshing = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -644,7 +643,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
}
|
}
|
||||||
|
|
||||||
void fetchMoreComments() {
|
void fetchMoreComments() {
|
||||||
if(isLoadingMoreChildren || !loadMoreChildrenSuccess) {
|
if (isLoadingMoreChildren || !loadMoreChildrenSuccess) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -672,24 +671,24 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void refresh(boolean fetchPost, boolean fetchComments) {
|
private void refresh(boolean fetchPost, boolean fetchComments) {
|
||||||
if(!isRefreshing) {
|
if (!isRefreshing) {
|
||||||
isRefreshing = true;
|
isRefreshing = true;
|
||||||
mChildrenStartingIndex = 0;
|
mChildrenStartingIndex = 0;
|
||||||
|
|
||||||
mFetchPostInfoLinearLayout.setVisibility(View.GONE);
|
mFetchPostInfoLinearLayout.setVisibility(View.GONE);
|
||||||
mGlide.clear(mFetchPostInfoImageView);
|
mGlide.clear(mFetchPostInfoImageView);
|
||||||
|
|
||||||
if(fetchComments) {
|
if (fetchComments) {
|
||||||
if(!fetchPost) {
|
if (!fetchPost) {
|
||||||
fetchComments(true);
|
fetchComments(true);
|
||||||
} else {
|
} else {
|
||||||
fetchComments(false);
|
fetchComments(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(fetchPost) {
|
if (fetchPost) {
|
||||||
Retrofit retrofit;
|
Retrofit retrofit;
|
||||||
if(mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
retrofit = mRetrofit;
|
retrofit = mRetrofit;
|
||||||
} else {
|
} else {
|
||||||
retrofit = mOauthRetrofit;
|
retrofit = mOauthRetrofit;
|
||||||
@ -702,14 +701,14 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
mAdapter.updatePost(mPost);
|
mAdapter.updatePost(mPost);
|
||||||
EventBus.getDefault().post(new PostUpdateEventToPostList(mPost, postListPosition));
|
EventBus.getDefault().post(new PostUpdateEventToPostList(mPost, postListPosition));
|
||||||
isRefreshing = false;
|
isRefreshing = false;
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
MenuItem saveItem = mMenu.findItem(R.id.action_save_view_post_detail_activity);
|
MenuItem saveItem = mMenu.findItem(R.id.action_save_view_post_detail_activity);
|
||||||
MenuItem hideItem = mMenu.findItem(R.id.action_hide_view_post_detail_activity);
|
MenuItem hideItem = mMenu.findItem(R.id.action_hide_view_post_detail_activity);
|
||||||
|
|
||||||
mMenu.findItem(R.id.action_comment_view_post_detail_activity).setVisible(true);
|
mMenu.findItem(R.id.action_comment_view_post_detail_activity).setVisible(true);
|
||||||
|
|
||||||
if(mAccessToken != null) {
|
if (mAccessToken != null) {
|
||||||
if(post.isSaved()) {
|
if (post.isSaved()) {
|
||||||
saveItem.setVisible(true);
|
saveItem.setVisible(true);
|
||||||
saveItem.setIcon(R.drawable.ic_baseline_bookmark_24px);
|
saveItem.setIcon(R.drawable.ic_baseline_bookmark_24px);
|
||||||
} else {
|
} else {
|
||||||
@ -717,7 +716,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
saveItem.setIcon(R.drawable.ic_baseline_bookmark_border_24px);
|
saveItem.setIcon(R.drawable.ic_baseline_bookmark_border_24px);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(post.isHidden()) {
|
if (post.isHidden()) {
|
||||||
hideItem.setVisible(true);
|
hideItem.setVisible(true);
|
||||||
hideItem.setTitle(R.string.action_unhide_post);
|
hideItem.setTitle(R.string.action_unhide_post);
|
||||||
} else {
|
} else {
|
||||||
@ -752,7 +751,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showMessage(int resId) {
|
private void showMessage(int resId) {
|
||||||
if(showToast) {
|
if (showToast) {
|
||||||
Toast.makeText(ViewPostDetailActivity.this, resId, Toast.LENGTH_SHORT).show();
|
Toast.makeText(ViewPostDetailActivity.this, resId, Toast.LENGTH_SHORT).show();
|
||||||
} else {
|
} else {
|
||||||
Snackbar.make(mCoordinatorLayout, resId, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(mCoordinatorLayout, resId, Snackbar.LENGTH_SHORT).show();
|
||||||
@ -760,7 +759,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void markNSFW() {
|
private void markNSFW() {
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_nsfw_view_post_detail_activity).setTitle(R.string.action_unmark_nsfw);
|
mMenu.findItem(R.id.action_nsfw_view_post_detail_activity).setTitle(R.string.action_unmark_nsfw);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -770,15 +769,15 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
.enqueue(new Callback<String>() {
|
.enqueue(new Callback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
if(response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_nsfw_view_post_detail_activity).setTitle(R.string.action_unmark_nsfw);
|
mMenu.findItem(R.id.action_nsfw_view_post_detail_activity).setTitle(R.string.action_unmark_nsfw);
|
||||||
}
|
}
|
||||||
|
|
||||||
refresh(true, false);
|
refresh(true, false);
|
||||||
showMessage(R.string.mark_nsfw_success);
|
showMessage(R.string.mark_nsfw_success);
|
||||||
} else {
|
} else {
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_nsfw_view_post_detail_activity).setTitle(R.string.action_mark_nsfw);
|
mMenu.findItem(R.id.action_nsfw_view_post_detail_activity).setTitle(R.string.action_mark_nsfw);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -788,7 +787,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
|
public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_nsfw_view_post_detail_activity).setTitle(R.string.action_mark_nsfw);
|
mMenu.findItem(R.id.action_nsfw_view_post_detail_activity).setTitle(R.string.action_mark_nsfw);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -798,7 +797,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void unmarkNSFW() {
|
private void unmarkNSFW() {
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_nsfw_view_post_detail_activity).setTitle(R.string.action_mark_nsfw);
|
mMenu.findItem(R.id.action_nsfw_view_post_detail_activity).setTitle(R.string.action_mark_nsfw);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -808,15 +807,15 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
.enqueue(new Callback<String>() {
|
.enqueue(new Callback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
if(response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_nsfw_view_post_detail_activity).setTitle(R.string.action_mark_nsfw);
|
mMenu.findItem(R.id.action_nsfw_view_post_detail_activity).setTitle(R.string.action_mark_nsfw);
|
||||||
}
|
}
|
||||||
|
|
||||||
refresh(true, false);
|
refresh(true, false);
|
||||||
showMessage(R.string.unmark_nsfw_success);
|
showMessage(R.string.unmark_nsfw_success);
|
||||||
} else {
|
} else {
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_nsfw_view_post_detail_activity).setTitle(R.string.action_unmark_nsfw);
|
mMenu.findItem(R.id.action_nsfw_view_post_detail_activity).setTitle(R.string.action_unmark_nsfw);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -826,7 +825,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
|
public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_nsfw_view_post_detail_activity).setTitle(R.string.action_unmark_nsfw);
|
mMenu.findItem(R.id.action_nsfw_view_post_detail_activity).setTitle(R.string.action_unmark_nsfw);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -836,7 +835,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void markSpoiler() {
|
private void markSpoiler() {
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_spoiler_view_post_detail_activity).setTitle(R.string.action_unmark_spoiler);
|
mMenu.findItem(R.id.action_spoiler_view_post_detail_activity).setTitle(R.string.action_unmark_spoiler);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -846,15 +845,15 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
.enqueue(new Callback<String>() {
|
.enqueue(new Callback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
if(response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_spoiler_view_post_detail_activity).setTitle(R.string.action_unmark_spoiler);
|
mMenu.findItem(R.id.action_spoiler_view_post_detail_activity).setTitle(R.string.action_unmark_spoiler);
|
||||||
}
|
}
|
||||||
|
|
||||||
refresh(true, false);
|
refresh(true, false);
|
||||||
showMessage(R.string.mark_spoiler_success);
|
showMessage(R.string.mark_spoiler_success);
|
||||||
} else {
|
} else {
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_spoiler_view_post_detail_activity).setTitle(R.string.action_mark_spoiler);
|
mMenu.findItem(R.id.action_spoiler_view_post_detail_activity).setTitle(R.string.action_mark_spoiler);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -864,7 +863,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
|
public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_spoiler_view_post_detail_activity).setTitle(R.string.action_mark_spoiler);
|
mMenu.findItem(R.id.action_spoiler_view_post_detail_activity).setTitle(R.string.action_mark_spoiler);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -874,7 +873,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void unmarkSpoiler() {
|
private void unmarkSpoiler() {
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_spoiler_view_post_detail_activity).setTitle(R.string.action_mark_spoiler);
|
mMenu.findItem(R.id.action_spoiler_view_post_detail_activity).setTitle(R.string.action_mark_spoiler);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -884,15 +883,15 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
.enqueue(new Callback<String>() {
|
.enqueue(new Callback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
if(response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_spoiler_view_post_detail_activity).setTitle(R.string.action_mark_spoiler);
|
mMenu.findItem(R.id.action_spoiler_view_post_detail_activity).setTitle(R.string.action_mark_spoiler);
|
||||||
}
|
}
|
||||||
|
|
||||||
refresh(true, false);
|
refresh(true, false);
|
||||||
showMessage(R.string.unmark_spoiler_success);
|
showMessage(R.string.unmark_spoiler_success);
|
||||||
} else {
|
} else {
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_spoiler_view_post_detail_activity).setTitle(R.string.action_unmark_spoiler);
|
mMenu.findItem(R.id.action_spoiler_view_post_detail_activity).setTitle(R.string.action_unmark_spoiler);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -902,7 +901,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
|
public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_spoiler_view_post_detail_activity).setTitle(R.string.action_unmark_spoiler);
|
mMenu.findItem(R.id.action_spoiler_view_post_detail_activity).setTitle(R.string.action_unmark_spoiler);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -940,11 +939,11 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onPostUpdateEvent(PostUpdateEventToDetailActivity event) {
|
public void onPostUpdateEvent(PostUpdateEventToDetailActivity event) {
|
||||||
if(mPost.getId().equals(event.post.getId())) {
|
if (mPost.getId().equals(event.post.getId())) {
|
||||||
mPost.setVoteType(event.post.getVoteType());
|
mPost.setVoteType(event.post.getVoteType());
|
||||||
mPost.setSaved(event.post.isSaved());
|
mPost.setSaved(event.post.isSaved());
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
if(event.post.isSaved()) {
|
if (event.post.isSaved()) {
|
||||||
mMenu.findItem(R.id.action_save_view_post_detail_activity).setIcon(getResources()
|
mMenu.findItem(R.id.action_save_view_post_detail_activity).setIcon(getResources()
|
||||||
.getDrawable(R.drawable.ic_baseline_bookmark_24px));
|
.getDrawable(R.drawable.ic_baseline_bookmark_24px));
|
||||||
} else {
|
} else {
|
||||||
@ -970,7 +969,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
|
|
||||||
private void refreshAdapter() {
|
private void refreshAdapter() {
|
||||||
int previousPosition = -1;
|
int previousPosition = -1;
|
||||||
if(mLinearLayoutManager != null) {
|
if (mLinearLayoutManager != null) {
|
||||||
previousPosition = mLinearLayoutManager.findFirstVisibleItemPosition();
|
previousPosition = mLinearLayoutManager.findFirstVisibleItemPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -980,14 +979,14 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
mRecyclerView.setAdapter(mAdapter);
|
mRecyclerView.setAdapter(mAdapter);
|
||||||
mRecyclerView.setLayoutManager(layoutManager);
|
mRecyclerView.setLayoutManager(layoutManager);
|
||||||
|
|
||||||
if(previousPosition > 0) {
|
if (previousPosition > 0) {
|
||||||
mRecyclerView.scrollToPosition(previousPosition);
|
mRecyclerView.scrollToPosition(previousPosition);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onAccountSwitchEvent(SwitchAccountEvent event) {
|
public void onAccountSwitchEvent(SwitchAccountEvent event) {
|
||||||
if(!getClass().getName().equals(event.excludeActivityClassName)) {
|
if (!getClass().getName().equals(event.excludeActivityClassName)) {
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -996,14 +995,14 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
getMenuInflater().inflate(R.menu.view_post_detail_activity, menu);
|
getMenuInflater().inflate(R.menu.view_post_detail_activity, menu);
|
||||||
mMenu = menu;
|
mMenu = menu;
|
||||||
if(mPost != null) {
|
if (mPost != null) {
|
||||||
MenuItem saveItem = mMenu.findItem(R.id.action_save_view_post_detail_activity);
|
MenuItem saveItem = mMenu.findItem(R.id.action_save_view_post_detail_activity);
|
||||||
MenuItem hideItem = mMenu.findItem(R.id.action_hide_view_post_detail_activity);
|
MenuItem hideItem = mMenu.findItem(R.id.action_hide_view_post_detail_activity);
|
||||||
|
|
||||||
mMenu.findItem(R.id.action_comment_view_post_detail_activity).setVisible(true);
|
mMenu.findItem(R.id.action_comment_view_post_detail_activity).setVisible(true);
|
||||||
|
|
||||||
if(mAccessToken != null) {
|
if (mAccessToken != null) {
|
||||||
if(mPost.isSaved()) {
|
if (mPost.isSaved()) {
|
||||||
saveItem.setVisible(true);
|
saveItem.setVisible(true);
|
||||||
saveItem.setIcon(R.drawable.ic_baseline_bookmark_24px);
|
saveItem.setIcon(R.drawable.ic_baseline_bookmark_24px);
|
||||||
} else {
|
} else {
|
||||||
@ -1011,7 +1010,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
saveItem.setIcon(R.drawable.ic_baseline_bookmark_border_24px);
|
saveItem.setIcon(R.drawable.ic_baseline_bookmark_border_24px);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mPost.isHidden()) {
|
if (mPost.isHidden()) {
|
||||||
hideItem.setVisible(true);
|
hideItem.setVisible(true);
|
||||||
hideItem.setTitle(R.string.action_unhide_post);
|
hideItem.setTitle(R.string.action_unhide_post);
|
||||||
} else {
|
} else {
|
||||||
@ -1023,15 +1022,15 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
hideItem.setVisible(false);
|
hideItem.setVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mPost.getAuthor().equals(mAccountName)) {
|
if (mPost.getAuthor().equals(mAccountName)) {
|
||||||
if(mPost.getPostType() == Post.TEXT_TYPE) {
|
if (mPost.getPostType() == Post.TEXT_TYPE) {
|
||||||
menu.findItem(R.id.action_edit_view_post_detail_activity).setVisible(true);
|
menu.findItem(R.id.action_edit_view_post_detail_activity).setVisible(true);
|
||||||
}
|
}
|
||||||
menu.findItem(R.id.action_delete_view_post_detail_activity).setVisible(true);
|
menu.findItem(R.id.action_delete_view_post_detail_activity).setVisible(true);
|
||||||
|
|
||||||
MenuItem nsfwItem = menu.findItem(R.id.action_nsfw_view_post_detail_activity);
|
MenuItem nsfwItem = menu.findItem(R.id.action_nsfw_view_post_detail_activity);
|
||||||
nsfwItem.setVisible(true);
|
nsfwItem.setVisible(true);
|
||||||
if(mPost.isNSFW()) {
|
if (mPost.isNSFW()) {
|
||||||
nsfwItem.setTitle(R.string.action_unmark_nsfw);
|
nsfwItem.setTitle(R.string.action_unmark_nsfw);
|
||||||
} else {
|
} else {
|
||||||
nsfwItem.setTitle(R.string.action_mark_nsfw);
|
nsfwItem.setTitle(R.string.action_mark_nsfw);
|
||||||
@ -1039,7 +1038,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
|
|
||||||
MenuItem spoilerItem = menu.findItem(R.id.action_spoiler_view_post_detail_activity);
|
MenuItem spoilerItem = menu.findItem(R.id.action_spoiler_view_post_detail_activity);
|
||||||
spoilerItem.setVisible(true);
|
spoilerItem.setVisible(true);
|
||||||
if(mPost.isSpoiler()) {
|
if (mPost.isSpoiler()) {
|
||||||
spoilerItem.setTitle(R.string.action_unmark_spoiler);
|
spoilerItem.setTitle(R.string.action_unmark_spoiler);
|
||||||
} else {
|
} else {
|
||||||
spoilerItem.setTitle(R.string.action_mark_spoiler);
|
spoilerItem.setTitle(R.string.action_mark_spoiler);
|
||||||
@ -1060,18 +1059,18 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
refresh(true, true);
|
refresh(true, true);
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_comment_view_post_detail_activity:
|
case R.id.action_comment_view_post_detail_activity:
|
||||||
if(mPost != null) {
|
if (mPost != null) {
|
||||||
if(mPost.isArchived()) {
|
if (mPost.isArchived()) {
|
||||||
showMessage(R.string.archived_post_reply_unavailable);
|
showMessage(R.string.archived_post_reply_unavailable);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mPost.isLocked()) {
|
if (mPost.isLocked()) {
|
||||||
showMessage(R.string.locked_post_comment_unavailable);
|
showMessage(R.string.locked_post_comment_unavailable);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
showMessage(R.string.login_first);
|
showMessage(R.string.login_first);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -1085,8 +1084,8 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_save_view_post_detail_activity:
|
case R.id.action_save_view_post_detail_activity:
|
||||||
if(mPost != null && mAccessToken != null) {
|
if (mPost != null && mAccessToken != null) {
|
||||||
if(mPost.isSaved()) {
|
if (mPost.isSaved()) {
|
||||||
item.setIcon(R.drawable.ic_baseline_bookmark_border_24px);
|
item.setIcon(R.drawable.ic_baseline_bookmark_border_24px);
|
||||||
SaveThing.unsaveThing(mOauthRetrofit, mAccessToken, mPost.getFullName(),
|
SaveThing.unsaveThing(mOauthRetrofit, mAccessToken, mPost.getFullName(),
|
||||||
new SaveThing.SaveThingListener() {
|
new SaveThing.SaveThingListener() {
|
||||||
@ -1135,8 +1134,8 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
startActivity(crosspostIntent);
|
startActivity(crosspostIntent);
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_hide_view_post_detail_activity:
|
case R.id.action_hide_view_post_detail_activity:
|
||||||
if(mPost != null && mAccessToken != null) {
|
if (mPost != null && mAccessToken != null) {
|
||||||
if(mPost.isHidden()) {
|
if (mPost.isHidden()) {
|
||||||
item.setTitle(R.string.action_hide_post);
|
item.setTitle(R.string.action_hide_post);
|
||||||
|
|
||||||
HidePost.unhidePost(mOauthRetrofit, mAccessToken, mPost.getFullName(), new HidePost.HidePostListener() {
|
HidePost.unhidePost(mOauthRetrofit, mAccessToken, mPost.getFullName(), new HidePost.HidePostListener() {
|
||||||
@ -1208,14 +1207,14 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
.show();
|
.show();
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_nsfw_view_post_detail_activity:
|
case R.id.action_nsfw_view_post_detail_activity:
|
||||||
if(mPost.isNSFW()) {
|
if (mPost.isNSFW()) {
|
||||||
unmarkNSFW();
|
unmarkNSFW();
|
||||||
} else {
|
} else {
|
||||||
markNSFW();
|
markNSFW();
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_spoiler_view_post_detail_activity:
|
case R.id.action_spoiler_view_post_detail_activity:
|
||||||
if(mPost.isSpoiler()) {
|
if (mPost.isSpoiler()) {
|
||||||
unmarkSpoiler();
|
unmarkSpoiler();
|
||||||
} else {
|
} else {
|
||||||
markSpoiler();
|
markSpoiler();
|
||||||
@ -1239,16 +1238,16 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
@Override
|
@Override
|
||||||
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
||||||
super.onActivityResult(requestCode, resultCode, data);
|
super.onActivityResult(requestCode, resultCode, data);
|
||||||
if(requestCode == WRITE_COMMENT_REQUEST_CODE) {
|
if (requestCode == WRITE_COMMENT_REQUEST_CODE) {
|
||||||
if(data != null && resultCode == RESULT_OK) {
|
if (data != null && resultCode == RESULT_OK) {
|
||||||
if(data.hasExtra(EXTRA_COMMENT_DATA_KEY)) {
|
if (data.hasExtra(EXTRA_COMMENT_DATA_KEY)) {
|
||||||
CommentData comment = data.getParcelableExtra(EXTRA_COMMENT_DATA_KEY);
|
CommentData comment = data.getParcelableExtra(EXTRA_COMMENT_DATA_KEY);
|
||||||
if(comment != null && comment.getDepth() == 0) {
|
if (comment != null && comment.getDepth() == 0) {
|
||||||
mAdapter.addComment(comment);
|
mAdapter.addComment(comment);
|
||||||
} else {
|
} else {
|
||||||
String parentFullname = data.getStringExtra(CommentActivity.EXTRA_PARENT_FULLNAME_KEY);
|
String parentFullname = data.getStringExtra(CommentActivity.EXTRA_PARENT_FULLNAME_KEY);
|
||||||
int parentPosition = data.getIntExtra(CommentActivity.EXTRA_PARENT_POSITION_KEY, -1);
|
int parentPosition = data.getIntExtra(CommentActivity.EXTRA_PARENT_POSITION_KEY, -1);
|
||||||
if(parentFullname != null && parentPosition >= 0) {
|
if (parentFullname != null && parentPosition >= 0) {
|
||||||
mAdapter.addChildComment(comment, parentFullname, parentPosition);
|
mAdapter.addChildComment(comment, parentFullname, parentPosition);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1256,12 +1255,12 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
Toast.makeText(this, R.string.send_comment_failed, Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, R.string.send_comment_failed, Toast.LENGTH_SHORT).show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if(requestCode == EDIT_POST_REQUEST_CODE) {
|
} else if (requestCode == EDIT_POST_REQUEST_CODE) {
|
||||||
if(resultCode == RESULT_OK) {
|
if (resultCode == RESULT_OK) {
|
||||||
refresh(true, false);
|
refresh(true, false);
|
||||||
}
|
}
|
||||||
} else if(requestCode == EDIT_COMMENT_REQUEST_CODE) {
|
} else if (requestCode == EDIT_COMMENT_REQUEST_CODE) {
|
||||||
if(resultCode == RESULT_OK) {
|
if (resultCode == RESULT_OK) {
|
||||||
mAdapter.editComment(data.getStringExtra(EditCommentActivity.EXTRA_EDITED_COMMENT_CONTENT),
|
mAdapter.editComment(data.getStringExtra(EditCommentActivity.EXTRA_EDITED_COMMENT_CONTENT),
|
||||||
data.getExtras().getInt(EditCommentActivity.EXTRA_EDITED_COMMENT_POSITION));
|
data.getExtras().getInt(EditCommentActivity.EXTRA_EDITED_COMMENT_POSITION));
|
||||||
}
|
}
|
||||||
@ -1277,7 +1276,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBackPressed() {
|
public void onBackPressed() {
|
||||||
if(orientation == getResources().getConfiguration().orientation) {
|
if (orientation == getResources().getConfiguration().orientation) {
|
||||||
super.onBackPressed();
|
super.onBackPressed();
|
||||||
} else {
|
} else {
|
||||||
finish();
|
finish();
|
||||||
@ -1303,7 +1302,7 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
|||||||
RedditUtils.getOAuthHeader(mAccessToken), params).enqueue(new Callback<String>() {
|
RedditUtils.getOAuthHeader(mAccessToken), params).enqueue(new Callback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
if(response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
refresh(true, false);
|
refresh(true, false);
|
||||||
showMessage(R.string.update_flair_success);
|
showMessage(R.string.update_flair_success);
|
||||||
} else {
|
} else {
|
||||||
|
@ -91,19 +91,40 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
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";
|
||||||
|
|
||||||
@BindView(R.id.coordinator_layout_view_subreddit_detail_activity) CoordinatorLayout coordinatorLayout;
|
@BindView(R.id.coordinator_layout_view_subreddit_detail_activity)
|
||||||
@BindView(R.id.appbar_layout_view_subreddit_detail) AppBarLayout appBarLayout;
|
CoordinatorLayout coordinatorLayout;
|
||||||
@BindView(R.id.collapsing_toolbar_layout_view_subreddit_detail_activity) CollapsingToolbarLayout collapsingToolbarLayout;
|
@BindView(R.id.appbar_layout_view_subreddit_detail)
|
||||||
@BindView(R.id.toolbar) Toolbar toolbar;
|
AppBarLayout appBarLayout;
|
||||||
@BindView(R.id.banner_image_view_view_subreddit_detail_activity) GifImageView bannerImageView;
|
@BindView(R.id.collapsing_toolbar_layout_view_subreddit_detail_activity)
|
||||||
@BindView(R.id.icon_gif_image_view_view_subreddit_detail_activity) GifImageView iconGifImageView;
|
CollapsingToolbarLayout collapsingToolbarLayout;
|
||||||
@BindView(R.id.subscribe_subreddit_chip_view_subreddit_detail_activity) Chip subscribeSubredditChip;
|
@BindView(R.id.toolbar)
|
||||||
@BindView(R.id.subreddit_name_text_view_view_subreddit_detail_activity) TextView subredditNameTextView;
|
Toolbar toolbar;
|
||||||
@BindView(R.id.subscriber_count_text_view_view_subreddit_detail_activity) TextView nSubscribersTextView;
|
@BindView(R.id.banner_image_view_view_subreddit_detail_activity)
|
||||||
@BindView(R.id.online_subscriber_count_text_view_view_subreddit_detail_activity) TextView nOnlineSubscribersTextView;
|
GifImageView bannerImageView;
|
||||||
@BindView(R.id.description_text_view_view_subreddit_detail_activity) TextView descriptionTextView;
|
@BindView(R.id.icon_gif_image_view_view_subreddit_detail_activity)
|
||||||
@BindView(R.id.fab_view_subreddit_detail_activity) FloatingActionButton fab;
|
GifImageView iconGifImageView;
|
||||||
|
@BindView(R.id.subscribe_subreddit_chip_view_subreddit_detail_activity)
|
||||||
|
Chip subscribeSubredditChip;
|
||||||
|
@BindView(R.id.subreddit_name_text_view_view_subreddit_detail_activity)
|
||||||
|
TextView subredditNameTextView;
|
||||||
|
@BindView(R.id.subscriber_count_text_view_view_subreddit_detail_activity)
|
||||||
|
TextView nSubscribersTextView;
|
||||||
|
@BindView(R.id.online_subscriber_count_text_view_view_subreddit_detail_activity)
|
||||||
|
TextView nOnlineSubscribersTextView;
|
||||||
|
@BindView(R.id.description_text_view_view_subreddit_detail_activity)
|
||||||
|
TextView descriptionTextView;
|
||||||
|
@BindView(R.id.fab_view_subreddit_detail_activity)
|
||||||
|
FloatingActionButton fab;
|
||||||
|
@Inject
|
||||||
|
@Named("no_oauth")
|
||||||
|
Retrofit mRetrofit;
|
||||||
|
@Inject
|
||||||
|
@Named("oauth")
|
||||||
|
Retrofit mOauthRetrofit;
|
||||||
|
@Inject
|
||||||
|
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
|
@Inject
|
||||||
|
SharedPreferences mSharedPreferences;
|
||||||
private boolean mNullAccessToken = false;
|
private boolean mNullAccessToken = false;
|
||||||
private String mAccessToken;
|
private String mAccessToken;
|
||||||
private String mAccountName;
|
private String mAccountName;
|
||||||
@ -115,30 +136,14 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
private boolean showToast = false;
|
private boolean showToast = false;
|
||||||
private String mMessageFullname;
|
private String mMessageFullname;
|
||||||
private String mNewAccountName;
|
private String mNewAccountName;
|
||||||
|
|
||||||
private RequestManager glide;
|
private RequestManager glide;
|
||||||
private Fragment mFragment;
|
private Fragment mFragment;
|
||||||
private Menu mMenu;
|
private Menu mMenu;
|
||||||
private AppBarLayout.LayoutParams params;
|
private AppBarLayout.LayoutParams params;
|
||||||
private PostTypeBottomSheetFragment postTypeBottomSheetFragment;
|
private PostTypeBottomSheetFragment postTypeBottomSheetFragment;
|
||||||
private SortTypeBottomSheetFragment sortTypeBottomSheetFragment;
|
private SortTypeBottomSheetFragment sortTypeBottomSheetFragment;
|
||||||
|
|
||||||
private SubredditViewModel mSubredditViewModel;
|
private SubredditViewModel mSubredditViewModel;
|
||||||
|
|
||||||
@Inject
|
|
||||||
@Named("no_oauth")
|
|
||||||
Retrofit mRetrofit;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
@Named("oauth")
|
|
||||||
Retrofit mOauthRetrofit;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
SharedPreferences mSharedPreferences;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -163,12 +168,12 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
||||||
Resources resources = getResources();
|
Resources resources = getResources();
|
||||||
|
|
||||||
if(resources.getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT || resources.getBoolean(R.bool.isTablet)) {
|
if (resources.getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT || resources.getBoolean(R.bool.isTablet)) {
|
||||||
Window window = getWindow();
|
Window window = getWindow();
|
||||||
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
||||||
|
|
||||||
boolean lightNavBar = false;
|
boolean lightNavBar = false;
|
||||||
if((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
if ((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
lightNavBar = true;
|
lightNavBar = true;
|
||||||
}
|
}
|
||||||
boolean finalLightNavBar = lightNavBar;
|
boolean finalLightNavBar = lightNavBar;
|
||||||
@ -178,11 +183,11 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
@Override
|
@Override
|
||||||
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
||||||
if (state == State.COLLAPSED) {
|
if (state == State.COLLAPSED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
} else if (state == State.EXPANDED) {
|
} else if (state == State.EXPANDED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -210,7 +215,7 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(systemDefault) {
|
if (systemDefault) {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
||||||
@ -220,7 +225,7 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
|
|
||||||
subredditName = getIntent().getStringExtra(EXTRA_SUBREDDIT_NAME_KEY);
|
subredditName = getIntent().getStringExtra(EXTRA_SUBREDDIT_NAME_KEY);
|
||||||
|
|
||||||
if(savedInstanceState == null) {
|
if (savedInstanceState == null) {
|
||||||
mMessageFullname = getIntent().getStringExtra(EXTRA_MESSAGE_FULLNAME);
|
mMessageFullname = getIntent().getStringExtra(EXTRA_MESSAGE_FULLNAME);
|
||||||
mNewAccountName = getIntent().getStringExtra(EXTRA_NEW_ACCOUNT_NAME);
|
mNewAccountName = getIntent().getStringExtra(EXTRA_NEW_ACCOUNT_NAME);
|
||||||
getCurrentAccountAndBindView();
|
getCurrentAccountAndBindView();
|
||||||
@ -234,7 +239,7 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
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);
|
||||||
|
|
||||||
if(!mNullAccessToken && mAccessToken == null) {
|
if (!mNullAccessToken && mAccessToken == null) {
|
||||||
getCurrentAccountAndBindView();
|
getCurrentAccountAndBindView();
|
||||||
} else {
|
} else {
|
||||||
bindView(false);
|
bindView(false);
|
||||||
@ -242,7 +247,7 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout_view_subreddit_detail_activity, mFragment).commit();
|
getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout_view_subreddit_detail_activity, mFragment).commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mFetchSubredditInfoSuccess) {
|
if (mFetchSubredditInfoSuccess) {
|
||||||
nOnlineSubscribersTextView.setText(getString(R.string.online_subscribers_number_detail, mNCurrentOnlineSubscribers));
|
nOnlineSubscribersTextView.setText(getString(R.string.online_subscribers_number_detail, mNCurrentOnlineSubscribers));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -280,8 +285,8 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
new SubredditViewModel.Factory(getApplication(), mRedditDataRoomDatabase, subredditName))
|
new SubredditViewModel.Factory(getApplication(), mRedditDataRoomDatabase, subredditName))
|
||||||
.get(SubredditViewModel.class);
|
.get(SubredditViewModel.class);
|
||||||
mSubredditViewModel.getSubredditLiveData().observe(this, subredditData -> {
|
mSubredditViewModel.getSubredditLiveData().observe(this, subredditData -> {
|
||||||
if(subredditData != null) {
|
if (subredditData != null) {
|
||||||
if(subredditData.getBannerUrl().equals("")) {
|
if (subredditData.getBannerUrl().equals("")) {
|
||||||
iconGifImageView.setOnClickListener(view -> {
|
iconGifImageView.setOnClickListener(view -> {
|
||||||
//Do nothing as it has no image
|
//Do nothing as it has no image
|
||||||
});
|
});
|
||||||
@ -296,7 +301,7 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if(subredditData.getIconUrl().equals("")) {
|
if (subredditData.getIconUrl().equals("")) {
|
||||||
glide.load(getDrawable(R.drawable.subreddit_default_icon))
|
glide.load(getDrawable(R.drawable.subreddit_default_icon))
|
||||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(216, 0)))
|
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(216, 0)))
|
||||||
.into(iconGifImageView);
|
.into(iconGifImageView);
|
||||||
@ -319,13 +324,13 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
}
|
}
|
||||||
|
|
||||||
String subredditFullName = "r/" + subredditData.getName();
|
String subredditFullName = "r/" + subredditData.getName();
|
||||||
if(!title.equals(subredditFullName)) {
|
if (!title.equals(subredditFullName)) {
|
||||||
getSupportActionBar().setTitle(subredditFullName);
|
getSupportActionBar().setTitle(subredditFullName);
|
||||||
}
|
}
|
||||||
subredditNameTextView.setText(subredditFullName);
|
subredditNameTextView.setText(subredditFullName);
|
||||||
String nSubscribers = getString(R.string.subscribers_number_detail, subredditData.getNSubscribers());
|
String nSubscribers = getString(R.string.subscribers_number_detail, subredditData.getNSubscribers());
|
||||||
nSubscribersTextView.setText(nSubscribers);
|
nSubscribersTextView.setText(nSubscribers);
|
||||||
if(subredditData.getDescription().equals("")) {
|
if (subredditData.getDescription().equals("")) {
|
||||||
descriptionTextView.setVisibility(View.GONE);
|
descriptionTextView.setVisibility(View.GONE);
|
||||||
} else {
|
} else {
|
||||||
descriptionTextView.setVisibility(View.VISIBLE);
|
descriptionTextView.setVisibility(View.VISIBLE);
|
||||||
@ -335,7 +340,7 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
});
|
});
|
||||||
|
|
||||||
fab.setOnClickListener(view -> {
|
fab.setOnClickListener(view -> {
|
||||||
if(mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
Toast.makeText(ViewSubredditDetailActivity.this, R.string.login_first, Toast.LENGTH_SHORT).show();
|
Toast.makeText(ViewSubredditDetailActivity.this, R.string.login_first, Toast.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -346,14 +351,14 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
|
|
||||||
private void getCurrentAccountAndBindView() {
|
private void getCurrentAccountAndBindView() {
|
||||||
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
||||||
if(mNewAccountName != null) {
|
if (mNewAccountName != null) {
|
||||||
if(account == null || !account.getUsername().equals(mNewAccountName)) {
|
if (account == null || !account.getUsername().equals(mNewAccountName)) {
|
||||||
new SwitchAccountAsyncTask(mRedditDataRoomDatabase, mNewAccountName, newAccount -> {
|
new SwitchAccountAsyncTask(mRedditDataRoomDatabase, mNewAccountName, newAccount -> {
|
||||||
EventBus.getDefault().post(new SwitchAccountEvent(getClass().getName()));
|
EventBus.getDefault().post(new SwitchAccountEvent(getClass().getName()));
|
||||||
Toast.makeText(this, R.string.account_switched, Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, R.string.account_switched, Toast.LENGTH_SHORT).show();
|
||||||
|
|
||||||
mNewAccountName = null;
|
mNewAccountName = null;
|
||||||
if(newAccount == null) {
|
if (newAccount == null) {
|
||||||
mNullAccessToken = true;
|
mNullAccessToken = true;
|
||||||
} else {
|
} else {
|
||||||
mAccessToken = newAccount.getAccessToken();
|
mAccessToken = newAccount.getAccessToken();
|
||||||
@ -368,7 +373,7 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
bindView(true);
|
bindView(true);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(account == null) {
|
if (account == null) {
|
||||||
mNullAccessToken = true;
|
mNullAccessToken = true;
|
||||||
} else {
|
} else {
|
||||||
mAccessToken = account.getAccessToken();
|
mAccessToken = account.getAccessToken();
|
||||||
@ -381,7 +386,7 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void fetchSubredditData() {
|
private void fetchSubredditData() {
|
||||||
if(!mFetchSubredditInfoSuccess) {
|
if (!mFetchSubredditInfoSuccess) {
|
||||||
FetchSubredditData.fetchSubredditData(mRetrofit, subredditName, new FetchSubredditData.FetchSubredditDataListener() {
|
FetchSubredditData.fetchSubredditData(mRetrofit, subredditName, new FetchSubredditData.FetchSubredditDataListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onFetchSubredditDataSuccess(SubredditData subredditData, int nCurrentOnlineSubscribers) {
|
public void onFetchSubredditDataSuccess(SubredditData subredditData, int nCurrentOnlineSubscribers) {
|
||||||
@ -400,7 +405,7 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void bindView(boolean initializeFragment) {
|
private void bindView(boolean initializeFragment) {
|
||||||
if(mAccessToken != null && mMessageFullname != null) {
|
if (mAccessToken != null && mMessageFullname != null) {
|
||||||
ReadMessage.readMessage(mOauthRetrofit, mAccessToken, mMessageFullname, new ReadMessage.ReadMessageListener() {
|
ReadMessage.readMessage(mOauthRetrofit, mAccessToken, mMessageFullname, new ReadMessage.ReadMessageListener() {
|
||||||
@Override
|
@Override
|
||||||
public void readSuccess() {
|
public void readSuccess() {
|
||||||
@ -415,14 +420,14 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
}
|
}
|
||||||
|
|
||||||
subscribeSubredditChip.setOnClickListener(view -> {
|
subscribeSubredditChip.setOnClickListener(view -> {
|
||||||
if(mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
Toast.makeText(ViewSubredditDetailActivity.this, R.string.login_first, Toast.LENGTH_SHORT).show();
|
Toast.makeText(ViewSubredditDetailActivity.this, R.string.login_first, Toast.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(subscriptionReady) {
|
if (subscriptionReady) {
|
||||||
subscriptionReady = false;
|
subscriptionReady = false;
|
||||||
if(subscribeSubredditChip.getText().equals(getResources().getString(R.string.subscribe))) {
|
if (subscribeSubredditChip.getText().equals(getResources().getString(R.string.subscribe))) {
|
||||||
SubredditSubscription.subscribeToSubreddit(mOauthRetrofit, mRetrofit, mAccessToken,
|
SubredditSubscription.subscribeToSubreddit(mOauthRetrofit, mRetrofit, mAccessToken,
|
||||||
subredditName, mAccountName, mRedditDataRoomDatabase,
|
subredditName, mAccountName, mRedditDataRoomDatabase,
|
||||||
new SubredditSubscription.SubredditSubscriptionListener() {
|
new SubredditSubscription.SubredditSubscriptionListener() {
|
||||||
@ -479,7 +484,7 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
}
|
}
|
||||||
}).execute();
|
}).execute();
|
||||||
|
|
||||||
if(initializeFragment) {
|
if (initializeFragment) {
|
||||||
mFragment = new PostFragment();
|
mFragment = new PostFragment();
|
||||||
Bundle bundle = new Bundle();
|
Bundle bundle = new Bundle();
|
||||||
bundle.putString(PostFragment.EXTRA_NAME, subredditName);
|
bundle.putString(PostFragment.EXTRA_NAME, subredditName);
|
||||||
@ -497,7 +502,7 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
getMenuInflater().inflate(R.menu.view_subreddit_detail_activity, menu);
|
getMenuInflater().inflate(R.menu.view_subreddit_detail_activity, menu);
|
||||||
mMenu = menu;
|
mMenu = menu;
|
||||||
MenuItem lazyModeItem = mMenu.findItem(R.id.action_lazy_mode_view_subreddit_detail_activity);
|
MenuItem lazyModeItem = mMenu.findItem(R.id.action_lazy_mode_view_subreddit_detail_activity);
|
||||||
if(isInLazyMode) {
|
if (isInLazyMode) {
|
||||||
lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
|
lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
|
||||||
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_EXIT_UNTIL_COLLAPSED);
|
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_EXIT_UNTIL_COLLAPSED);
|
||||||
collapsingToolbarLayout.setLayoutParams(params);
|
collapsingToolbarLayout.setLayoutParams(params);
|
||||||
@ -527,10 +532,10 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
break;
|
break;
|
||||||
case R.id.action_refresh_view_subreddit_detail_activity:
|
case R.id.action_refresh_view_subreddit_detail_activity:
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_lazy_mode_view_subreddit_detail_activity).setTitle(R.string.action_start_lazy_mode);
|
mMenu.findItem(R.id.action_lazy_mode_view_subreddit_detail_activity).setTitle(R.string.action_start_lazy_mode);
|
||||||
}
|
}
|
||||||
if(mFragment instanceof FragmentCommunicator) {
|
if (mFragment instanceof FragmentCommunicator) {
|
||||||
((FragmentCommunicator) mFragment).refresh();
|
((FragmentCommunicator) mFragment).refresh();
|
||||||
mFetchSubredditInfoSuccess = false;
|
mFetchSubredditInfoSuccess = false;
|
||||||
fetchSubredditData();
|
fetchSubredditData();
|
||||||
@ -538,7 +543,7 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
break;
|
break;
|
||||||
case R.id.action_lazy_mode_view_subreddit_detail_activity:
|
case R.id.action_lazy_mode_view_subreddit_detail_activity:
|
||||||
MenuItem lazyModeItem = mMenu.findItem(R.id.action_lazy_mode_view_subreddit_detail_activity);
|
MenuItem lazyModeItem = mMenu.findItem(R.id.action_lazy_mode_view_subreddit_detail_activity);
|
||||||
if(isInLazyMode) {
|
if (isInLazyMode) {
|
||||||
isInLazyMode = false;
|
isInLazyMode = false;
|
||||||
((FragmentCommunicator) mFragment).stopLazyMode();
|
((FragmentCommunicator) mFragment).stopLazyMode();
|
||||||
lazyModeItem.setTitle(R.string.action_start_lazy_mode);
|
lazyModeItem.setTitle(R.string.action_start_lazy_mode);
|
||||||
@ -547,7 +552,7 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
collapsingToolbarLayout.setLayoutParams(params);
|
collapsingToolbarLayout.setLayoutParams(params);
|
||||||
} else {
|
} else {
|
||||||
isInLazyMode = true;
|
isInLazyMode = true;
|
||||||
if(((FragmentCommunicator) mFragment).startLazyMode()) {
|
if (((FragmentCommunicator) mFragment).startLazyMode()) {
|
||||||
lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
|
lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
|
||||||
appBarLayout.setExpanded(false);
|
appBarLayout.setExpanded(false);
|
||||||
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_EXIT_UNTIL_COLLAPSED);
|
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_EXIT_UNTIL_COLLAPSED);
|
||||||
@ -581,10 +586,10 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void makeSnackbar(int resId, boolean retry) {
|
private void makeSnackbar(int resId, boolean retry) {
|
||||||
if(showToast) {
|
if (showToast) {
|
||||||
Toast.makeText(this, resId, Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, resId, Toast.LENGTH_SHORT).show();
|
||||||
} else {
|
} else {
|
||||||
if(retry) {
|
if (retry) {
|
||||||
Snackbar.make(coordinatorLayout, resId, Snackbar.LENGTH_SHORT).setAction(R.string.retry,
|
Snackbar.make(coordinatorLayout, resId, Snackbar.LENGTH_SHORT).setAction(R.string.retry,
|
||||||
view -> fetchSubredditData()).show();
|
view -> fetchSubredditData()).show();
|
||||||
} else {
|
} else {
|
||||||
@ -634,7 +639,7 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onAccountSwitchEvent(SwitchAccountEvent event) {
|
public void onAccountSwitchEvent(SwitchAccountEvent event) {
|
||||||
if(!getClass().getName().equals(event.excludeActivityClassName)) {
|
if (!getClass().getName().equals(event.excludeActivityClassName)) {
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -647,14 +652,9 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
|
|
||||||
private static class InsertSubredditDataAsyncTask extends AsyncTask<Void, Void, Void> {
|
private static class InsertSubredditDataAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
|
|
||||||
interface InsertSubredditDataAsyncTaskListener {
|
|
||||||
void insertSuccess();
|
|
||||||
}
|
|
||||||
|
|
||||||
private SubredditDao mSubredditDao;
|
private SubredditDao mSubredditDao;
|
||||||
private SubredditData subredditData;
|
private SubredditData subredditData;
|
||||||
private InsertSubredditDataAsyncTaskListener insertSubredditDataAsyncTaskListener;
|
private InsertSubredditDataAsyncTaskListener insertSubredditDataAsyncTaskListener;
|
||||||
|
|
||||||
InsertSubredditDataAsyncTask(RedditDataRoomDatabase db, SubredditData subredditData,
|
InsertSubredditDataAsyncTask(RedditDataRoomDatabase db, SubredditData subredditData,
|
||||||
InsertSubredditDataAsyncTaskListener insertSubredditDataAsyncTaskListener) {
|
InsertSubredditDataAsyncTaskListener insertSubredditDataAsyncTaskListener) {
|
||||||
mSubredditDao = db.subredditDao();
|
mSubredditDao = db.subredditDao();
|
||||||
@ -672,5 +672,9 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
|
|||||||
protected void onPostExecute(Void aVoid) {
|
protected void onPostExecute(Void aVoid) {
|
||||||
insertSubredditDataAsyncTaskListener.insertSuccess();
|
insertSubredditDataAsyncTaskListener.insertSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface InsertSubredditDataAsyncTaskListener {
|
||||||
|
void insertSuccess();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,35 +43,35 @@ import org.greenrobot.eventbus.Subscribe;
|
|||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Named;
|
import javax.inject.Named;
|
||||||
|
|
||||||
|
import butterknife.BindView;
|
||||||
|
import butterknife.ButterKnife;
|
||||||
|
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
|
||||||
import ml.docilealligator.infinityforreddit.AppBarStateChangeListener;
|
import ml.docilealligator.infinityforreddit.AppBarStateChangeListener;
|
||||||
import ml.docilealligator.infinityforreddit.Event.ChangeNSFWEvent;
|
|
||||||
import ml.docilealligator.infinityforreddit.AsyncTask.CheckIsFollowingUserAsyncTask;
|
import ml.docilealligator.infinityforreddit.AsyncTask.CheckIsFollowingUserAsyncTask;
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.CommentsListingFragment;
|
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
|
||||||
|
import ml.docilealligator.infinityforreddit.AsyncTask.SwitchAccountAsyncTask;
|
||||||
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
import ml.docilealligator.infinityforreddit.ContentFontStyle;
|
||||||
import ml.docilealligator.infinityforreddit.DeleteThing;
|
import ml.docilealligator.infinityforreddit.DeleteThing;
|
||||||
|
import ml.docilealligator.infinityforreddit.Event.ChangeNSFWEvent;
|
||||||
|
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
||||||
import ml.docilealligator.infinityforreddit.FetchUserData;
|
import ml.docilealligator.infinityforreddit.FetchUserData;
|
||||||
import ml.docilealligator.infinityforreddit.FontStyle;
|
import ml.docilealligator.infinityforreddit.FontStyle;
|
||||||
|
import ml.docilealligator.infinityforreddit.Fragment.CommentsListingFragment;
|
||||||
|
import ml.docilealligator.infinityforreddit.Fragment.PostFragment;
|
||||||
|
import ml.docilealligator.infinityforreddit.Fragment.UserThingSortTypeBottomSheetFragment;
|
||||||
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
||||||
import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask;
|
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.PostDataSource;
|
import ml.docilealligator.infinityforreddit.PostDataSource;
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.PostFragment;
|
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.ReadMessage;
|
import ml.docilealligator.infinityforreddit.ReadMessage;
|
||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||||
import ml.docilealligator.infinityforreddit.SubscribedUserDatabase.SubscribedUserDao;
|
import ml.docilealligator.infinityforreddit.SubscribedUserDatabase.SubscribedUserDao;
|
||||||
import ml.docilealligator.infinityforreddit.AsyncTask.SwitchAccountAsyncTask;
|
|
||||||
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
|
||||||
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
import ml.docilealligator.infinityforreddit.TitleFontStyle;
|
||||||
import ml.docilealligator.infinityforreddit.User.UserDao;
|
import ml.docilealligator.infinityforreddit.User.UserDao;
|
||||||
import ml.docilealligator.infinityforreddit.User.UserData;
|
import ml.docilealligator.infinityforreddit.User.UserData;
|
||||||
import ml.docilealligator.infinityforreddit.User.UserViewModel;
|
import ml.docilealligator.infinityforreddit.User.UserViewModel;
|
||||||
import butterknife.BindView;
|
|
||||||
import butterknife.ButterKnife;
|
|
||||||
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
|
|
||||||
import ml.docilealligator.infinityforreddit.UserFollowing;
|
import ml.docilealligator.infinityforreddit.UserFollowing;
|
||||||
import ml.docilealligator.infinityforreddit.Fragment.UserThingSortTypeBottomSheetFragment;
|
|
||||||
import pl.droidsonroids.gif.GifImageView;
|
import pl.droidsonroids.gif.GifImageView;
|
||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
@ -94,27 +94,43 @@ public class ViewUserDetailActivity extends AppCompatActivity implements UserThi
|
|||||||
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";
|
||||||
|
|
||||||
@BindView(R.id.coordinator_layout_view_user_detail_activity) CoordinatorLayout coordinatorLayout;
|
@BindView(R.id.coordinator_layout_view_user_detail_activity)
|
||||||
@BindView(R.id.view_pager_view_user_detail_activity) ViewPager viewPager;
|
CoordinatorLayout coordinatorLayout;
|
||||||
@BindView(R.id.appbar_layout_view_user_detail) AppBarLayout appBarLayout;
|
@BindView(R.id.view_pager_view_user_detail_activity)
|
||||||
@BindView(R.id.tab_layout_view_user_detail_activity) TabLayout tabLayout;
|
ViewPager viewPager;
|
||||||
@BindView(R.id.collapsing_toolbar_layout_view_user_detail_activity) CollapsingToolbarLayout collapsingToolbarLayout;
|
@BindView(R.id.appbar_layout_view_user_detail)
|
||||||
@BindView(R.id.banner_image_view_view_user_detail_activity) GifImageView bannerImageView;
|
AppBarLayout appBarLayout;
|
||||||
@BindView(R.id.icon_gif_image_view_view_user_detail_activity) GifImageView iconGifImageView;
|
@BindView(R.id.tab_layout_view_user_detail_activity)
|
||||||
@BindView(R.id.user_name_text_view_view_user_detail_activity) TextView userNameTextView;
|
TabLayout tabLayout;
|
||||||
@BindView(R.id.subscribe_user_chip_view_user_detail_activity) Chip subscribeUserChip;
|
@BindView(R.id.collapsing_toolbar_layout_view_user_detail_activity)
|
||||||
@BindView(R.id.karma_text_view_view_user_detail_activity) TextView karmaTextView;
|
CollapsingToolbarLayout collapsingToolbarLayout;
|
||||||
|
@BindView(R.id.banner_image_view_view_user_detail_activity)
|
||||||
|
GifImageView bannerImageView;
|
||||||
|
@BindView(R.id.icon_gif_image_view_view_user_detail_activity)
|
||||||
|
GifImageView iconGifImageView;
|
||||||
|
@BindView(R.id.user_name_text_view_view_user_detail_activity)
|
||||||
|
TextView userNameTextView;
|
||||||
|
@BindView(R.id.subscribe_user_chip_view_user_detail_activity)
|
||||||
|
Chip subscribeUserChip;
|
||||||
|
@BindView(R.id.karma_text_view_view_user_detail_activity)
|
||||||
|
TextView karmaTextView;
|
||||||
|
@Inject
|
||||||
|
@Named("no_oauth")
|
||||||
|
Retrofit mRetrofit;
|
||||||
|
@Inject
|
||||||
|
@Named("oauth")
|
||||||
|
Retrofit mOauthRetrofit;
|
||||||
|
@Inject
|
||||||
|
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
|
@Inject
|
||||||
|
SharedPreferences mSharedPreferences;
|
||||||
private SectionsPagerAdapter sectionsPagerAdapter;
|
private SectionsPagerAdapter sectionsPagerAdapter;
|
||||||
|
|
||||||
private SubscribedUserDao subscribedUserDao;
|
private SubscribedUserDao subscribedUserDao;
|
||||||
private RequestManager glide;
|
private RequestManager glide;
|
||||||
private UserViewModel userViewModel;
|
private UserViewModel userViewModel;
|
||||||
private Menu mMenu;
|
private Menu mMenu;
|
||||||
private AppBarLayout.LayoutParams params;
|
private AppBarLayout.LayoutParams params;
|
||||||
|
|
||||||
private UserThingSortTypeBottomSheetFragment userThingSortTypeBottomSheetFragment;
|
private UserThingSortTypeBottomSheetFragment userThingSortTypeBottomSheetFragment;
|
||||||
|
|
||||||
private boolean mNullAccessToken = false;
|
private boolean mNullAccessToken = false;
|
||||||
private String mAccessToken;
|
private String mAccessToken;
|
||||||
private String mAccountName;
|
private String mAccountName;
|
||||||
@ -132,20 +148,6 @@ public class ViewUserDetailActivity extends AppCompatActivity implements UserThi
|
|||||||
private String mMessageFullname;
|
private String mMessageFullname;
|
||||||
private String mNewAccountName;
|
private String mNewAccountName;
|
||||||
|
|
||||||
@Inject
|
|
||||||
@Named("no_oauth")
|
|
||||||
Retrofit mRetrofit;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
@Named("oauth")
|
|
||||||
Retrofit mOauthRetrofit;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
SharedPreferences mSharedPreferences;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@ -177,7 +179,7 @@ public class ViewUserDetailActivity extends AppCompatActivity implements UserThi
|
|||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if(systemDefault) {
|
if (systemDefault) {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM);
|
||||||
} else {
|
} else {
|
||||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_AUTO_BATTERY);
|
||||||
@ -246,7 +248,7 @@ public class ViewUserDetailActivity extends AppCompatActivity implements UserThi
|
|||||||
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
||||||
|
|
||||||
boolean lightNavBar = false;
|
boolean lightNavBar = false;
|
||||||
if((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
if ((resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
lightNavBar = true;
|
lightNavBar = true;
|
||||||
}
|
}
|
||||||
boolean finalLightNavBar = lightNavBar;
|
boolean finalLightNavBar = lightNavBar;
|
||||||
@ -256,14 +258,14 @@ public class ViewUserDetailActivity extends AppCompatActivity implements UserThi
|
|||||||
@Override
|
@Override
|
||||||
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
public void onStateChanged(AppBarLayout appBarLayout, State state) {
|
||||||
if (state == State.COLLAPSED) {
|
if (state == State.COLLAPSED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
tabLayout.setTabTextColors(collapsedTabTextColor, collapsedTabTextColor);
|
tabLayout.setTabTextColors(collapsedTabTextColor, collapsedTabTextColor);
|
||||||
tabLayout.setSelectedTabIndicatorColor(collapsedTabIndicatorColor);
|
tabLayout.setSelectedTabIndicatorColor(collapsedTabIndicatorColor);
|
||||||
tabLayout.setBackgroundColor(collapsedTabBackgroundColor);
|
tabLayout.setBackgroundColor(collapsedTabBackgroundColor);
|
||||||
} else if (state == State.EXPANDED) {
|
} else if (state == State.EXPANDED) {
|
||||||
if(finalLightNavBar) {
|
if (finalLightNavBar) {
|
||||||
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
tabLayout.setTabTextColors(expandedTabTextColor, expandedTabTextColor);
|
tabLayout.setTabTextColors(expandedTabTextColor, expandedTabTextColor);
|
||||||
@ -339,7 +341,7 @@ public class ViewUserDetailActivity extends AppCompatActivity implements UserThi
|
|||||||
if (userData.isCanBeFollowed()) {
|
if (userData.isCanBeFollowed()) {
|
||||||
subscribeUserChip.setVisibility(View.VISIBLE);
|
subscribeUserChip.setVisibility(View.VISIBLE);
|
||||||
subscribeUserChip.setOnClickListener(view -> {
|
subscribeUserChip.setOnClickListener(view -> {
|
||||||
if(mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
Toast.makeText(ViewUserDetailActivity.this, R.string.login_first, Toast.LENGTH_SHORT).show();
|
Toast.makeText(ViewUserDetailActivity.this, R.string.login_first, Toast.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -418,14 +420,14 @@ public class ViewUserDetailActivity extends AppCompatActivity implements UserThi
|
|||||||
|
|
||||||
private void getCurrentAccountAndInitializeViewPager() {
|
private void getCurrentAccountAndInitializeViewPager() {
|
||||||
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
||||||
if(mNewAccountName != null) {
|
if (mNewAccountName != null) {
|
||||||
if(account == null || !account.getUsername().equals(mNewAccountName)) {
|
if (account == null || !account.getUsername().equals(mNewAccountName)) {
|
||||||
new SwitchAccountAsyncTask(mRedditDataRoomDatabase, mNewAccountName, newAccount -> {
|
new SwitchAccountAsyncTask(mRedditDataRoomDatabase, mNewAccountName, newAccount -> {
|
||||||
EventBus.getDefault().post(new SwitchAccountEvent(getClass().getName()));
|
EventBus.getDefault().post(new SwitchAccountEvent(getClass().getName()));
|
||||||
Toast.makeText(this, R.string.account_switched, Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, R.string.account_switched, Toast.LENGTH_SHORT).show();
|
||||||
|
|
||||||
mNewAccountName = null;
|
mNewAccountName = null;
|
||||||
if(newAccount == null) {
|
if (newAccount == null) {
|
||||||
mNullAccessToken = true;
|
mNullAccessToken = true;
|
||||||
} else {
|
} else {
|
||||||
mAccessToken = newAccount.getAccessToken();
|
mAccessToken = newAccount.getAccessToken();
|
||||||
@ -440,7 +442,7 @@ public class ViewUserDetailActivity extends AppCompatActivity implements UserThi
|
|||||||
initializeViewPager();
|
initializeViewPager();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(account == null) {
|
if (account == null) {
|
||||||
mNullAccessToken = true;
|
mNullAccessToken = true;
|
||||||
} else {
|
} else {
|
||||||
mAccessToken = account.getAccessToken();
|
mAccessToken = account.getAccessToken();
|
||||||
@ -466,8 +468,8 @@ public class ViewUserDetailActivity extends AppCompatActivity implements UserThi
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPageSelected(int position) {
|
public void onPageSelected(int position) {
|
||||||
if(isInLazyMode) {
|
if (isInLazyMode) {
|
||||||
if(viewPager.getCurrentItem() == 0) {
|
if (viewPager.getCurrentItem() == 0) {
|
||||||
sectionsPagerAdapter.resumeLazyMode();
|
sectionsPagerAdapter.resumeLazyMode();
|
||||||
} else {
|
} else {
|
||||||
sectionsPagerAdapter.pauseLazyMode();
|
sectionsPagerAdapter.pauseLazyMode();
|
||||||
@ -481,7 +483,7 @@ public class ViewUserDetailActivity extends AppCompatActivity implements UserThi
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if(mAccessToken != null && mMessageFullname != null) {
|
if (mAccessToken != null && mMessageFullname != null) {
|
||||||
ReadMessage.readMessage(mOauthRetrofit, mAccessToken, mMessageFullname, new ReadMessage.ReadMessageListener() {
|
ReadMessage.readMessage(mOauthRetrofit, mAccessToken, mMessageFullname, new ReadMessage.ReadMessageListener() {
|
||||||
@Override
|
@Override
|
||||||
public void readSuccess() {
|
public void readSuccess() {
|
||||||
@ -570,7 +572,7 @@ public class ViewUserDetailActivity extends AppCompatActivity implements UserThi
|
|||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_refresh_view_user_detail_activity:
|
case R.id.action_refresh_view_user_detail_activity:
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
mMenu.findItem(R.id.action_lazy_mode_view_user_detail_activity).setTitle(R.string.action_start_lazy_mode);
|
mMenu.findItem(R.id.action_lazy_mode_view_user_detail_activity).setTitle(R.string.action_start_lazy_mode);
|
||||||
}
|
}
|
||||||
sectionsPagerAdapter.refresh();
|
sectionsPagerAdapter.refresh();
|
||||||
@ -579,7 +581,7 @@ public class ViewUserDetailActivity extends AppCompatActivity implements UserThi
|
|||||||
return true;
|
return true;
|
||||||
case R.id.action_lazy_mode_view_user_detail_activity:
|
case R.id.action_lazy_mode_view_user_detail_activity:
|
||||||
MenuItem lazyModeItem = mMenu.findItem(R.id.action_lazy_mode_view_user_detail_activity);
|
MenuItem lazyModeItem = mMenu.findItem(R.id.action_lazy_mode_view_user_detail_activity);
|
||||||
if(isInLazyMode) {
|
if (isInLazyMode) {
|
||||||
isInLazyMode = false;
|
isInLazyMode = false;
|
||||||
sectionsPagerAdapter.stopLazyMode();
|
sectionsPagerAdapter.stopLazyMode();
|
||||||
lazyModeItem.setTitle(R.string.action_start_lazy_mode);
|
lazyModeItem.setTitle(R.string.action_start_lazy_mode);
|
||||||
@ -588,7 +590,7 @@ public class ViewUserDetailActivity extends AppCompatActivity implements UserThi
|
|||||||
collapsingToolbarLayout.setLayoutParams(params);
|
collapsingToolbarLayout.setLayoutParams(params);
|
||||||
} else {
|
} else {
|
||||||
isInLazyMode = true;
|
isInLazyMode = true;
|
||||||
if(sectionsPagerAdapter.startLazyMode()) {
|
if (sectionsPagerAdapter.startLazyMode()) {
|
||||||
lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
|
lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
|
||||||
appBarLayout.setExpanded(false);
|
appBarLayout.setExpanded(false);
|
||||||
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_EXIT_UNTIL_COLLAPSED);
|
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_EXIT_UNTIL_COLLAPSED);
|
||||||
@ -621,7 +623,7 @@ public class ViewUserDetailActivity extends AppCompatActivity implements UserThi
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showMessage(int resId, boolean retry) {
|
private void showMessage(int resId, boolean retry) {
|
||||||
if(showToast) {
|
if (showToast) {
|
||||||
Toast.makeText(this, resId, Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, resId, Toast.LENGTH_SHORT).show();
|
||||||
} else {
|
} else {
|
||||||
if (retry) {
|
if (retry) {
|
||||||
@ -640,7 +642,7 @@ public class ViewUserDetailActivity extends AppCompatActivity implements UserThi
|
|||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onAccountSwitchEvent(SwitchAccountEvent event) {
|
public void onAccountSwitchEvent(SwitchAccountEvent event) {
|
||||||
if(!getClass().getName().equals(event.excludeActivityClassName)) {
|
if (!getClass().getName().equals(event.excludeActivityClassName)) {
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -652,14 +654,9 @@ public class ViewUserDetailActivity extends AppCompatActivity implements UserThi
|
|||||||
|
|
||||||
private static class InsertUserDataAsyncTask extends AsyncTask<Void, Void, Void> {
|
private static class InsertUserDataAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
|
|
||||||
interface InsertUserDataAsyncTaskListener {
|
|
||||||
void insertSuccess();
|
|
||||||
}
|
|
||||||
|
|
||||||
private UserDao userDao;
|
private UserDao userDao;
|
||||||
private UserData subredditData;
|
private UserData subredditData;
|
||||||
private InsertUserDataAsyncTaskListener insertUserDataAsyncTaskListener;
|
private InsertUserDataAsyncTaskListener insertUserDataAsyncTaskListener;
|
||||||
|
|
||||||
InsertUserDataAsyncTask(UserDao userDao, UserData userData,
|
InsertUserDataAsyncTask(UserDao userDao, UserData userData,
|
||||||
InsertUserDataAsyncTaskListener insertUserDataAsyncTaskListener) {
|
InsertUserDataAsyncTaskListener insertUserDataAsyncTaskListener) {
|
||||||
this.userDao = userDao;
|
this.userDao = userDao;
|
||||||
@ -677,6 +674,10 @@ public class ViewUserDetailActivity extends AppCompatActivity implements UserThi
|
|||||||
protected void onPostExecute(Void aVoid) {
|
protected void onPostExecute(Void aVoid) {
|
||||||
insertUserDataAsyncTaskListener.insertSuccess();
|
insertUserDataAsyncTaskListener.insertSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface InsertUserDataAsyncTaskListener {
|
||||||
|
void insertSuccess();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class SectionsPagerAdapter extends FragmentPagerAdapter {
|
private class SectionsPagerAdapter extends FragmentPagerAdapter {
|
||||||
@ -744,55 +745,55 @@ public class ViewUserDetailActivity extends AppCompatActivity implements UserThi
|
|||||||
|
|
||||||
public void refresh() {
|
public void refresh() {
|
||||||
if (viewPager.getCurrentItem() == 0) {
|
if (viewPager.getCurrentItem() == 0) {
|
||||||
if(postFragment != null) {
|
if (postFragment != null) {
|
||||||
postFragment.refresh();
|
postFragment.refresh();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(commentsListingFragment != null) {
|
if (commentsListingFragment != null) {
|
||||||
commentsListingFragment.refresh();
|
commentsListingFragment.refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean startLazyMode() {
|
boolean startLazyMode() {
|
||||||
if(postFragment != null) {
|
if (postFragment != null) {
|
||||||
return ((FragmentCommunicator) postFragment).startLazyMode();
|
return ((FragmentCommunicator) postFragment).startLazyMode();
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void stopLazyMode() {
|
void stopLazyMode() {
|
||||||
if(postFragment != null) {
|
if (postFragment != null) {
|
||||||
((FragmentCommunicator) postFragment).stopLazyMode();
|
((FragmentCommunicator) postFragment).stopLazyMode();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void resumeLazyMode() {
|
void resumeLazyMode() {
|
||||||
if(postFragment != null) {
|
if (postFragment != null) {
|
||||||
((FragmentCommunicator) postFragment).resumeLazyMode(false);
|
((FragmentCommunicator) postFragment).resumeLazyMode(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void pauseLazyMode() {
|
void pauseLazyMode() {
|
||||||
if(postFragment != null) {
|
if (postFragment != null) {
|
||||||
((FragmentCommunicator) postFragment).pauseLazyMode(false);
|
((FragmentCommunicator) postFragment).pauseLazyMode(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void changeSortType(String sortType) {
|
public void changeSortType(String sortType) {
|
||||||
if(viewPager.getCurrentItem() == 0) {
|
if (viewPager.getCurrentItem() == 0) {
|
||||||
if(postFragment != null) {
|
if (postFragment != null) {
|
||||||
postFragment.changeSortType(sortType);
|
postFragment.changeSortType(sortType);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(commentsListingFragment != null) {
|
if (commentsListingFragment != null) {
|
||||||
commentsListingFragment.changeSortType(sortType);
|
commentsListingFragment.changeSortType(sortType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void changeNSFW(boolean nsfw) {
|
public void changeNSFW(boolean nsfw) {
|
||||||
if(postFragment != null) {
|
if (postFragment != null) {
|
||||||
postFragment.changeNSFW(nsfw);
|
postFragment.changeNSFW(nsfw);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -50,14 +50,14 @@ import ml.docilealligator.infinityforreddit.R;
|
|||||||
|
|
||||||
public class ViewVideoActivity extends AppCompatActivity {
|
public class ViewVideoActivity extends AppCompatActivity {
|
||||||
|
|
||||||
private static final int PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE = 0;
|
|
||||||
|
|
||||||
public static final String TITLE_KEY = "TK";
|
public static final String TITLE_KEY = "TK";
|
||||||
public static final String SUBREDDIT_KEY = "SK";
|
public static final String SUBREDDIT_KEY = "SK";
|
||||||
public static final String ID_KEY = "IK";
|
public static final String ID_KEY = "IK";
|
||||||
|
private static final int PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE = 0;
|
||||||
@BindView(R.id.relative_layout_view_video_activity) RelativeLayout relativeLayout;
|
@BindView(R.id.relative_layout_view_video_activity)
|
||||||
@BindView(R.id.player_view_view_video_activity) PlayerView videoPlayerView;
|
RelativeLayout relativeLayout;
|
||||||
|
@BindView(R.id.player_view_view_video_activity)
|
||||||
|
PlayerView videoPlayerView;
|
||||||
|
|
||||||
private Uri mVideoUri;
|
private Uri mVideoUri;
|
||||||
private SimpleExoPlayer player;
|
private SimpleExoPlayer player;
|
||||||
@ -122,7 +122,7 @@ public class ViewVideoActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
actionBarElementColorAnimation.addUpdateListener(valueAnimator -> {
|
actionBarElementColorAnimation.addUpdateListener(valueAnimator -> {
|
||||||
upArrow.setColorFilter((int) valueAnimator.getAnimatedValue(), PorterDuff.Mode.SRC_IN);
|
upArrow.setColorFilter((int) valueAnimator.getAnimatedValue(), PorterDuff.Mode.SRC_IN);
|
||||||
if(mMenu != null) {
|
if (mMenu != null) {
|
||||||
Drawable drawable = mMenu.getItem(0).getIcon();
|
Drawable drawable = mMenu.getItem(0).getIcon();
|
||||||
drawable.setColorFilter((int) valueAnimator.getAnimatedValue(), PorterDuff.Mode.SRC_IN);
|
drawable.setColorFilter((int) valueAnimator.getAnimatedValue(), PorterDuff.Mode.SRC_IN);
|
||||||
}
|
}
|
||||||
@ -134,7 +134,7 @@ public class ViewVideoActivity extends AppCompatActivity {
|
|||||||
public void onSwipingUp(final MotionEvent event) {
|
public void onSwipingUp(final MotionEvent event) {
|
||||||
float nowY = event.getY();
|
float nowY = event.getY();
|
||||||
float offset;
|
float offset;
|
||||||
if(touchY == -1.0f) {
|
if (touchY == -1.0f) {
|
||||||
offset = 0.0f;
|
offset = 0.0f;
|
||||||
} else {
|
} else {
|
||||||
offset = nowY - touchY;
|
offset = nowY - touchY;
|
||||||
@ -154,7 +154,7 @@ public class ViewVideoActivity extends AppCompatActivity {
|
|||||||
.setDuration(300)
|
.setDuration(300)
|
||||||
.start();
|
.start();
|
||||||
|
|
||||||
if(totalLengthY < -pxHeight / 8) {
|
if (totalLengthY < -pxHeight / 8) {
|
||||||
videoPlayerView.animate()
|
videoPlayerView.animate()
|
||||||
.y(-pxHeight)
|
.y(-pxHeight)
|
||||||
.setDuration(300)
|
.setDuration(300)
|
||||||
@ -172,10 +172,12 @@ public class ViewVideoActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAnimationCancel(Animator animator) {}
|
public void onAnimationCancel(Animator animator) {
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAnimationRepeat(Animator animator) {}
|
public void onAnimationRepeat(Animator animator) {
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.start();
|
.start();
|
||||||
} else {
|
} else {
|
||||||
@ -194,7 +196,7 @@ public class ViewVideoActivity extends AppCompatActivity {
|
|||||||
public void onSwipingDown(final MotionEvent event) {
|
public void onSwipingDown(final MotionEvent event) {
|
||||||
float nowY = event.getY();
|
float nowY = event.getY();
|
||||||
float offset;
|
float offset;
|
||||||
if(touchY == -1.0f) {
|
if (touchY == -1.0f) {
|
||||||
offset = 0.0f;
|
offset = 0.0f;
|
||||||
} else {
|
} else {
|
||||||
offset = nowY - touchY;
|
offset = nowY - touchY;
|
||||||
@ -209,7 +211,7 @@ public class ViewVideoActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onSwipedDown(final MotionEvent event) {
|
public boolean onSwipedDown(final MotionEvent event) {
|
||||||
if(totalLengthY > pxHeight / 8) {
|
if (totalLengthY > pxHeight / 8) {
|
||||||
videoPlayerView.animate()
|
videoPlayerView.animate()
|
||||||
.y(pxHeight)
|
.y(pxHeight)
|
||||||
.setDuration(300)
|
.setDuration(300)
|
||||||
@ -227,10 +229,12 @@ public class ViewVideoActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAnimationCancel(Animator animator) {}
|
public void onAnimationCancel(Animator animator) {
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAnimationRepeat(Animator animator) {}
|
public void onAnimationRepeat(Animator animator) {
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.start();
|
.start();
|
||||||
} else {
|
} else {
|
||||||
@ -333,7 +337,7 @@ public class ViewVideoActivity extends AppCompatActivity {
|
|||||||
@Override
|
@Override
|
||||||
protected void onStart() {
|
protected void onStart() {
|
||||||
super.onStart();
|
super.onStart();
|
||||||
if(wasPlaying) {
|
if (wasPlaying) {
|
||||||
player.setPlayWhenReady(true);
|
player.setPlayWhenReady(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -347,10 +351,10 @@ public class ViewVideoActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
||||||
if(requestCode == PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE && grantResults.length > 0) {
|
if (requestCode == PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE && grantResults.length > 0) {
|
||||||
if(grantResults[0] == PackageManager.PERMISSION_DENIED) {
|
if (grantResults[0] == PackageManager.PERMISSION_DENIED) {
|
||||||
Toast.makeText(this, R.string.no_storage_permission, Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, R.string.no_storage_permission, Toast.LENGTH_SHORT).show();
|
||||||
} else if(grantResults[0] == PackageManager.PERMISSION_GRANTED && isDownloading) {
|
} else if (grantResults[0] == PackageManager.PERMISSION_GRANTED && isDownloading) {
|
||||||
download();
|
download();
|
||||||
}
|
}
|
||||||
isDownloading = false;
|
isDownloading = false;
|
||||||
|
@ -15,28 +15,20 @@ import com.bumptech.glide.request.RequestOptions;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import ml.docilealligator.infinityforreddit.Account.Account;
|
|
||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
|
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
|
||||||
|
import ml.docilealligator.infinityforreddit.Account.Account;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import pl.droidsonroids.gif.GifImageView;
|
import pl.droidsonroids.gif.GifImageView;
|
||||||
|
|
||||||
public class AccountRecyclerViewAdapter extends RecyclerView.Adapter<AccountRecyclerViewAdapter.AccountViewHolder> {
|
public class AccountRecyclerViewAdapter extends RecyclerView.Adapter<AccountRecyclerViewAdapter.AccountViewHolder> {
|
||||||
|
|
||||||
public interface ItemSelectedListener {
|
|
||||||
void accountSelected(Account account);
|
|
||||||
void addAccountSelected();
|
|
||||||
void anonymousSelected();
|
|
||||||
void logoutSelected();
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<Account> mAccounts;
|
private List<Account> mAccounts;
|
||||||
private String mCurrentAccountName;
|
private String mCurrentAccountName;
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private RequestManager mGlide;
|
private RequestManager mGlide;
|
||||||
private ItemSelectedListener mItemSelectedListener;
|
private ItemSelectedListener mItemSelectedListener;
|
||||||
|
|
||||||
public AccountRecyclerViewAdapter(Context context, RequestManager glide, String currentAccountName, ItemSelectedListener itemSelectedListener) {
|
public AccountRecyclerViewAdapter(Context context, RequestManager glide, String currentAccountName, ItemSelectedListener itemSelectedListener) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mGlide = glide;
|
mGlide = glide;
|
||||||
@ -52,14 +44,14 @@ public class AccountRecyclerViewAdapter extends RecyclerView.Adapter<AccountRecy
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(@NonNull AccountViewHolder holder, int position) {
|
public void onBindViewHolder(@NonNull AccountViewHolder holder, int position) {
|
||||||
if(mAccounts == null) {
|
if (mAccounts == null) {
|
||||||
mGlide.load(R.drawable.subreddit_default_icon)
|
mGlide.load(R.drawable.subreddit_default_icon)
|
||||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(128, 0)))
|
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(128, 0)))
|
||||||
.into(holder.profileImageGifImageView);
|
.into(holder.profileImageGifImageView);
|
||||||
holder.usernameTextView.setText(R.string.add_account);
|
holder.usernameTextView.setText(R.string.add_account);
|
||||||
holder.itemView.setOnClickListener(view -> mItemSelectedListener.addAccountSelected());
|
holder.itemView.setOnClickListener(view -> mItemSelectedListener.addAccountSelected());
|
||||||
} else {
|
} else {
|
||||||
if(position < mAccounts.size()) {
|
if (position < mAccounts.size()) {
|
||||||
mGlide.load(mAccounts.get(position).getProfileImageUrl())
|
mGlide.load(mAccounts.get(position).getProfileImageUrl())
|
||||||
.error(mGlide.load(R.drawable.subreddit_default_icon))
|
.error(mGlide.load(R.drawable.subreddit_default_icon))
|
||||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(128, 0)))
|
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(128, 0)))
|
||||||
@ -69,14 +61,14 @@ public class AccountRecyclerViewAdapter extends RecyclerView.Adapter<AccountRecy
|
|||||||
mCurrentAccountName = mAccounts.get(position).getUsername();
|
mCurrentAccountName = mAccounts.get(position).getUsername();
|
||||||
mItemSelectedListener.accountSelected(mAccounts.get(position));
|
mItemSelectedListener.accountSelected(mAccounts.get(position));
|
||||||
});
|
});
|
||||||
} else if(position == mAccounts.size()) {
|
} else if (position == mAccounts.size()) {
|
||||||
holder.profileImageGifImageView.setColorFilter(ContextCompat.getColor(mContext, R.color.primaryTextColor), android.graphics.PorterDuff.Mode.SRC_IN);
|
holder.profileImageGifImageView.setColorFilter(ContextCompat.getColor(mContext, R.color.primaryTextColor), android.graphics.PorterDuff.Mode.SRC_IN);
|
||||||
mGlide.load(R.drawable.ic_outline_add_circle_outline_24px)
|
mGlide.load(R.drawable.ic_outline_add_circle_outline_24px)
|
||||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(128, 0)))
|
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(128, 0)))
|
||||||
.into(holder.profileImageGifImageView);
|
.into(holder.profileImageGifImageView);
|
||||||
holder.usernameTextView.setText(R.string.add_account);
|
holder.usernameTextView.setText(R.string.add_account);
|
||||||
holder.itemView.setOnClickListener(view -> mItemSelectedListener.addAccountSelected());
|
holder.itemView.setOnClickListener(view -> mItemSelectedListener.addAccountSelected());
|
||||||
} else if(position == mAccounts.size() + 1) {
|
} else if (position == mAccounts.size() + 1) {
|
||||||
holder.profileImageGifImageView.setColorFilter(ContextCompat.getColor(mContext, R.color.primaryTextColor), android.graphics.PorterDuff.Mode.SRC_IN);
|
holder.profileImageGifImageView.setColorFilter(ContextCompat.getColor(mContext, R.color.primaryTextColor), android.graphics.PorterDuff.Mode.SRC_IN);
|
||||||
mGlide.load(R.drawable.ic_outline_public_24px)
|
mGlide.load(R.drawable.ic_outline_public_24px)
|
||||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(128, 0)))
|
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(128, 0)))
|
||||||
@ -96,10 +88,10 @@ public class AccountRecyclerViewAdapter extends RecyclerView.Adapter<AccountRecy
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getItemCount() {
|
public int getItemCount() {
|
||||||
if(mAccounts == null) {
|
if (mAccounts == null) {
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
if(mCurrentAccountName == null) {
|
if (mCurrentAccountName == null) {
|
||||||
return mAccounts.size() + 1;
|
return mAccounts.size() + 1;
|
||||||
} else {
|
} else {
|
||||||
return mAccounts.size() + 3;
|
return mAccounts.size() + 3;
|
||||||
@ -118,9 +110,21 @@ public class AccountRecyclerViewAdapter extends RecyclerView.Adapter<AccountRecy
|
|||||||
notifyDataSetChanged();
|
notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface ItemSelectedListener {
|
||||||
|
void accountSelected(Account account);
|
||||||
|
|
||||||
|
void addAccountSelected();
|
||||||
|
|
||||||
|
void anonymousSelected();
|
||||||
|
|
||||||
|
void logoutSelected();
|
||||||
|
}
|
||||||
|
|
||||||
class AccountViewHolder extends RecyclerView.ViewHolder {
|
class AccountViewHolder extends RecyclerView.ViewHolder {
|
||||||
@BindView(R.id.profile_image_item_account) GifImageView profileImageGifImageView;
|
@BindView(R.id.profile_image_item_account)
|
||||||
@BindView(R.id.username_text_view_item_account) TextView usernameTextView;
|
GifImageView profileImageGifImageView;
|
||||||
|
@BindView(R.id.username_text_view_item_account)
|
||||||
|
TextView usernameTextView;
|
||||||
|
|
||||||
AccountViewHolder(@NonNull View itemView) {
|
AccountViewHolder(@NonNull View itemView) {
|
||||||
super(itemView);
|
super(itemView);
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -43,6 +43,20 @@ import ml.docilealligator.infinityforreddit.VoteThing;
|
|||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<CommentData, RecyclerView.ViewHolder> {
|
public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<CommentData, RecyclerView.ViewHolder> {
|
||||||
|
private static final int VIEW_TYPE_DATA = 0;
|
||||||
|
private static final int VIEW_TYPE_ERROR = 1;
|
||||||
|
private static final int VIEW_TYPE_LOADING = 2;
|
||||||
|
private static final DiffUtil.ItemCallback<CommentData> DIFF_CALLBACK = new DiffUtil.ItemCallback<CommentData>() {
|
||||||
|
@Override
|
||||||
|
public boolean areItemsTheSame(@NonNull CommentData commentData, @NonNull CommentData t1) {
|
||||||
|
return commentData.getId().equals(t1.getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean areContentsTheSame(@NonNull CommentData commentData, @NonNull CommentData t1) {
|
||||||
|
return commentData.getCommentContent().equals(t1.getCommentContent());
|
||||||
|
}
|
||||||
|
};
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private Retrofit mOauthRetrofit;
|
private Retrofit mOauthRetrofit;
|
||||||
private Markwon mMarkwon;
|
private Markwon mMarkwon;
|
||||||
@ -50,18 +64,9 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
|
|||||||
private String mAccountName;
|
private String mAccountName;
|
||||||
private int mTextColorPrimaryDark;
|
private int mTextColorPrimaryDark;
|
||||||
private int mColorAccent;
|
private int mColorAccent;
|
||||||
|
|
||||||
private static final int VIEW_TYPE_DATA = 0;
|
|
||||||
private static final int VIEW_TYPE_ERROR = 1;
|
|
||||||
private static final int VIEW_TYPE_LOADING = 2;
|
|
||||||
|
|
||||||
private NetworkState networkState;
|
private NetworkState networkState;
|
||||||
private RetryLoadingMoreCallback mRetryLoadingMoreCallback;
|
private RetryLoadingMoreCallback mRetryLoadingMoreCallback;
|
||||||
|
|
||||||
public interface RetryLoadingMoreCallback {
|
|
||||||
void retryLoadingMore();
|
|
||||||
}
|
|
||||||
|
|
||||||
public CommentsListingRecyclerViewAdapter(Context context, Retrofit oauthRetrofit,
|
public CommentsListingRecyclerViewAdapter(Context context, Retrofit oauthRetrofit,
|
||||||
String accessToken, String accountName,
|
String accessToken, String accountName,
|
||||||
RetryLoadingMoreCallback retryLoadingMoreCallback) {
|
RetryLoadingMoreCallback retryLoadingMoreCallback) {
|
||||||
@ -75,7 +80,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
|
|||||||
builder.linkResolver((view, link) -> {
|
builder.linkResolver((view, link) -> {
|
||||||
Intent intent = new Intent(mContext, LinkResolverActivity.class);
|
Intent intent = new Intent(mContext, LinkResolverActivity.class);
|
||||||
Uri uri = Uri.parse(link);
|
Uri uri = Uri.parse(link);
|
||||||
if(uri.getScheme() == null && uri.getHost() == null) {
|
if (uri.getScheme() == null && uri.getHost() == null) {
|
||||||
intent.setData(LinkResolverActivity.getRedditUriByPath(link));
|
intent.setData(LinkResolverActivity.getRedditUriByPath(link));
|
||||||
} else {
|
} else {
|
||||||
intent.setData(uri);
|
intent.setData(uri);
|
||||||
@ -94,24 +99,12 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
|
|||||||
mColorAccent = mContext.getResources().getColor(R.color.colorAccent);
|
mColorAccent = mContext.getResources().getColor(R.color.colorAccent);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final DiffUtil.ItemCallback<CommentData> DIFF_CALLBACK = new DiffUtil.ItemCallback<CommentData>() {
|
|
||||||
@Override
|
|
||||||
public boolean areItemsTheSame(@NonNull CommentData commentData, @NonNull CommentData t1) {
|
|
||||||
return commentData.getId().equals(t1.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean areContentsTheSame(@NonNull CommentData commentData, @NonNull CommentData t1) {
|
|
||||||
return commentData.getCommentContent().equals(t1.getCommentContent());
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||||
if(viewType == VIEW_TYPE_DATA) {
|
if (viewType == VIEW_TYPE_DATA) {
|
||||||
return new DataViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_comment, parent, false));
|
return new DataViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_comment, parent, false));
|
||||||
} else if(viewType == VIEW_TYPE_ERROR) {
|
} else if (viewType == VIEW_TYPE_ERROR) {
|
||||||
return new ErrorViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_footer_error, parent, false));
|
return new ErrorViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_footer_error, parent, false));
|
||||||
} else {
|
} else {
|
||||||
return new LoadingViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_footer_loading, parent, false));
|
return new LoadingViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_footer_loading, parent, false));
|
||||||
@ -120,10 +113,10 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
||||||
if(holder instanceof DataViewHolder) {
|
if (holder instanceof DataViewHolder) {
|
||||||
CommentData comment = getItem(holder.getAdapterPosition());
|
CommentData comment = getItem(holder.getAdapterPosition());
|
||||||
if(comment != null) {
|
if (comment != null) {
|
||||||
if(comment.getSubredditName().substring(2).equals(comment.getLinkAuthor())) {
|
if (comment.getSubredditName().substring(2).equals(comment.getLinkAuthor())) {
|
||||||
((DataViewHolder) holder).authorTextView.setText("u/" + comment.getLinkAuthor());
|
((DataViewHolder) holder).authorTextView.setText("u/" + comment.getLinkAuthor());
|
||||||
((DataViewHolder) holder).authorTextView.setTextColor(mTextColorPrimaryDark);
|
((DataViewHolder) holder).authorTextView.setTextColor(mTextColorPrimaryDark);
|
||||||
((DataViewHolder) holder).authorTextView.setOnClickListener(view -> {
|
((DataViewHolder) holder).authorTextView.setOnClickListener(view -> {
|
||||||
@ -160,7 +153,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(comment.getAuthor().equals(mAccountName)) {
|
if (comment.getAuthor().equals(mAccountName)) {
|
||||||
((DataViewHolder) holder).moreButton.setVisibility(View.VISIBLE);
|
((DataViewHolder) holder).moreButton.setVisibility(View.VISIBLE);
|
||||||
((DataViewHolder) holder).moreButton.setOnClickListener(view -> {
|
((DataViewHolder) holder).moreButton.setOnClickListener(view -> {
|
||||||
ModifyCommentBottomSheetFragment modifyCommentBottomSheetFragment = new ModifyCommentBottomSheetFragment();
|
ModifyCommentBottomSheetFragment modifyCommentBottomSheetFragment = new ModifyCommentBottomSheetFragment();
|
||||||
@ -201,7 +194,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
|
|||||||
((DataViewHolder) holder).replyButton.setVisibility(View.GONE);
|
((DataViewHolder) holder).replyButton.setVisibility(View.GONE);
|
||||||
|
|
||||||
((DataViewHolder) holder).upvoteButton.setOnClickListener(view -> {
|
((DataViewHolder) holder).upvoteButton.setOnClickListener(view -> {
|
||||||
if(mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
Toast.makeText(mContext, R.string.login_first, Toast.LENGTH_SHORT).show();
|
Toast.makeText(mContext, R.string.login_first, Toast.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -211,7 +204,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
|
|||||||
|
|
||||||
((DataViewHolder) holder).downvoteButton.clearColorFilter();
|
((DataViewHolder) holder).downvoteButton.clearColorFilter();
|
||||||
|
|
||||||
if(previousVoteType != CommentData.VOTE_TYPE_UPVOTE) {
|
if (previousVoteType != CommentData.VOTE_TYPE_UPVOTE) {
|
||||||
//Not upvoted before
|
//Not upvoted before
|
||||||
comment.setVoteType(CommentData.VOTE_TYPE_UPVOTE);
|
comment.setVoteType(CommentData.VOTE_TYPE_UPVOTE);
|
||||||
newVoteType = RedditUtils.DIR_UPVOTE;
|
newVoteType = RedditUtils.DIR_UPVOTE;
|
||||||
@ -231,7 +224,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
|
|||||||
VoteThing.voteThing(mOauthRetrofit, mAccessToken, new VoteThing.VoteThingListener() {
|
VoteThing.voteThing(mOauthRetrofit, mAccessToken, new VoteThing.VoteThingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onVoteThingSuccess(int position) {
|
public void onVoteThingSuccess(int position) {
|
||||||
if(newVoteType.equals(RedditUtils.DIR_UPVOTE)) {
|
if (newVoteType.equals(RedditUtils.DIR_UPVOTE)) {
|
||||||
comment.setVoteType(CommentData.VOTE_TYPE_UPVOTE);
|
comment.setVoteType(CommentData.VOTE_TYPE_UPVOTE);
|
||||||
((DataViewHolder) holder).upvoteButton.setColorFilter(ContextCompat.getColor(mContext, R.color.upvoted), android.graphics.PorterDuff.Mode.SRC_IN);
|
((DataViewHolder) holder).upvoteButton.setColorFilter(ContextCompat.getColor(mContext, R.color.upvoted), android.graphics.PorterDuff.Mode.SRC_IN);
|
||||||
((DataViewHolder) holder).scoreTextView.setTextColor(ContextCompat.getColor(mContext, R.color.upvoted));
|
((DataViewHolder) holder).scoreTextView.setTextColor(ContextCompat.getColor(mContext, R.color.upvoted));
|
||||||
@ -246,12 +239,13 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onVoteThingFail(int position) { }
|
public void onVoteThingFail(int position) {
|
||||||
|
}
|
||||||
}, comment.getFullName(), newVoteType, holder.getAdapterPosition());
|
}, comment.getFullName(), newVoteType, holder.getAdapterPosition());
|
||||||
});
|
});
|
||||||
|
|
||||||
((DataViewHolder) holder).downvoteButton.setOnClickListener(view -> {
|
((DataViewHolder) holder).downvoteButton.setOnClickListener(view -> {
|
||||||
if(mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
Toast.makeText(mContext, R.string.login_first, Toast.LENGTH_SHORT).show();
|
Toast.makeText(mContext, R.string.login_first, Toast.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -261,7 +255,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
|
|||||||
|
|
||||||
((DataViewHolder) holder).upvoteButton.clearColorFilter();
|
((DataViewHolder) holder).upvoteButton.clearColorFilter();
|
||||||
|
|
||||||
if(previousVoteType != CommentData.VOTE_TYPE_DOWNVOTE) {
|
if (previousVoteType != CommentData.VOTE_TYPE_DOWNVOTE) {
|
||||||
//Not downvoted before
|
//Not downvoted before
|
||||||
comment.setVoteType(CommentData.VOTE_TYPE_DOWNVOTE);
|
comment.setVoteType(CommentData.VOTE_TYPE_DOWNVOTE);
|
||||||
newVoteType = RedditUtils.DIR_DOWNVOTE;
|
newVoteType = RedditUtils.DIR_DOWNVOTE;
|
||||||
@ -280,7 +274,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
|
|||||||
VoteThing.voteThing(mOauthRetrofit, mAccessToken, new VoteThing.VoteThingListener() {
|
VoteThing.voteThing(mOauthRetrofit, mAccessToken, new VoteThing.VoteThingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onVoteThingSuccess(int position1) {
|
public void onVoteThingSuccess(int position1) {
|
||||||
if(newVoteType.equals(RedditUtils.DIR_DOWNVOTE)) {
|
if (newVoteType.equals(RedditUtils.DIR_DOWNVOTE)) {
|
||||||
comment.setVoteType(CommentData.VOTE_TYPE_DOWNVOTE);
|
comment.setVoteType(CommentData.VOTE_TYPE_DOWNVOTE);
|
||||||
((DataViewHolder) holder).downvoteButton.setColorFilter(ContextCompat.getColor(mContext, R.color.downvoted), android.graphics.PorterDuff.Mode.SRC_IN);
|
((DataViewHolder) holder).downvoteButton.setColorFilter(ContextCompat.getColor(mContext, R.color.downvoted), android.graphics.PorterDuff.Mode.SRC_IN);
|
||||||
((DataViewHolder) holder).scoreTextView.setTextColor(ContextCompat.getColor(mContext, R.color.downvoted));
|
((DataViewHolder) holder).scoreTextView.setTextColor(ContextCompat.getColor(mContext, R.color.downvoted));
|
||||||
@ -295,11 +289,12 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onVoteThingFail(int position1) { }
|
public void onVoteThingFail(int position1) {
|
||||||
|
}
|
||||||
}, comment.getFullName(), newVoteType, holder.getAdapterPosition());
|
}, comment.getFullName(), newVoteType, holder.getAdapterPosition());
|
||||||
});
|
});
|
||||||
|
|
||||||
if(comment.isSaved()) {
|
if (comment.isSaved()) {
|
||||||
((DataViewHolder) holder).saveButton.setImageResource(R.drawable.ic_bookmark_20dp);
|
((DataViewHolder) holder).saveButton.setImageResource(R.drawable.ic_bookmark_20dp);
|
||||||
} else {
|
} else {
|
||||||
((DataViewHolder) holder).saveButton.setImageResource(R.drawable.ic_bookmark_border_20dp);
|
((DataViewHolder) holder).saveButton.setImageResource(R.drawable.ic_bookmark_border_20dp);
|
||||||
@ -362,7 +357,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
|
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
|
||||||
if(holder instanceof DataViewHolder) {
|
if (holder instanceof DataViewHolder) {
|
||||||
((DataViewHolder) holder).upvoteButton.clearColorFilter();
|
((DataViewHolder) holder).upvoteButton.clearColorFilter();
|
||||||
((DataViewHolder) holder).downvoteButton.clearColorFilter();
|
((DataViewHolder) holder).downvoteButton.clearColorFilter();
|
||||||
((DataViewHolder) holder).scoreTextView.setTextColor(ContextCompat.getColor(mContext, R.color.defaultTextColor));
|
((DataViewHolder) holder).scoreTextView.setTextColor(ContextCompat.getColor(mContext, R.color.defaultTextColor));
|
||||||
@ -371,7 +366,7 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getItemCount() {
|
public int getItemCount() {
|
||||||
if(hasExtraRow()) {
|
if (hasExtraRow()) {
|
||||||
return super.getItemCount() + 1;
|
return super.getItemCount() + 1;
|
||||||
}
|
}
|
||||||
return super.getItemCount();
|
return super.getItemCount();
|
||||||
@ -397,19 +392,35 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface RetryLoadingMoreCallback {
|
||||||
|
void retryLoadingMore();
|
||||||
|
}
|
||||||
|
|
||||||
class DataViewHolder extends RecyclerView.ViewHolder {
|
class DataViewHolder extends RecyclerView.ViewHolder {
|
||||||
@BindView(R.id.linear_layout_item_comment) LinearLayout linearLayout;
|
@BindView(R.id.linear_layout_item_comment)
|
||||||
@BindView(R.id.vertical_block_item_post_comment) View verticalBlock;
|
LinearLayout linearLayout;
|
||||||
@BindView(R.id.author_text_view_item_post_comment) TextView authorTextView;
|
@BindView(R.id.vertical_block_item_post_comment)
|
||||||
@BindView(R.id.comment_time_text_view_item_post_comment) TextView commentTimeTextView;
|
View verticalBlock;
|
||||||
@BindView(R.id.comment_markdown_view_item_post_comment) TextView commentMarkdownView;
|
@BindView(R.id.author_text_view_item_post_comment)
|
||||||
@BindView(R.id.up_vote_button_item_post_comment) ImageView upvoteButton;
|
TextView authorTextView;
|
||||||
@BindView(R.id.score_text_view_item_post_comment) TextView scoreTextView;
|
@BindView(R.id.comment_time_text_view_item_post_comment)
|
||||||
@BindView(R.id.down_vote_button_item_post_comment) ImageView downvoteButton;
|
TextView commentTimeTextView;
|
||||||
@BindView(R.id.more_button_item_post_comment) ImageView moreButton;
|
@BindView(R.id.comment_markdown_view_item_post_comment)
|
||||||
@BindView(R.id.save_button_item_post_comment) ImageView saveButton;
|
TextView commentMarkdownView;
|
||||||
@BindView(R.id.share_button_item_post_comment) ImageView shareButton;
|
@BindView(R.id.up_vote_button_item_post_comment)
|
||||||
@BindView(R.id.reply_button_item_post_comment) ImageView replyButton;
|
ImageView upvoteButton;
|
||||||
|
@BindView(R.id.score_text_view_item_post_comment)
|
||||||
|
TextView scoreTextView;
|
||||||
|
@BindView(R.id.down_vote_button_item_post_comment)
|
||||||
|
ImageView downvoteButton;
|
||||||
|
@BindView(R.id.more_button_item_post_comment)
|
||||||
|
ImageView moreButton;
|
||||||
|
@BindView(R.id.save_button_item_post_comment)
|
||||||
|
ImageView saveButton;
|
||||||
|
@BindView(R.id.share_button_item_post_comment)
|
||||||
|
ImageView shareButton;
|
||||||
|
@BindView(R.id.reply_button_item_post_comment)
|
||||||
|
ImageView replyButton;
|
||||||
|
|
||||||
DataViewHolder(View itemView) {
|
DataViewHolder(View itemView) {
|
||||||
super(itemView);
|
super(itemView);
|
||||||
@ -418,8 +429,10 @@ public class CommentsListingRecyclerViewAdapter extends PagedListAdapter<Comment
|
|||||||
}
|
}
|
||||||
|
|
||||||
class ErrorViewHolder extends RecyclerView.ViewHolder {
|
class ErrorViewHolder extends RecyclerView.ViewHolder {
|
||||||
@BindView(R.id.error_text_view_item_footer_error) TextView errorTextView;
|
@BindView(R.id.error_text_view_item_footer_error)
|
||||||
@BindView(R.id.retry_button_item_footer_error) Button retryButton;
|
TextView errorTextView;
|
||||||
|
@BindView(R.id.retry_button_item_footer_error)
|
||||||
|
Button retryButton;
|
||||||
|
|
||||||
ErrorViewHolder(View itemView) {
|
ErrorViewHolder(View itemView) {
|
||||||
super(itemView);
|
super(itemView);
|
||||||
|
@ -23,14 +23,9 @@ import ml.docilealligator.infinityforreddit.Flair;
|
|||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
|
|
||||||
public class FlairBottomSheetRecyclerViewAdapter extends RecyclerView.Adapter<FlairBottomSheetRecyclerViewAdapter.FlairViewHolder> {
|
public class FlairBottomSheetRecyclerViewAdapter extends RecyclerView.Adapter<FlairBottomSheetRecyclerViewAdapter.FlairViewHolder> {
|
||||||
public interface ItemClickListener {
|
|
||||||
void onClick(Flair flair);
|
|
||||||
}
|
|
||||||
|
|
||||||
private Context context;
|
private Context context;
|
||||||
private ArrayList<Flair> flairs;
|
private ArrayList<Flair> flairs;
|
||||||
private ItemClickListener itemClickListener;
|
private ItemClickListener itemClickListener;
|
||||||
|
|
||||||
public FlairBottomSheetRecyclerViewAdapter(Context context, ItemClickListener itemClickListener) {
|
public FlairBottomSheetRecyclerViewAdapter(Context context, ItemClickListener itemClickListener) {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
this.itemClickListener = itemClickListener;
|
this.itemClickListener = itemClickListener;
|
||||||
@ -44,14 +39,14 @@ public class FlairBottomSheetRecyclerViewAdapter extends RecyclerView.Adapter<Fl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(@NonNull FlairViewHolder holder, int position) {
|
public void onBindViewHolder(@NonNull FlairViewHolder holder, int position) {
|
||||||
if(flairs.get(holder.getAdapterPosition()).isEditable()) {
|
if (flairs.get(holder.getAdapterPosition()).isEditable()) {
|
||||||
holder.editFlairImageView.setVisibility(View.VISIBLE);
|
holder.editFlairImageView.setVisibility(View.VISIBLE);
|
||||||
holder.editFlairImageView.setOnClickListener(view -> {
|
holder.editFlairImageView.setOnClickListener(view -> {
|
||||||
View dialogView = ((Activity) context).getLayoutInflater().inflate(R.layout.dialog_edit_flair, null);
|
View dialogView = ((Activity) context).getLayoutInflater().inflate(R.layout.dialog_edit_flair, null);
|
||||||
EditText flairEditText = dialogView.findViewById(R.id.flair_edit_text_edit_flair_dialog);
|
EditText flairEditText = dialogView.findViewById(R.id.flair_edit_text_edit_flair_dialog);
|
||||||
flairEditText.requestFocus();
|
flairEditText.requestFocus();
|
||||||
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
|
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
if(imm != null) {
|
if (imm != null) {
|
||||||
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
|
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
|
||||||
}
|
}
|
||||||
new MaterialAlertDialogBuilder(context, R.style.MaterialAlertDialogTheme)
|
new MaterialAlertDialogBuilder(context, R.style.MaterialAlertDialogTheme)
|
||||||
@ -68,7 +63,7 @@ public class FlairBottomSheetRecyclerViewAdapter extends RecyclerView.Adapter<Fl
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if(flairs.get(holder.getAdapterPosition()).isEditable() && flairs.get(holder.getAdapterPosition()).getText().equals("")) {
|
if (flairs.get(holder.getAdapterPosition()).isEditable() && flairs.get(holder.getAdapterPosition()).getText().equals("")) {
|
||||||
holder.itemView.setOnClickListener(view -> holder.editFlairImageView.performClick());
|
holder.itemView.setOnClickListener(view -> holder.editFlairImageView.performClick());
|
||||||
} else {
|
} else {
|
||||||
holder.itemView.setOnClickListener(view -> itemClickListener.onClick(flairs.get(holder.getAdapterPosition())));
|
holder.itemView.setOnClickListener(view -> itemClickListener.onClick(flairs.get(holder.getAdapterPosition())));
|
||||||
@ -93,10 +88,16 @@ public class FlairBottomSheetRecyclerViewAdapter extends RecyclerView.Adapter<Fl
|
|||||||
notifyDataSetChanged();
|
notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface ItemClickListener {
|
||||||
|
void onClick(Flair flair);
|
||||||
|
}
|
||||||
|
|
||||||
class FlairViewHolder extends RecyclerView.ViewHolder {
|
class FlairViewHolder extends RecyclerView.ViewHolder {
|
||||||
View itemView;
|
View itemView;
|
||||||
@BindView(R.id.flair_text_view_item_flair) TextView flairTextView;
|
@BindView(R.id.flair_text_view_item_flair)
|
||||||
@BindView(R.id.edit_flair_image_view_item_flair) ImageView editFlairImageView;
|
TextView flairTextView;
|
||||||
|
@BindView(R.id.edit_flair_image_view_item_flair)
|
||||||
|
ImageView editFlairImageView;
|
||||||
|
|
||||||
FlairViewHolder(@NonNull View itemView) {
|
FlairViewHolder(@NonNull View itemView) {
|
||||||
super(itemView);
|
super(itemView);
|
||||||
|
@ -16,10 +16,10 @@ import com.bumptech.glide.request.RequestOptions;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
|
||||||
import ml.docilealligator.infinityforreddit.Activity.ViewUserDetailActivity;
|
import ml.docilealligator.infinityforreddit.Activity.ViewUserDetailActivity;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.SubscribedUserDatabase.SubscribedUserData;
|
import ml.docilealligator.infinityforreddit.SubscribedUserDatabase.SubscribedUserData;
|
||||||
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
|
|
||||||
import pl.droidsonroids.gif.GifImageView;
|
import pl.droidsonroids.gif.GifImageView;
|
||||||
|
|
||||||
public class FollowedUsersRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
public class FollowedUsersRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||||
@ -45,7 +45,7 @@ public class FollowedUsersRecyclerViewAdapter extends RecyclerView.Adapter<Recyc
|
|||||||
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, mSubscribedUserData.get(viewHolder.getAdapterPosition()).getName());
|
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, mSubscribedUserData.get(viewHolder.getAdapterPosition()).getName());
|
||||||
mContext.startActivity(intent);
|
mContext.startActivity(intent);
|
||||||
});
|
});
|
||||||
if(!mSubscribedUserData.get(i).getIconUrl().equals("")) {
|
if (!mSubscribedUserData.get(i).getIconUrl().equals("")) {
|
||||||
glide.load(mSubscribedUserData.get(i).getIconUrl())
|
glide.load(mSubscribedUserData.get(i).getIconUrl())
|
||||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
||||||
.error(glide.load(R.drawable.subreddit_default_icon)
|
.error(glide.load(R.drawable.subreddit_default_icon)
|
||||||
@ -61,7 +61,7 @@ public class FollowedUsersRecyclerViewAdapter extends RecyclerView.Adapter<Recyc
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getItemCount() {
|
public int getItemCount() {
|
||||||
if(mSubscribedUserData != null) {
|
if (mSubscribedUserData != null) {
|
||||||
return mSubscribedUserData.size();
|
return mSubscribedUserData.size();
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -72,7 +72,7 @@ public class FollowedUsersRecyclerViewAdapter extends RecyclerView.Adapter<Recyc
|
|||||||
glide.clear(((UserViewHolder) holder).iconGifImageView);
|
glide.clear(((UserViewHolder) holder).iconGifImageView);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSubscribedUsers(List<SubscribedUserData> subscribedUsers){
|
public void setSubscribedUsers(List<SubscribedUserData> subscribedUsers) {
|
||||||
mSubscribedUserData = subscribedUsers;
|
mSubscribedUserData = subscribedUsers;
|
||||||
notifyDataSetChanged();
|
notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
@ -35,20 +35,25 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
|
|||||||
private static final int VIEW_TYPE_DATA = 0;
|
private static final int VIEW_TYPE_DATA = 0;
|
||||||
private static final int VIEW_TYPE_ERROR = 1;
|
private static final int VIEW_TYPE_ERROR = 1;
|
||||||
private static final int VIEW_TYPE_LOADING = 2;
|
private static final int VIEW_TYPE_LOADING = 2;
|
||||||
|
private static final DiffUtil.ItemCallback<Message> DIFF_CALLBACK = new DiffUtil.ItemCallback<Message>() {
|
||||||
|
@Override
|
||||||
|
public boolean areItemsTheSame(@NonNull Message message, @NonNull Message t1) {
|
||||||
|
return message.getId().equals(t1.getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean areContentsTheSame(@NonNull Message message, @NonNull Message t1) {
|
||||||
|
return message.getBody().equals(t1.getBody());
|
||||||
|
}
|
||||||
|
};
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private Retrofit mOauthRetrofit;
|
private Retrofit mOauthRetrofit;
|
||||||
private Markwon mMarkwon;
|
private Markwon mMarkwon;
|
||||||
private String mAccessToken;
|
private String mAccessToken;
|
||||||
private Resources mResources;
|
private Resources mResources;
|
||||||
|
|
||||||
private NetworkState networkState;
|
private NetworkState networkState;
|
||||||
private RetryLoadingMoreCallback mRetryLoadingMoreCallback;
|
private RetryLoadingMoreCallback mRetryLoadingMoreCallback;
|
||||||
|
|
||||||
public interface RetryLoadingMoreCallback {
|
|
||||||
void retryLoadingMore();
|
|
||||||
}
|
|
||||||
|
|
||||||
public MessageRecyclerViewAdapter(Context context, Retrofit oauthRetrofit, String accessToken,
|
public MessageRecyclerViewAdapter(Context context, Retrofit oauthRetrofit, String accessToken,
|
||||||
RetryLoadingMoreCallback retryLoadingMoreCallback) {
|
RetryLoadingMoreCallback retryLoadingMoreCallback) {
|
||||||
super(DIFF_CALLBACK);
|
super(DIFF_CALLBACK);
|
||||||
@ -62,7 +67,7 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
|
|||||||
builder.linkResolver((view, link) -> {
|
builder.linkResolver((view, link) -> {
|
||||||
Intent intent = new Intent(mContext, LinkResolverActivity.class);
|
Intent intent = new Intent(mContext, LinkResolverActivity.class);
|
||||||
Uri uri = Uri.parse(link);
|
Uri uri = Uri.parse(link);
|
||||||
if(uri.getScheme() == null && uri.getHost() == null) {
|
if (uri.getScheme() == null && uri.getHost() == null) {
|
||||||
intent.setData(LinkResolverActivity.getRedditUriByPath(link));
|
intent.setData(LinkResolverActivity.getRedditUriByPath(link));
|
||||||
} else {
|
} else {
|
||||||
intent.setData(uri);
|
intent.setData(uri);
|
||||||
@ -78,24 +83,12 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
|
|||||||
mResources = context.getResources();
|
mResources = context.getResources();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final DiffUtil.ItemCallback<Message> DIFF_CALLBACK = new DiffUtil.ItemCallback<Message>() {
|
|
||||||
@Override
|
|
||||||
public boolean areItemsTheSame(@NonNull Message message, @NonNull Message t1) {
|
|
||||||
return message.getId().equals(t1.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean areContentsTheSame(@NonNull Message message, @NonNull Message t1) {
|
|
||||||
return message.getBody().equals(t1.getBody());
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||||
if(viewType == VIEW_TYPE_DATA) {
|
if (viewType == VIEW_TYPE_DATA) {
|
||||||
return new DataViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_message, parent, false));
|
return new DataViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_message, parent, false));
|
||||||
} else if(viewType == VIEW_TYPE_ERROR) {
|
} else if (viewType == VIEW_TYPE_ERROR) {
|
||||||
return new ErrorViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_footer_error, parent, false));
|
return new ErrorViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_footer_error, parent, false));
|
||||||
} else {
|
} else {
|
||||||
return new LoadingViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_footer_loading, parent, false));
|
return new LoadingViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_footer_loading, parent, false));
|
||||||
@ -104,15 +97,15 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
||||||
if(holder instanceof DataViewHolder) {
|
if (holder instanceof DataViewHolder) {
|
||||||
Message message = getItem(holder.getAdapterPosition());
|
Message message = getItem(holder.getAdapterPosition());
|
||||||
if(message != null) {
|
if (message != null) {
|
||||||
if(message.isNew()) {
|
if (message.isNew()) {
|
||||||
((DataViewHolder) holder).itemView.setBackgroundColor(
|
((DataViewHolder) holder).itemView.setBackgroundColor(
|
||||||
mResources.getColor(R.color.unreadMessageBackgroundColor));
|
mResources.getColor(R.color.unreadMessageBackgroundColor));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(message.wasComment()) {
|
if (message.wasComment()) {
|
||||||
((DataViewHolder) holder).authorTextView.setTextColor(mResources.getColor(R.color.colorPrimaryDarkDayNightTheme));
|
((DataViewHolder) holder).authorTextView.setTextColor(mResources.getColor(R.color.colorPrimaryDarkDayNightTheme));
|
||||||
((DataViewHolder) holder).titleTextView.setText(message.getTitle());
|
((DataViewHolder) holder).titleTextView.setText(message.getTitle());
|
||||||
} else {
|
} else {
|
||||||
@ -125,21 +118,22 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
|
|||||||
mMarkwon.setMarkdown(((DataViewHolder) holder).contentCustomMarkwonView, message.getBody());
|
mMarkwon.setMarkdown(((DataViewHolder) holder).contentCustomMarkwonView, message.getBody());
|
||||||
|
|
||||||
((DataViewHolder) holder).itemView.setOnClickListener(view -> {
|
((DataViewHolder) holder).itemView.setOnClickListener(view -> {
|
||||||
if(message.getContext() != null && !message.getContext().equals("")) {
|
if (message.getContext() != null && !message.getContext().equals("")) {
|
||||||
Uri uri = LinkResolverActivity.getRedditUriByPath(message.getContext());
|
Uri uri = LinkResolverActivity.getRedditUriByPath(message.getContext());
|
||||||
Intent intent = new Intent(mContext, LinkResolverActivity.class);
|
Intent intent = new Intent(mContext, LinkResolverActivity.class);
|
||||||
intent.setData(uri);
|
intent.setData(uri);
|
||||||
mContext.startActivity(intent);
|
mContext.startActivity(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(message.isNew()) {
|
if (message.isNew()) {
|
||||||
((DataViewHolder) holder).itemView.setBackgroundColor(mResources.getColor(R.color.backgroundColor));
|
((DataViewHolder) holder).itemView.setBackgroundColor(mResources.getColor(R.color.backgroundColor));
|
||||||
message.setNew(false);
|
message.setNew(false);
|
||||||
|
|
||||||
ReadMessage.readMessage(mOauthRetrofit, mAccessToken, message.getFullname(),
|
ReadMessage.readMessage(mOauthRetrofit, mAccessToken, message.getFullname(),
|
||||||
new ReadMessage.ReadMessageListener() {
|
new ReadMessage.ReadMessageListener() {
|
||||||
@Override
|
@Override
|
||||||
public void readSuccess() {}
|
public void readSuccess() {
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void readFailed() {
|
public void readFailed() {
|
||||||
@ -151,7 +145,7 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
|
|||||||
});
|
});
|
||||||
|
|
||||||
((DataViewHolder) holder).authorTextView.setOnClickListener(view -> {
|
((DataViewHolder) holder).authorTextView.setOnClickListener(view -> {
|
||||||
if(message.wasComment()) {
|
if (message.wasComment()) {
|
||||||
Intent intent = new Intent(mContext, ViewUserDetailActivity.class);
|
Intent intent = new Intent(mContext, ViewUserDetailActivity.class);
|
||||||
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, message.getAuthor());
|
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, message.getAuthor());
|
||||||
mContext.startActivity(intent);
|
mContext.startActivity(intent);
|
||||||
@ -179,7 +173,7 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getItemCount() {
|
public int getItemCount() {
|
||||||
if(hasExtraRow()) {
|
if (hasExtraRow()) {
|
||||||
return super.getItemCount() + 1;
|
return super.getItemCount() + 1;
|
||||||
}
|
}
|
||||||
return super.getItemCount();
|
return super.getItemCount();
|
||||||
@ -188,7 +182,7 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
|
|||||||
@Override
|
@Override
|
||||||
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
|
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
|
||||||
super.onViewRecycled(holder);
|
super.onViewRecycled(holder);
|
||||||
if(holder instanceof DataViewHolder) {
|
if (holder instanceof DataViewHolder) {
|
||||||
((DataViewHolder) holder).itemView.setBackgroundColor(mResources.getColor(R.color.backgroundColor));
|
((DataViewHolder) holder).itemView.setBackgroundColor(mResources.getColor(R.color.backgroundColor));
|
||||||
((DataViewHolder) holder).titleTextView.setVisibility(View.VISIBLE);
|
((DataViewHolder) holder).titleTextView.setVisibility(View.VISIBLE);
|
||||||
((DataViewHolder) holder).authorTextView.setTextColor(mResources.getColor(R.color.primaryTextColor));
|
((DataViewHolder) holder).authorTextView.setTextColor(mResources.getColor(R.color.primaryTextColor));
|
||||||
@ -215,12 +209,20 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface RetryLoadingMoreCallback {
|
||||||
|
void retryLoadingMore();
|
||||||
|
}
|
||||||
|
|
||||||
class DataViewHolder extends RecyclerView.ViewHolder {
|
class DataViewHolder extends RecyclerView.ViewHolder {
|
||||||
View itemView;
|
View itemView;
|
||||||
@BindView(R.id.author_text_view_item_message) TextView authorTextView;
|
@BindView(R.id.author_text_view_item_message)
|
||||||
@BindView(R.id.subject_text_view_item_message) TextView subjectTextView;
|
TextView authorTextView;
|
||||||
@BindView(R.id.title_text_view_item_message) TextView titleTextView;
|
@BindView(R.id.subject_text_view_item_message)
|
||||||
@BindView(R.id.content_custom_markwon_view_item_message) TextView contentCustomMarkwonView;
|
TextView subjectTextView;
|
||||||
|
@BindView(R.id.title_text_view_item_message)
|
||||||
|
TextView titleTextView;
|
||||||
|
@BindView(R.id.content_custom_markwon_view_item_message)
|
||||||
|
TextView contentCustomMarkwonView;
|
||||||
|
|
||||||
DataViewHolder(View itemView) {
|
DataViewHolder(View itemView) {
|
||||||
super(itemView);
|
super(itemView);
|
||||||
@ -230,8 +232,10 @@ public class MessageRecyclerViewAdapter extends PagedListAdapter<Message, Recycl
|
|||||||
}
|
}
|
||||||
|
|
||||||
class ErrorViewHolder extends RecyclerView.ViewHolder {
|
class ErrorViewHolder extends RecyclerView.ViewHolder {
|
||||||
@BindView(R.id.error_text_view_item_footer_error) TextView errorTextView;
|
@BindView(R.id.error_text_view_item_footer_error)
|
||||||
@BindView(R.id.retry_button_item_footer_error) Button retryButton;
|
TextView errorTextView;
|
||||||
|
@BindView(R.id.retry_button_item_footer_error)
|
||||||
|
Button retryButton;
|
||||||
|
|
||||||
ErrorViewHolder(View itemView) {
|
ErrorViewHolder(View itemView) {
|
||||||
super(itemView);
|
super(itemView);
|
||||||
|
@ -70,6 +70,22 @@ import retrofit2.Retrofit;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHolder> {
|
public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHolder> {
|
||||||
|
private static final int VIEW_TYPE_DATA = 0;
|
||||||
|
private static final int VIEW_TYPE_ERROR = 1;
|
||||||
|
private static final int VIEW_TYPE_LOADING = 2;
|
||||||
|
private static final DiffUtil.ItemCallback<Post> DIFF_CALLBACK = new DiffUtil.ItemCallback<Post>() {
|
||||||
|
@Override
|
||||||
|
public boolean areItemsTheSame(@NonNull Post post, @NonNull Post t1) {
|
||||||
|
return post.getId().equals(t1.getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean areContentsTheSame(@NonNull Post post, @NonNull Post t1) {
|
||||||
|
return post.getTitle().equals(t1.getTitle()) && !(post.getSelfText() != null && t1.getSelfText() != null
|
||||||
|
&& !post.getSelfText().equals(t1.getSelfText()))
|
||||||
|
&& post.getScore() == t1.getScore() && post.getVoteType() == t1.getVoteType();
|
||||||
|
}
|
||||||
|
};
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private Retrofit mOauthRetrofit;
|
private Retrofit mOauthRetrofit;
|
||||||
private Retrofit mRetrofit;
|
private Retrofit mRetrofit;
|
||||||
@ -82,25 +98,15 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
private boolean mDisplaySubredditName;
|
private boolean mDisplaySubredditName;
|
||||||
private boolean mNeedBlurNSFW;
|
private boolean mNeedBlurNSFW;
|
||||||
private boolean mNeedBlurSpoiler;
|
private boolean mNeedBlurSpoiler;
|
||||||
|
|
||||||
private static final int VIEW_TYPE_DATA = 0;
|
|
||||||
private static final int VIEW_TYPE_ERROR = 1;
|
|
||||||
private static final int VIEW_TYPE_LOADING = 2;
|
|
||||||
|
|
||||||
private NetworkState networkState;
|
private NetworkState networkState;
|
||||||
private Callback mCallback;
|
private Callback mCallback;
|
||||||
|
|
||||||
public interface Callback {
|
|
||||||
void retryLoadingMore();
|
|
||||||
void typeChipClicked(int filter);
|
|
||||||
}
|
|
||||||
|
|
||||||
public PostRecyclerViewAdapter(Context context, Retrofit oauthRetrofit, Retrofit retrofit,
|
public PostRecyclerViewAdapter(Context context, Retrofit oauthRetrofit, Retrofit retrofit,
|
||||||
RedditDataRoomDatabase redditDataRoomDatabase, String accessToken,
|
RedditDataRoomDatabase redditDataRoomDatabase, String accessToken,
|
||||||
int postType, boolean displaySubredditName, boolean needBlurNSFW,
|
int postType, boolean displaySubredditName, boolean needBlurNSFW,
|
||||||
boolean needBlurSpoiler, Callback callback) {
|
boolean needBlurSpoiler, Callback callback) {
|
||||||
super(DIFF_CALLBACK);
|
super(DIFF_CALLBACK);
|
||||||
if(context != null) {
|
if (context != null) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mOauthRetrofit = oauthRetrofit;
|
mOauthRetrofit = oauthRetrofit;
|
||||||
mRetrofit = retrofit;
|
mRetrofit = retrofit;
|
||||||
@ -116,20 +122,6 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final DiffUtil.ItemCallback<Post> DIFF_CALLBACK = new DiffUtil.ItemCallback<Post>() {
|
|
||||||
@Override
|
|
||||||
public boolean areItemsTheSame(@NonNull Post post, @NonNull Post t1) {
|
|
||||||
return post.getId().equals(t1.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean areContentsTheSame(@NonNull Post post, @NonNull Post t1) {
|
|
||||||
return post.getTitle().equals(t1.getTitle()) && !(post.getSelfText() != null && t1.getSelfText() != null
|
|
||||||
&& !post.getSelfText().equals(t1.getSelfText()))
|
|
||||||
&& post.getScore() == t1.getScore() && post.getVoteType() == t1.getVoteType();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public void setCanStartActivity(boolean canStartActivity) {
|
public void setCanStartActivity(boolean canStartActivity) {
|
||||||
this.canStartActivity = canStartActivity;
|
this.canStartActivity = canStartActivity;
|
||||||
}
|
}
|
||||||
@ -137,10 +129,10 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||||
if(viewType == VIEW_TYPE_DATA) {
|
if (viewType == VIEW_TYPE_DATA) {
|
||||||
CardView cardView = (CardView) LayoutInflater.from(parent.getContext()).inflate(R.layout.item_post, parent, false);
|
CardView cardView = (CardView) LayoutInflater.from(parent.getContext()).inflate(R.layout.item_post, parent, false);
|
||||||
return new DataViewHolder(cardView);
|
return new DataViewHolder(cardView);
|
||||||
} else if(viewType == VIEW_TYPE_ERROR) {
|
} else if (viewType == VIEW_TYPE_ERROR) {
|
||||||
RelativeLayout relativeLayout = (RelativeLayout) LayoutInflater.from(parent.getContext()).inflate(R.layout.item_footer_error, parent, false);
|
RelativeLayout relativeLayout = (RelativeLayout) LayoutInflater.from(parent.getContext()).inflate(R.layout.item_footer_error, parent, false);
|
||||||
return new ErrorViewHolder(relativeLayout);
|
return new ErrorViewHolder(relativeLayout);
|
||||||
} else {
|
} else {
|
||||||
@ -151,9 +143,9 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, int position) {
|
public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, int position) {
|
||||||
if(holder instanceof DataViewHolder) {
|
if (holder instanceof DataViewHolder) {
|
||||||
Post post = getItem(position);
|
Post post = getItem(position);
|
||||||
if(post != null) {
|
if (post != null) {
|
||||||
final String id = post.getFullName();
|
final String id = post.getFullName();
|
||||||
final String subredditNamePrefixed = post.getSubredditNamePrefixed();
|
final String subredditNamePrefixed = post.getSubredditNamePrefixed();
|
||||||
String subredditName = subredditNamePrefixed.substring(2);
|
String subredditName = subredditNamePrefixed.substring(2);
|
||||||
@ -169,7 +161,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
boolean isArchived = post.isArchived();
|
boolean isArchived = post.isArchived();
|
||||||
|
|
||||||
((DataViewHolder) holder).cardView.setOnClickListener(view -> {
|
((DataViewHolder) holder).cardView.setOnClickListener(view -> {
|
||||||
if(canStartActivity) {
|
if (canStartActivity) {
|
||||||
canStartActivity = false;
|
canStartActivity = false;
|
||||||
|
|
||||||
Intent intent = new Intent(mContext, ViewPostDetailActivity.class);
|
Intent intent = new Intent(mContext, ViewPostDetailActivity.class);
|
||||||
@ -179,12 +171,12 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if(mDisplaySubredditName) {
|
if (mDisplaySubredditName) {
|
||||||
if(authorPrefixed.equals(subredditNamePrefixed)) {
|
if (authorPrefixed.equals(subredditNamePrefixed)) {
|
||||||
if(post.getAuthorIconUrl() == null) {
|
if (post.getAuthorIconUrl() == null) {
|
||||||
new LoadUserDataAsyncTask(mUserDao, post.getAuthor(), mRetrofit, iconImageUrl -> {
|
new LoadUserDataAsyncTask(mUserDao, post.getAuthor(), mRetrofit, iconImageUrl -> {
|
||||||
if(mContext != null && getItemCount() > 0) {
|
if (mContext != null && getItemCount() > 0) {
|
||||||
if(iconImageUrl == null || iconImageUrl.equals("")) {
|
if (iconImageUrl == null || iconImageUrl.equals("")) {
|
||||||
mGlide.load(R.drawable.subreddit_default_icon)
|
mGlide.load(R.drawable.subreddit_default_icon)
|
||||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
||||||
.into(((DataViewHolder) holder).iconGifImageView);
|
.into(((DataViewHolder) holder).iconGifImageView);
|
||||||
@ -196,12 +188,12 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
.into(((DataViewHolder) holder).iconGifImageView);
|
.into(((DataViewHolder) holder).iconGifImageView);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(holder.getAdapterPosition() >= 0) {
|
if (holder.getAdapterPosition() >= 0) {
|
||||||
post.setAuthorIconUrl(iconImageUrl);
|
post.setAuthorIconUrl(iconImageUrl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).execute();
|
}).execute();
|
||||||
} else if(!post.getAuthorIconUrl().equals("")) {
|
} else if (!post.getAuthorIconUrl().equals("")) {
|
||||||
mGlide.load(post.getAuthorIconUrl())
|
mGlide.load(post.getAuthorIconUrl())
|
||||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
||||||
.error(mGlide.load(R.drawable.subreddit_default_icon)
|
.error(mGlide.load(R.drawable.subreddit_default_icon)
|
||||||
@ -213,11 +205,11 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
.into(((DataViewHolder) holder).iconGifImageView);
|
.into(((DataViewHolder) holder).iconGifImageView);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(post.getSubredditIconUrl() == null) {
|
if (post.getSubredditIconUrl() == null) {
|
||||||
new LoadSubredditIconAsyncTask(mRedditDataRoomDatabase, subredditName, mRetrofit,
|
new LoadSubredditIconAsyncTask(mRedditDataRoomDatabase, subredditName, mRetrofit,
|
||||||
iconImageUrl -> {
|
iconImageUrl -> {
|
||||||
if(mContext != null && getItemCount() > 0) {
|
if (mContext != null && getItemCount() > 0) {
|
||||||
if(iconImageUrl == null || iconImageUrl.equals("")) {
|
if (iconImageUrl == null || iconImageUrl.equals("")) {
|
||||||
mGlide.load(R.drawable.subreddit_default_icon)
|
mGlide.load(R.drawable.subreddit_default_icon)
|
||||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
||||||
.into(((DataViewHolder) holder).iconGifImageView);
|
.into(((DataViewHolder) holder).iconGifImageView);
|
||||||
@ -229,12 +221,12 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
.into(((DataViewHolder) holder).iconGifImageView);
|
.into(((DataViewHolder) holder).iconGifImageView);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(holder.getAdapterPosition() >= 0) {
|
if (holder.getAdapterPosition() >= 0) {
|
||||||
post.setSubredditIconUrl(iconImageUrl);
|
post.setSubredditIconUrl(iconImageUrl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).execute();
|
}).execute();
|
||||||
} else if(!post.getSubredditIconUrl().equals("")) {
|
} else if (!post.getSubredditIconUrl().equals("")) {
|
||||||
mGlide.load(post.getSubredditIconUrl())
|
mGlide.load(post.getSubredditIconUrl())
|
||||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
||||||
.error(mGlide.load(R.drawable.subreddit_default_icon)
|
.error(mGlide.load(R.drawable.subreddit_default_icon)
|
||||||
@ -251,9 +243,9 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
((DataViewHolder) holder).nameTextView.setText(subredditNamePrefixed);
|
((DataViewHolder) holder).nameTextView.setText(subredditNamePrefixed);
|
||||||
|
|
||||||
((DataViewHolder) holder).iconNameLinearLayout.setOnClickListener(view -> {
|
((DataViewHolder) holder).iconNameLinearLayout.setOnClickListener(view -> {
|
||||||
if(canStartActivity) {
|
if (canStartActivity) {
|
||||||
canStartActivity = false;
|
canStartActivity = false;
|
||||||
if(post.getSubredditNamePrefixed().startsWith("u/")) {
|
if (post.getSubredditNamePrefixed().startsWith("u/")) {
|
||||||
Intent intent = new Intent(mContext, ViewUserDetailActivity.class);
|
Intent intent = new Intent(mContext, ViewUserDetailActivity.class);
|
||||||
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY,
|
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY,
|
||||||
post.getSubredditNamePrefixed().substring(2));
|
post.getSubredditNamePrefixed().substring(2));
|
||||||
@ -267,11 +259,11 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
if(post.getAuthorIconUrl() == null) {
|
if (post.getAuthorIconUrl() == null) {
|
||||||
String authorName = post.getAuthor().equals("[deleted]") ? post.getSubredditNamePrefixed().substring(2) : post.getAuthor();
|
String authorName = post.getAuthor().equals("[deleted]") ? post.getSubredditNamePrefixed().substring(2) : post.getAuthor();
|
||||||
new LoadUserDataAsyncTask(mUserDao, authorName, mRetrofit, iconImageUrl -> {
|
new LoadUserDataAsyncTask(mUserDao, authorName, mRetrofit, iconImageUrl -> {
|
||||||
if(mContext != null && getItemCount() > 0) {
|
if (mContext != null && getItemCount() > 0) {
|
||||||
if(iconImageUrl == null || iconImageUrl.equals("")) {
|
if (iconImageUrl == null || iconImageUrl.equals("")) {
|
||||||
mGlide.load(R.drawable.subreddit_default_icon)
|
mGlide.load(R.drawable.subreddit_default_icon)
|
||||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
||||||
.into(((DataViewHolder) holder).iconGifImageView);
|
.into(((DataViewHolder) holder).iconGifImageView);
|
||||||
@ -283,12 +275,12 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
.into(((DataViewHolder) holder).iconGifImageView);
|
.into(((DataViewHolder) holder).iconGifImageView);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(holder.getAdapterPosition() >= 0) {
|
if (holder.getAdapterPosition() >= 0) {
|
||||||
post.setAuthorIconUrl(iconImageUrl);
|
post.setAuthorIconUrl(iconImageUrl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).execute();
|
}).execute();
|
||||||
} else if(!post.getAuthorIconUrl().equals("")) {
|
} else if (!post.getAuthorIconUrl().equals("")) {
|
||||||
mGlide.load(post.getAuthorIconUrl())
|
mGlide.load(post.getAuthorIconUrl())
|
||||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
||||||
.error(mGlide.load(R.drawable.subreddit_default_icon)
|
.error(mGlide.load(R.drawable.subreddit_default_icon)
|
||||||
@ -304,7 +296,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
((DataViewHolder) holder).nameTextView.setText(authorPrefixed);
|
((DataViewHolder) holder).nameTextView.setText(authorPrefixed);
|
||||||
|
|
||||||
((DataViewHolder) holder).iconNameLinearLayout.setOnClickListener(view -> {
|
((DataViewHolder) holder).iconNameLinearLayout.setOnClickListener(view -> {
|
||||||
if(canStartActivity) {
|
if (canStartActivity) {
|
||||||
canStartActivity = false;
|
canStartActivity = false;
|
||||||
Intent intent = new Intent(mContext, ViewUserDetailActivity.class);
|
Intent intent = new Intent(mContext, ViewUserDetailActivity.class);
|
||||||
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, post.getAuthor());
|
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, post.getAuthor());
|
||||||
@ -317,19 +309,19 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
((DataViewHolder) holder).titleTextView.setText(title);
|
((DataViewHolder) holder).titleTextView.setText(title);
|
||||||
((DataViewHolder) holder).scoreTextView.setText(Integer.toString(post.getScore() + post.getVoteType()));
|
((DataViewHolder) holder).scoreTextView.setText(Integer.toString(post.getScore() + post.getVoteType()));
|
||||||
|
|
||||||
if(gilded > 0) {
|
if (gilded > 0) {
|
||||||
((DataViewHolder) holder).gildedImageView.setVisibility(View.VISIBLE);
|
((DataViewHolder) holder).gildedImageView.setVisibility(View.VISIBLE);
|
||||||
((DataViewHolder) holder).gildedNumberTextView.setVisibility(View.VISIBLE);
|
((DataViewHolder) holder).gildedNumberTextView.setVisibility(View.VISIBLE);
|
||||||
String gildedNumber = mContext.getResources().getString(R.string.gilded_count, gilded);
|
String gildedNumber = mContext.getResources().getString(R.string.gilded_count, gilded);
|
||||||
((DataViewHolder) holder).gildedNumberTextView.setText(gildedNumber);
|
((DataViewHolder) holder).gildedNumberTextView.setText(gildedNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(post.isLocked()) {
|
if (post.isLocked()) {
|
||||||
((DataViewHolder) holder).lockedImageView.setVisibility(View.VISIBLE);
|
((DataViewHolder) holder).lockedImageView.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(nsfw) {
|
if (nsfw) {
|
||||||
if(!(mContext instanceof FilteredThingActivity)) {
|
if (!(mContext instanceof FilteredThingActivity)) {
|
||||||
((DataViewHolder) holder).nsfwTextView.setOnClickListener(view -> {
|
((DataViewHolder) holder).nsfwTextView.setOnClickListener(view -> {
|
||||||
Intent intent = new Intent(mContext, FilteredThingActivity.class);
|
Intent intent = new Intent(mContext, FilteredThingActivity.class);
|
||||||
intent.putExtra(FilteredThingActivity.EXTRA_NAME, post.getSubredditNamePrefixed().substring(2));
|
intent.putExtra(FilteredThingActivity.EXTRA_NAME, post.getSubredditNamePrefixed().substring(2));
|
||||||
@ -342,15 +334,15 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
((DataViewHolder) holder).nsfwTextView.setVisibility(View.VISIBLE);
|
((DataViewHolder) holder).nsfwTextView.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(spoiler || flair != null) {
|
if (spoiler || flair != null) {
|
||||||
((DataViewHolder) holder).spoilerFlairLinearLayout.setVisibility(View.VISIBLE);
|
((DataViewHolder) holder).spoilerFlairLinearLayout.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(spoiler) {
|
if (spoiler) {
|
||||||
((DataViewHolder) holder).spoilerTextView.setVisibility(View.VISIBLE);
|
((DataViewHolder) holder).spoilerTextView.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(flair != null) {
|
if (flair != null) {
|
||||||
((DataViewHolder) holder).flairTextView.setVisibility(View.VISIBLE);
|
((DataViewHolder) holder).flairTextView.setVisibility(View.VISIBLE);
|
||||||
((DataViewHolder) holder).flairTextView.setText(flair);
|
((DataViewHolder) holder).flairTextView.setText(flair);
|
||||||
}
|
}
|
||||||
@ -368,7 +360,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(post.getPostType() != Post.TEXT_TYPE && post.getPostType() != Post.NO_PREVIEW_LINK_TYPE) {
|
if (post.getPostType() != Post.TEXT_TYPE && post.getPostType() != Post.NO_PREVIEW_LINK_TYPE) {
|
||||||
((DataViewHolder) holder).relativeLayout.setVisibility(View.VISIBLE);
|
((DataViewHolder) holder).relativeLayout.setVisibility(View.VISIBLE);
|
||||||
((DataViewHolder) holder).progressBar.setVisibility(View.VISIBLE);
|
((DataViewHolder) holder).progressBar.setVisibility(View.VISIBLE);
|
||||||
((DataViewHolder) holder).imageView.setVisibility(View.VISIBLE);
|
((DataViewHolder) holder).imageView.setVisibility(View.VISIBLE);
|
||||||
@ -377,12 +369,12 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
loadImage(holder, post);
|
loadImage(holder, post);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mPostType == PostDataSource.TYPE_SUBREDDIT && !mDisplaySubredditName && post.isStickied()) {
|
if (mPostType == PostDataSource.TYPE_SUBREDDIT && !mDisplaySubredditName && post.isStickied()) {
|
||||||
((DataViewHolder) holder).stickiedPostImageView.setVisibility(View.VISIBLE);
|
((DataViewHolder) holder).stickiedPostImageView.setVisibility(View.VISIBLE);
|
||||||
mGlide.load(R.drawable.ic_thumbtack_24dp).into(((DataViewHolder) holder).stickiedPostImageView);
|
mGlide.load(R.drawable.ic_thumbtack_24dp).into(((DataViewHolder) holder).stickiedPostImageView);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(isArchived) {
|
if (isArchived) {
|
||||||
((DataViewHolder) holder).archivedImageView.setVisibility(View.VISIBLE);
|
((DataViewHolder) holder).archivedImageView.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
((DataViewHolder) holder).upvoteButton
|
((DataViewHolder) holder).upvoteButton
|
||||||
@ -391,11 +383,11 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
.setColorFilter(ContextCompat.getColor(mContext, R.color.voteAndReplyUnavailableVoteButtonColor), android.graphics.PorterDuff.Mode.SRC_IN);
|
.setColorFilter(ContextCompat.getColor(mContext, R.color.voteAndReplyUnavailableVoteButtonColor), android.graphics.PorterDuff.Mode.SRC_IN);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(post.isCrosspost()) {
|
if (post.isCrosspost()) {
|
||||||
((DataViewHolder) holder).crosspostImageView.setVisibility(View.VISIBLE);
|
((DataViewHolder) holder).crosspostImageView.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!(mContext instanceof FilteredThingActivity)) {
|
if (!(mContext instanceof FilteredThingActivity)) {
|
||||||
((DataViewHolder) holder).typeTextView.setOnClickListener(view -> mCallback.typeChipClicked(post.getPostType()));
|
((DataViewHolder) holder).typeTextView.setOnClickListener(view -> mCallback.typeChipClicked(post.getPostType()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -423,7 +415,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
((DataViewHolder) holder).imageView.setOnClickListener(view -> {
|
((DataViewHolder) holder).imageView.setOnClickListener(view -> {
|
||||||
Intent intent = new Intent(mContext, LinkResolverActivity.class);
|
Intent intent = new Intent(mContext, LinkResolverActivity.class);
|
||||||
Uri uri = Uri.parse(post.getUrl());
|
Uri uri = Uri.parse(post.getUrl());
|
||||||
if(uri.getScheme() == null && uri.getHost() == null) {
|
if (uri.getScheme() == null && uri.getHost() == null) {
|
||||||
intent.setData(LinkResolverActivity.getRedditUriByPath(post.getUrl()));
|
intent.setData(LinkResolverActivity.getRedditUriByPath(post.getUrl()));
|
||||||
} else {
|
} else {
|
||||||
intent.setData(uri);
|
intent.setData(uri);
|
||||||
@ -468,7 +460,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
((DataViewHolder) holder).noPreviewLinkImageView.setOnClickListener(view -> {
|
((DataViewHolder) holder).noPreviewLinkImageView.setOnClickListener(view -> {
|
||||||
Intent intent = new Intent(mContext, LinkResolverActivity.class);
|
Intent intent = new Intent(mContext, LinkResolverActivity.class);
|
||||||
Uri uri = Uri.parse(post.getUrl());
|
Uri uri = Uri.parse(post.getUrl());
|
||||||
if(uri.getScheme() == null && uri.getHost() == null) {
|
if (uri.getScheme() == null && uri.getHost() == null) {
|
||||||
intent.setData(LinkResolverActivity.getRedditUriByPath(post.getUrl()));
|
intent.setData(LinkResolverActivity.getRedditUriByPath(post.getUrl()));
|
||||||
} else {
|
} else {
|
||||||
intent.setData(uri);
|
intent.setData(uri);
|
||||||
@ -482,12 +474,12 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
}
|
}
|
||||||
|
|
||||||
((DataViewHolder) holder).upvoteButton.setOnClickListener(view -> {
|
((DataViewHolder) holder).upvoteButton.setOnClickListener(view -> {
|
||||||
if(mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
Toast.makeText(mContext, R.string.login_first, Toast.LENGTH_SHORT).show();
|
Toast.makeText(mContext, R.string.login_first, Toast.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(isArchived) {
|
if (isArchived) {
|
||||||
Toast.makeText(mContext, R.string.archived_post_vote_unavailable, Toast.LENGTH_SHORT).show();
|
Toast.makeText(mContext, R.string.archived_post_vote_unavailable, Toast.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -501,7 +493,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
|
|
||||||
((DataViewHolder) holder).downvoteButton.clearColorFilter();
|
((DataViewHolder) holder).downvoteButton.clearColorFilter();
|
||||||
|
|
||||||
if(previousUpvoteButtonColorFilter == null) {
|
if (previousUpvoteButtonColorFilter == null) {
|
||||||
//Not upvoted before
|
//Not upvoted before
|
||||||
post.setVoteType(1);
|
post.setVoteType(1);
|
||||||
newVoteType = RedditUtils.DIR_UPVOTE;
|
newVoteType = RedditUtils.DIR_UPVOTE;
|
||||||
@ -521,7 +513,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
VoteThing.voteThing(mOauthRetrofit, mAccessToken, new VoteThing.VoteThingListener() {
|
VoteThing.voteThing(mOauthRetrofit, mAccessToken, new VoteThing.VoteThingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onVoteThingSuccess(int position1) {
|
public void onVoteThingSuccess(int position1) {
|
||||||
if(newVoteType.equals(RedditUtils.DIR_UPVOTE)) {
|
if (newVoteType.equals(RedditUtils.DIR_UPVOTE)) {
|
||||||
post.setVoteType(1);
|
post.setVoteType(1);
|
||||||
((DataViewHolder) holder).upvoteButton
|
((DataViewHolder) holder).upvoteButton
|
||||||
.setColorFilter(ContextCompat.getColor(mContext, R.color.upvoted), android.graphics.PorterDuff.Mode.SRC_IN);
|
.setColorFilter(ContextCompat.getColor(mContext, R.color.upvoted), android.graphics.PorterDuff.Mode.SRC_IN);
|
||||||
@ -553,12 +545,12 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
});
|
});
|
||||||
|
|
||||||
((DataViewHolder) holder).downvoteButton.setOnClickListener(view -> {
|
((DataViewHolder) holder).downvoteButton.setOnClickListener(view -> {
|
||||||
if(mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
Toast.makeText(mContext, R.string.login_first, Toast.LENGTH_SHORT).show();
|
Toast.makeText(mContext, R.string.login_first, Toast.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(isArchived) {
|
if (isArchived) {
|
||||||
Toast.makeText(mContext, R.string.archived_post_vote_unavailable, Toast.LENGTH_SHORT).show();
|
Toast.makeText(mContext, R.string.archived_post_vote_unavailable, Toast.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -572,7 +564,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
|
|
||||||
((DataViewHolder) holder).upvoteButton.clearColorFilter();
|
((DataViewHolder) holder).upvoteButton.clearColorFilter();
|
||||||
|
|
||||||
if(previousDownvoteButtonColorFilter == null) {
|
if (previousDownvoteButtonColorFilter == null) {
|
||||||
//Not downvoted before
|
//Not downvoted before
|
||||||
post.setVoteType(-1);
|
post.setVoteType(-1);
|
||||||
newVoteType = RedditUtils.DIR_DOWNVOTE;
|
newVoteType = RedditUtils.DIR_DOWNVOTE;
|
||||||
@ -592,7 +584,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
VoteThing.voteThing(mOauthRetrofit, mAccessToken, new VoteThing.VoteThingListener() {
|
VoteThing.voteThing(mOauthRetrofit, mAccessToken, new VoteThing.VoteThingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onVoteThingSuccess(int position1) {
|
public void onVoteThingSuccess(int position1) {
|
||||||
if(newVoteType.equals(RedditUtils.DIR_DOWNVOTE)) {
|
if (newVoteType.equals(RedditUtils.DIR_DOWNVOTE)) {
|
||||||
post.setVoteType(-1);
|
post.setVoteType(-1);
|
||||||
((DataViewHolder) holder).downvoteButton
|
((DataViewHolder) holder).downvoteButton
|
||||||
.setColorFilter(ContextCompat.getColor(mContext, R.color.downvoted), android.graphics.PorterDuff.Mode.SRC_IN);
|
.setColorFilter(ContextCompat.getColor(mContext, R.color.downvoted), android.graphics.PorterDuff.Mode.SRC_IN);
|
||||||
@ -624,7 +616,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
});
|
});
|
||||||
|
|
||||||
((DataViewHolder) holder).commentButton.setOnClickListener(view -> {
|
((DataViewHolder) holder).commentButton.setOnClickListener(view -> {
|
||||||
if(mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
Toast.makeText(mContext, R.string.login_first, Toast.LENGTH_SHORT).show();
|
Toast.makeText(mContext, R.string.login_first, Toast.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -639,19 +631,19 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
|
|
||||||
((DataViewHolder) holder).commentsCountTextView.setText(Integer.toString(post.getnComments()));
|
((DataViewHolder) holder).commentsCountTextView.setText(Integer.toString(post.getnComments()));
|
||||||
|
|
||||||
if(post.isSaved()) {
|
if (post.isSaved()) {
|
||||||
((DataViewHolder) holder).saveButton.setImageResource(R.drawable.ic_baseline_bookmark_24px);
|
((DataViewHolder) holder).saveButton.setImageResource(R.drawable.ic_baseline_bookmark_24px);
|
||||||
} else {
|
} else {
|
||||||
((DataViewHolder) holder).saveButton.setImageResource(R.drawable.ic_baseline_bookmark_border_24px);
|
((DataViewHolder) holder).saveButton.setImageResource(R.drawable.ic_baseline_bookmark_border_24px);
|
||||||
}
|
}
|
||||||
|
|
||||||
((DataViewHolder) holder).saveButton.setOnClickListener(view -> {
|
((DataViewHolder) holder).saveButton.setOnClickListener(view -> {
|
||||||
if(mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
Toast.makeText(mContext, R.string.login_first, Toast.LENGTH_SHORT).show();
|
Toast.makeText(mContext, R.string.login_first, Toast.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(post.isSaved()) {
|
if (post.isSaved()) {
|
||||||
((DataViewHolder) holder).saveButton.setImageResource(R.drawable.ic_baseline_bookmark_border_24px);
|
((DataViewHolder) holder).saveButton.setImageResource(R.drawable.ic_baseline_bookmark_border_24px);
|
||||||
SaveThing.unsaveThing(mOauthRetrofit, mAccessToken, post.getFullName(),
|
SaveThing.unsaveThing(mOauthRetrofit, mAccessToken, post.getFullName(),
|
||||||
new SaveThing.SaveThingListener() {
|
new SaveThing.SaveThingListener() {
|
||||||
@ -715,7 +707,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
|
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
|
||||||
((DataViewHolder) holder).progressBar.setVisibility(View.GONE);
|
((DataViewHolder) holder).progressBar.setVisibility(View.GONE);
|
||||||
((DataViewHolder) holder).errorRelativeLayout.setVisibility(View.VISIBLE);
|
((DataViewHolder) holder).errorRelativeLayout.setVisibility(View.VISIBLE);
|
||||||
((DataViewHolder)holder).errorRelativeLayout.setOnClickListener(view -> {
|
((DataViewHolder) holder).errorRelativeLayout.setOnClickListener(view -> {
|
||||||
((DataViewHolder) holder).progressBar.setVisibility(View.VISIBLE);
|
((DataViewHolder) holder).progressBar.setVisibility(View.VISIBLE);
|
||||||
((DataViewHolder) holder).errorRelativeLayout.setVisibility(View.GONE);
|
((DataViewHolder) holder).errorRelativeLayout.setVisibility(View.GONE);
|
||||||
loadImage(holder, post);
|
loadImage(holder, post);
|
||||||
@ -731,7 +723,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if((post.isNSFW() && mNeedBlurNSFW) || post.isSpoiler() && mNeedBlurSpoiler) {
|
if ((post.isNSFW() && mNeedBlurNSFW) || post.isSpoiler() && mNeedBlurSpoiler) {
|
||||||
imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 2)))
|
imageRequestBuilder.apply(RequestOptions.bitmapTransform(new BlurTransformation(50, 2)))
|
||||||
.into(((DataViewHolder) holder).imageView);
|
.into(((DataViewHolder) holder).imageView);
|
||||||
} else {
|
} else {
|
||||||
@ -755,7 +747,7 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getItemCount() {
|
public int getItemCount() {
|
||||||
if(hasExtraRow()) {
|
if (hasExtraRow()) {
|
||||||
return super.getItemCount() + 1;
|
return super.getItemCount() + 1;
|
||||||
}
|
}
|
||||||
return super.getItemCount();
|
return super.getItemCount();
|
||||||
@ -789,69 +781,9 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class DataViewHolder extends RecyclerView.ViewHolder {
|
|
||||||
@BindView(R.id.card_view_item_post) MaterialCardView cardView;
|
|
||||||
@BindView(R.id.icon_name_linear_layout_view_item_post) LinearLayout iconNameLinearLayout;
|
|
||||||
@BindView(R.id.icon_gif_image_view_item_post) AspectRatioGifImageView iconGifImageView;
|
|
||||||
@BindView(R.id.name_text_view_item_post) TextView nameTextView;
|
|
||||||
@BindView(R.id.stickied_post_image_view_item_post) ImageView stickiedPostImageView;
|
|
||||||
@BindView(R.id.post_time_text_view_best_item_post) TextView postTimeTextView;
|
|
||||||
@BindView(R.id.title_text_view_best_item_post) TextView titleTextView;
|
|
||||||
@BindView(R.id.type_text_view_item_post) CustomTextView typeTextView;
|
|
||||||
@BindView(R.id.gilded_image_view_item_post) ImageView gildedImageView;
|
|
||||||
@BindView(R.id.gilded_number_text_view_item_post) TextView gildedNumberTextView;
|
|
||||||
@BindView(R.id.archived_image_view_item_post) ImageView archivedImageView;
|
|
||||||
@BindView(R.id.locked_image_view_item_post) ImageView lockedImageView;
|
|
||||||
@BindView(R.id.crosspost_image_view_item_post) ImageView crosspostImageView;
|
|
||||||
@BindView(R.id.nsfw_text_view_item_post) CustomTextView nsfwTextView;
|
|
||||||
@BindView(R.id.spoiler_flair_linear_layout_item_post) LinearLayout spoilerFlairLinearLayout;
|
|
||||||
@BindView(R.id.spoiler_custom_text_view_item_post) CustomTextView spoilerTextView;
|
|
||||||
@BindView(R.id.flair_custom_text_view_item_post) CustomTextView flairTextView;
|
|
||||||
@BindView(R.id.link_text_view_item_post) TextView linkTextView;
|
|
||||||
@BindView(R.id.image_view_wrapper_item_post) RelativeLayout relativeLayout;
|
|
||||||
@BindView(R.id.progress_bar_item_post) ProgressBar progressBar;
|
|
||||||
@BindView(R.id.image_view_best_post_item) AspectRatioGifImageView imageView;
|
|
||||||
@BindView(R.id.load_image_error_relative_layout_item_post) RelativeLayout errorRelativeLayout;
|
|
||||||
@BindView(R.id.image_view_no_preview_link_item_post) ImageView noPreviewLinkImageView;
|
|
||||||
@BindView(R.id.plus_button_item_post) ImageView upvoteButton;
|
|
||||||
@BindView(R.id.score_text_view_item_post) TextView scoreTextView;
|
|
||||||
@BindView(R.id.minus_button_item_post) ImageView downvoteButton;
|
|
||||||
@BindView(R.id.comment_button_item_post) ImageView commentButton;
|
|
||||||
@BindView(R.id.comments_count_item_post) TextView commentsCountTextView;
|
|
||||||
@BindView(R.id.save_button_item_post) ImageView saveButton;
|
|
||||||
@BindView(R.id.share_button_item_post) ImageView shareButton;
|
|
||||||
|
|
||||||
DataViewHolder(View itemView) {
|
|
||||||
super(itemView);
|
|
||||||
ButterKnife.bind(this, itemView);
|
|
||||||
scoreTextView.setOnClickListener(view -> {
|
|
||||||
//Do nothing in order to prevent clicking this to start ViewPostDetailActivity
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class ErrorViewHolder extends RecyclerView.ViewHolder {
|
|
||||||
@BindView(R.id.error_text_view_item_footer_error) TextView errorTextView;
|
|
||||||
@BindView(R.id.retry_button_item_footer_error) Button retryButton;
|
|
||||||
|
|
||||||
ErrorViewHolder(View itemView) {
|
|
||||||
super(itemView);
|
|
||||||
ButterKnife.bind(this, itemView);
|
|
||||||
errorTextView.setText(R.string.load_posts_error);
|
|
||||||
retryButton.setOnClickListener(view -> mCallback.retryLoadingMore());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class LoadingViewHolder extends RecyclerView.ViewHolder {
|
|
||||||
LoadingViewHolder(@NonNull View itemView) {
|
|
||||||
super(itemView);
|
|
||||||
ButterKnife.bind(this, itemView);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
|
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
|
||||||
if(holder instanceof DataViewHolder) {
|
if (holder instanceof DataViewHolder) {
|
||||||
mGlide.clear(((DataViewHolder) holder).imageView);
|
mGlide.clear(((DataViewHolder) holder).imageView);
|
||||||
mGlide.clear(((DataViewHolder) holder).iconGifImageView);
|
mGlide.clear(((DataViewHolder) holder).iconGifImageView);
|
||||||
((DataViewHolder) holder).stickiedPostImageView.setVisibility(View.GONE);
|
((DataViewHolder) holder).stickiedPostImageView.setVisibility(View.GONE);
|
||||||
@ -875,4 +807,102 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
|||||||
((DataViewHolder) holder).downvoteButton.clearColorFilter();
|
((DataViewHolder) holder).downvoteButton.clearColorFilter();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface Callback {
|
||||||
|
void retryLoadingMore();
|
||||||
|
|
||||||
|
void typeChipClicked(int filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
class DataViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
@BindView(R.id.card_view_item_post)
|
||||||
|
MaterialCardView cardView;
|
||||||
|
@BindView(R.id.icon_name_linear_layout_view_item_post)
|
||||||
|
LinearLayout iconNameLinearLayout;
|
||||||
|
@BindView(R.id.icon_gif_image_view_item_post)
|
||||||
|
AspectRatioGifImageView iconGifImageView;
|
||||||
|
@BindView(R.id.name_text_view_item_post)
|
||||||
|
TextView nameTextView;
|
||||||
|
@BindView(R.id.stickied_post_image_view_item_post)
|
||||||
|
ImageView stickiedPostImageView;
|
||||||
|
@BindView(R.id.post_time_text_view_best_item_post)
|
||||||
|
TextView postTimeTextView;
|
||||||
|
@BindView(R.id.title_text_view_best_item_post)
|
||||||
|
TextView titleTextView;
|
||||||
|
@BindView(R.id.type_text_view_item_post)
|
||||||
|
CustomTextView typeTextView;
|
||||||
|
@BindView(R.id.gilded_image_view_item_post)
|
||||||
|
ImageView gildedImageView;
|
||||||
|
@BindView(R.id.gilded_number_text_view_item_post)
|
||||||
|
TextView gildedNumberTextView;
|
||||||
|
@BindView(R.id.archived_image_view_item_post)
|
||||||
|
ImageView archivedImageView;
|
||||||
|
@BindView(R.id.locked_image_view_item_post)
|
||||||
|
ImageView lockedImageView;
|
||||||
|
@BindView(R.id.crosspost_image_view_item_post)
|
||||||
|
ImageView crosspostImageView;
|
||||||
|
@BindView(R.id.nsfw_text_view_item_post)
|
||||||
|
CustomTextView nsfwTextView;
|
||||||
|
@BindView(R.id.spoiler_flair_linear_layout_item_post)
|
||||||
|
LinearLayout spoilerFlairLinearLayout;
|
||||||
|
@BindView(R.id.spoiler_custom_text_view_item_post)
|
||||||
|
CustomTextView spoilerTextView;
|
||||||
|
@BindView(R.id.flair_custom_text_view_item_post)
|
||||||
|
CustomTextView flairTextView;
|
||||||
|
@BindView(R.id.link_text_view_item_post)
|
||||||
|
TextView linkTextView;
|
||||||
|
@BindView(R.id.image_view_wrapper_item_post)
|
||||||
|
RelativeLayout relativeLayout;
|
||||||
|
@BindView(R.id.progress_bar_item_post)
|
||||||
|
ProgressBar progressBar;
|
||||||
|
@BindView(R.id.image_view_best_post_item)
|
||||||
|
AspectRatioGifImageView imageView;
|
||||||
|
@BindView(R.id.load_image_error_relative_layout_item_post)
|
||||||
|
RelativeLayout errorRelativeLayout;
|
||||||
|
@BindView(R.id.image_view_no_preview_link_item_post)
|
||||||
|
ImageView noPreviewLinkImageView;
|
||||||
|
@BindView(R.id.plus_button_item_post)
|
||||||
|
ImageView upvoteButton;
|
||||||
|
@BindView(R.id.score_text_view_item_post)
|
||||||
|
TextView scoreTextView;
|
||||||
|
@BindView(R.id.minus_button_item_post)
|
||||||
|
ImageView downvoteButton;
|
||||||
|
@BindView(R.id.comment_button_item_post)
|
||||||
|
ImageView commentButton;
|
||||||
|
@BindView(R.id.comments_count_item_post)
|
||||||
|
TextView commentsCountTextView;
|
||||||
|
@BindView(R.id.save_button_item_post)
|
||||||
|
ImageView saveButton;
|
||||||
|
@BindView(R.id.share_button_item_post)
|
||||||
|
ImageView shareButton;
|
||||||
|
|
||||||
|
DataViewHolder(View itemView) {
|
||||||
|
super(itemView);
|
||||||
|
ButterKnife.bind(this, itemView);
|
||||||
|
scoreTextView.setOnClickListener(view -> {
|
||||||
|
//Do nothing in order to prevent clicking this to start ViewPostDetailActivity
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ErrorViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
@BindView(R.id.error_text_view_item_footer_error)
|
||||||
|
TextView errorTextView;
|
||||||
|
@BindView(R.id.retry_button_item_footer_error)
|
||||||
|
Button retryButton;
|
||||||
|
|
||||||
|
ErrorViewHolder(View itemView) {
|
||||||
|
super(itemView);
|
||||||
|
ButterKnife.bind(this, itemView);
|
||||||
|
errorTextView.setText(R.string.load_posts_error);
|
||||||
|
retryButton.setOnClickListener(view -> mCallback.retryLoadingMore());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class LoadingViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
LoadingViewHolder(@NonNull View itemView) {
|
||||||
|
super(itemView);
|
||||||
|
ButterKnife.bind(this, itemView);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ public class RulesRecyclerViewAdapter extends RecyclerView.Adapter<RulesRecycler
|
|||||||
builder.linkResolver((view, link) -> {
|
builder.linkResolver((view, link) -> {
|
||||||
Intent intent = new Intent(context, LinkResolverActivity.class);
|
Intent intent = new Intent(context, LinkResolverActivity.class);
|
||||||
Uri uri = Uri.parse(link);
|
Uri uri = Uri.parse(link);
|
||||||
if(uri.getScheme() == null && uri.getHost() == null) {
|
if (uri.getScheme() == null && uri.getHost() == null) {
|
||||||
intent.setData(LinkResolverActivity.getRedditUriByPath(link));
|
intent.setData(LinkResolverActivity.getRedditUriByPath(link));
|
||||||
} else {
|
} else {
|
||||||
intent.setData(uri);
|
intent.setData(uri);
|
||||||
@ -60,7 +60,7 @@ public class RulesRecyclerViewAdapter extends RecyclerView.Adapter<RulesRecycler
|
|||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(@NonNull RuleViewHolder holder, int position) {
|
public void onBindViewHolder(@NonNull RuleViewHolder holder, int position) {
|
||||||
holder.shortNameTextView.setText(rules.get(holder.getAdapterPosition()).getShortName());
|
holder.shortNameTextView.setText(rules.get(holder.getAdapterPosition()).getShortName());
|
||||||
if(rules.get(holder.getAdapterPosition()).getDescriptionHtml() == null) {
|
if (rules.get(holder.getAdapterPosition()).getDescriptionHtml() == null) {
|
||||||
holder.descriptionMarkwonView.setVisibility(View.GONE);
|
holder.descriptionMarkwonView.setVisibility(View.GONE);
|
||||||
} else {
|
} else {
|
||||||
markwon.setMarkdown(holder.descriptionMarkwonView, rules.get(holder.getAdapterPosition()).getDescriptionHtml());
|
markwon.setMarkdown(holder.descriptionMarkwonView, rules.get(holder.getAdapterPosition()).getDescriptionHtml());
|
||||||
@ -84,8 +84,10 @@ public class RulesRecyclerViewAdapter extends RecyclerView.Adapter<RulesRecycler
|
|||||||
}
|
}
|
||||||
|
|
||||||
class RuleViewHolder extends RecyclerView.ViewHolder {
|
class RuleViewHolder extends RecyclerView.ViewHolder {
|
||||||
@BindView(R.id.short_name_text_view_item_rule) TextView shortNameTextView;
|
@BindView(R.id.short_name_text_view_item_rule)
|
||||||
@BindView(R.id.description_markwon_view_item_rule) TextView descriptionMarkwonView;
|
TextView shortNameTextView;
|
||||||
|
@BindView(R.id.description_markwon_view_item_rule)
|
||||||
|
TextView descriptionMarkwonView;
|
||||||
|
|
||||||
RuleViewHolder(@NonNull View itemView) {
|
RuleViewHolder(@NonNull View itemView) {
|
||||||
super(itemView);
|
super(itemView);
|
||||||
|
@ -33,17 +33,21 @@ import pl.droidsonroids.gif.GifImageView;
|
|||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
public class SubredditListingRecyclerViewAdapter extends PagedListAdapter<SubredditData, RecyclerView.ViewHolder> {
|
public class SubredditListingRecyclerViewAdapter extends PagedListAdapter<SubredditData, RecyclerView.ViewHolder> {
|
||||||
public interface Callback {
|
|
||||||
void retryLoadingMore();
|
|
||||||
void subredditSelected(String subredditName, String iconUrl);
|
|
||||||
}
|
|
||||||
|
|
||||||
private RequestManager glide;
|
|
||||||
|
|
||||||
private static final int VIEW_TYPE_DATA = 0;
|
private static final int VIEW_TYPE_DATA = 0;
|
||||||
private static final int VIEW_TYPE_ERROR = 1;
|
private static final int VIEW_TYPE_ERROR = 1;
|
||||||
private static final int VIEW_TYPE_LOADING = 2;
|
private static final int VIEW_TYPE_LOADING = 2;
|
||||||
|
private static final DiffUtil.ItemCallback<SubredditData> DIFF_CALLBACK = new DiffUtil.ItemCallback<SubredditData>() {
|
||||||
|
@Override
|
||||||
|
public boolean areItemsTheSame(@NonNull SubredditData oldItem, @NonNull SubredditData newItem) {
|
||||||
|
return oldItem.getId().equals(newItem.getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean areContentsTheSame(@NonNull SubredditData oldItem, @NonNull SubredditData newItem) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
private RequestManager glide;
|
||||||
private Context context;
|
private Context context;
|
||||||
private Retrofit oauthRetrofit;
|
private Retrofit oauthRetrofit;
|
||||||
private Retrofit retrofit;
|
private Retrofit retrofit;
|
||||||
@ -69,25 +73,13 @@ public class SubredditListingRecyclerViewAdapter extends PagedListAdapter<Subred
|
|||||||
glide = Glide.with(context.getApplicationContext());
|
glide = Glide.with(context.getApplicationContext());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final DiffUtil.ItemCallback<SubredditData> DIFF_CALLBACK = new DiffUtil.ItemCallback<SubredditData>() {
|
|
||||||
@Override
|
|
||||||
public boolean areItemsTheSame(@NonNull SubredditData oldItem, @NonNull SubredditData newItem) {
|
|
||||||
return oldItem.getId().equals(newItem.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean areContentsTheSame(@NonNull SubredditData oldItem, @NonNull SubredditData newItem) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||||
if(viewType == VIEW_TYPE_DATA) {
|
if (viewType == VIEW_TYPE_DATA) {
|
||||||
ConstraintLayout constraintLayout = (ConstraintLayout) LayoutInflater.from(parent.getContext()).inflate(R.layout.item_subreddit_listing, parent, false);
|
ConstraintLayout constraintLayout = (ConstraintLayout) LayoutInflater.from(parent.getContext()).inflate(R.layout.item_subreddit_listing, parent, false);
|
||||||
return new DataViewHolder(constraintLayout);
|
return new DataViewHolder(constraintLayout);
|
||||||
} else if(viewType == VIEW_TYPE_ERROR) {
|
} else if (viewType == VIEW_TYPE_ERROR) {
|
||||||
RelativeLayout relativeLayout = (RelativeLayout) LayoutInflater.from(parent.getContext()).inflate(R.layout.item_footer_error, parent, false);
|
RelativeLayout relativeLayout = (RelativeLayout) LayoutInflater.from(parent.getContext()).inflate(R.layout.item_footer_error, parent, false);
|
||||||
return new ErrorViewHolder(relativeLayout);
|
return new ErrorViewHolder(relativeLayout);
|
||||||
} else {
|
} else {
|
||||||
@ -98,12 +90,12 @@ public class SubredditListingRecyclerViewAdapter extends PagedListAdapter<Subred
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
||||||
if(holder instanceof DataViewHolder) {
|
if (holder instanceof DataViewHolder) {
|
||||||
SubredditData subredditData = getItem(position);
|
SubredditData subredditData = getItem(position);
|
||||||
((DataViewHolder) holder).constraintLayout.setOnClickListener(view ->
|
((DataViewHolder) holder).constraintLayout.setOnClickListener(view ->
|
||||||
callback.subredditSelected(subredditData.getName(), subredditData.getIconUrl()));
|
callback.subredditSelected(subredditData.getName(), subredditData.getIconUrl()));
|
||||||
|
|
||||||
if(!subredditData.getIconUrl().equals("")) {
|
if (!subredditData.getIconUrl().equals("")) {
|
||||||
glide.load(subredditData.getIconUrl())
|
glide.load(subredditData.getIconUrl())
|
||||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
||||||
.error(glide.load(R.drawable.subreddit_default_icon)
|
.error(glide.load(R.drawable.subreddit_default_icon)
|
||||||
@ -164,7 +156,7 @@ public class SubredditListingRecyclerViewAdapter extends PagedListAdapter<Subred
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getItemCount() {
|
public int getItemCount() {
|
||||||
if(hasExtraRow()) {
|
if (hasExtraRow()) {
|
||||||
return super.getItemCount() + 1;
|
return super.getItemCount() + 1;
|
||||||
}
|
}
|
||||||
return super.getItemCount();
|
return super.getItemCount();
|
||||||
@ -190,11 +182,29 @@ public class SubredditListingRecyclerViewAdapter extends PagedListAdapter<Subred
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
|
||||||
|
if (holder instanceof DataViewHolder) {
|
||||||
|
glide.clear(((DataViewHolder) holder).iconGifImageView);
|
||||||
|
((DataViewHolder) holder).subscribeButton.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface Callback {
|
||||||
|
void retryLoadingMore();
|
||||||
|
|
||||||
|
void subredditSelected(String subredditName, String iconUrl);
|
||||||
|
}
|
||||||
|
|
||||||
class DataViewHolder extends RecyclerView.ViewHolder {
|
class DataViewHolder extends RecyclerView.ViewHolder {
|
||||||
@BindView(R.id.constraint_layout_item_subreddit_listing) ConstraintLayout constraintLayout;
|
@BindView(R.id.constraint_layout_item_subreddit_listing)
|
||||||
@BindView(R.id.subreddit_icon_gif_image_view_item_subreddit_listing) GifImageView iconGifImageView;
|
ConstraintLayout constraintLayout;
|
||||||
@BindView(R.id.subreddit_name_text_view_item_subreddit_listing) TextView subredditNameTextView;
|
@BindView(R.id.subreddit_icon_gif_image_view_item_subreddit_listing)
|
||||||
@BindView(R.id.subscribe_image_view_item_subreddit_listing) ImageView subscribeButton;
|
GifImageView iconGifImageView;
|
||||||
|
@BindView(R.id.subreddit_name_text_view_item_subreddit_listing)
|
||||||
|
TextView subredditNameTextView;
|
||||||
|
@BindView(R.id.subscribe_image_view_item_subreddit_listing)
|
||||||
|
ImageView subscribeButton;
|
||||||
|
|
||||||
DataViewHolder(View itemView) {
|
DataViewHolder(View itemView) {
|
||||||
super(itemView);
|
super(itemView);
|
||||||
@ -203,8 +213,10 @@ public class SubredditListingRecyclerViewAdapter extends PagedListAdapter<Subred
|
|||||||
}
|
}
|
||||||
|
|
||||||
class ErrorViewHolder extends RecyclerView.ViewHolder {
|
class ErrorViewHolder extends RecyclerView.ViewHolder {
|
||||||
@BindView(R.id.error_text_view_item_footer_error) TextView errorTextView;
|
@BindView(R.id.error_text_view_item_footer_error)
|
||||||
@BindView(R.id.retry_button_item_footer_error) Button retryButton;
|
TextView errorTextView;
|
||||||
|
@BindView(R.id.retry_button_item_footer_error)
|
||||||
|
Button retryButton;
|
||||||
|
|
||||||
ErrorViewHolder(View itemView) {
|
ErrorViewHolder(View itemView) {
|
||||||
super(itemView);
|
super(itemView);
|
||||||
@ -220,12 +232,4 @@ public class SubredditListingRecyclerViewAdapter extends PagedListAdapter<Subred
|
|||||||
ButterKnife.bind(this, itemView);
|
ButterKnife.bind(this, itemView);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
|
|
||||||
if(holder instanceof DataViewHolder) {
|
|
||||||
glide.clear(((DataViewHolder) holder).iconGifImageView);
|
|
||||||
((DataViewHolder) holder).subscribeButton.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -16,10 +16,10 @@ import com.bumptech.glide.request.RequestOptions;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
|
||||||
import ml.docilealligator.infinityforreddit.Activity.ViewSubredditDetailActivity;
|
import ml.docilealligator.infinityforreddit.Activity.ViewSubredditDetailActivity;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.SubscribedSubredditDatabase.SubscribedSubredditData;
|
import ml.docilealligator.infinityforreddit.SubscribedSubredditDatabase.SubscribedSubredditData;
|
||||||
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
|
|
||||||
import pl.droidsonroids.gif.GifImageView;
|
import pl.droidsonroids.gif.GifImageView;
|
||||||
|
|
||||||
public class SubscribedSubredditsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
public class SubscribedSubredditsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||||
@ -32,10 +32,6 @@ public class SubscribedSubredditsRecyclerViewAdapter extends RecyclerView.Adapte
|
|||||||
private String userIconUrl;
|
private String userIconUrl;
|
||||||
private boolean hasClearSelectionRow;
|
private boolean hasClearSelectionRow;
|
||||||
|
|
||||||
public interface ItemClickListener {
|
|
||||||
void onClick(String name, String iconUrl, boolean subredditIsUser);
|
|
||||||
}
|
|
||||||
|
|
||||||
public SubscribedSubredditsRecyclerViewAdapter(Context context) {
|
public SubscribedSubredditsRecyclerViewAdapter(Context context) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
glide = Glide.with(context.getApplicationContext());
|
glide = Glide.with(context.getApplicationContext());
|
||||||
@ -59,13 +55,13 @@ public class SubscribedSubredditsRecyclerViewAdapter extends RecyclerView.Adapte
|
|||||||
String name;
|
String name;
|
||||||
String iconUrl;
|
String iconUrl;
|
||||||
|
|
||||||
if(itemClickListener != null) {
|
if (itemClickListener != null) {
|
||||||
if(hasClearSelectionRow) {
|
if (hasClearSelectionRow) {
|
||||||
if(viewHolder.getAdapterPosition() == 0) {
|
if (viewHolder.getAdapterPosition() == 0) {
|
||||||
((SubredditViewHolder) viewHolder).subredditNameTextView.setText(R.string.all_subreddits);
|
((SubredditViewHolder) viewHolder).subredditNameTextView.setText(R.string.all_subreddits);
|
||||||
viewHolder.itemView.setOnClickListener(view -> itemClickListener.onClick(null, null, false));
|
viewHolder.itemView.setOnClickListener(view -> itemClickListener.onClick(null, null, false));
|
||||||
return;
|
return;
|
||||||
} else if(viewHolder.getAdapterPosition() == 1) {
|
} else if (viewHolder.getAdapterPosition() == 1) {
|
||||||
name = username;
|
name = username;
|
||||||
iconUrl = userIconUrl;
|
iconUrl = userIconUrl;
|
||||||
viewHolder.itemView.setOnClickListener(view -> itemClickListener.onClick(name, iconUrl, true));
|
viewHolder.itemView.setOnClickListener(view -> itemClickListener.onClick(name, iconUrl, true));
|
||||||
@ -75,7 +71,7 @@ public class SubscribedSubredditsRecyclerViewAdapter extends RecyclerView.Adapte
|
|||||||
viewHolder.itemView.setOnClickListener(view -> itemClickListener.onClick(name, iconUrl, false));
|
viewHolder.itemView.setOnClickListener(view -> itemClickListener.onClick(name, iconUrl, false));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(viewHolder.getAdapterPosition() == 0) {
|
if (viewHolder.getAdapterPosition() == 0) {
|
||||||
name = username;
|
name = username;
|
||||||
iconUrl = userIconUrl;
|
iconUrl = userIconUrl;
|
||||||
viewHolder.itemView.setOnClickListener(view -> itemClickListener.onClick(name, iconUrl, true));
|
viewHolder.itemView.setOnClickListener(view -> itemClickListener.onClick(name, iconUrl, true));
|
||||||
@ -96,7 +92,7 @@ public class SubscribedSubredditsRecyclerViewAdapter extends RecyclerView.Adapte
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if(iconUrl != null && !iconUrl.equals("")) {
|
if (iconUrl != null && !iconUrl.equals("")) {
|
||||||
glide.load(iconUrl)
|
glide.load(iconUrl)
|
||||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
||||||
.error(glide.load(R.drawable.subreddit_default_icon)
|
.error(glide.load(R.drawable.subreddit_default_icon)
|
||||||
@ -112,9 +108,9 @@ public class SubscribedSubredditsRecyclerViewAdapter extends RecyclerView.Adapte
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getItemCount() {
|
public int getItemCount() {
|
||||||
if(mSubscribedSubredditData != null) {
|
if (mSubscribedSubredditData != null) {
|
||||||
if(itemClickListener != null) {
|
if (itemClickListener != null) {
|
||||||
if(hasClearSelectionRow) {
|
if (hasClearSelectionRow) {
|
||||||
return mSubscribedSubredditData.size() + 2;
|
return mSubscribedSubredditData.size() + 2;
|
||||||
} else {
|
} else {
|
||||||
return mSubscribedSubredditData.size() + 1;
|
return mSubscribedSubredditData.size() + 1;
|
||||||
@ -131,7 +127,7 @@ public class SubscribedSubredditsRecyclerViewAdapter extends RecyclerView.Adapte
|
|||||||
glide.clear(((SubredditViewHolder) holder).iconGifImageView);
|
glide.clear(((SubredditViewHolder) holder).iconGifImageView);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSubscribedSubreddits(List<SubscribedSubredditData> subscribedSubreddits){
|
public void setSubscribedSubreddits(List<SubscribedSubredditData> subscribedSubreddits) {
|
||||||
mSubscribedSubredditData = subscribedSubreddits;
|
mSubscribedSubredditData = subscribedSubreddits;
|
||||||
notifyDataSetChanged();
|
notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
@ -141,6 +137,10 @@ public class SubscribedSubredditsRecyclerViewAdapter extends RecyclerView.Adapte
|
|||||||
this.userIconUrl = userIconUrl;
|
this.userIconUrl = userIconUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface ItemClickListener {
|
||||||
|
void onClick(String name, String iconUrl, boolean subredditIsUser);
|
||||||
|
}
|
||||||
|
|
||||||
private class SubredditViewHolder extends RecyclerView.ViewHolder {
|
private class SubredditViewHolder extends RecyclerView.ViewHolder {
|
||||||
private final GifImageView iconGifImageView;
|
private final GifImageView iconGifImageView;
|
||||||
private final TextView subredditNameTextView;
|
private final TextView subredditNameTextView;
|
||||||
|
@ -21,30 +21,35 @@ import com.bumptech.glide.Glide;
|
|||||||
import com.bumptech.glide.RequestManager;
|
import com.bumptech.glide.RequestManager;
|
||||||
import com.bumptech.glide.request.RequestOptions;
|
import com.bumptech.glide.request.RequestOptions;
|
||||||
|
|
||||||
|
import butterknife.BindView;
|
||||||
|
import butterknife.ButterKnife;
|
||||||
|
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
|
||||||
import ml.docilealligator.infinityforreddit.Activity.ViewUserDetailActivity;
|
import ml.docilealligator.infinityforreddit.Activity.ViewUserDetailActivity;
|
||||||
import ml.docilealligator.infinityforreddit.AsyncTask.CheckIsFollowingUserAsyncTask;
|
import ml.docilealligator.infinityforreddit.AsyncTask.CheckIsFollowingUserAsyncTask;
|
||||||
import ml.docilealligator.infinityforreddit.NetworkState;
|
import ml.docilealligator.infinityforreddit.NetworkState;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.SubscribedUserDatabase.SubscribedUserDao;
|
import ml.docilealligator.infinityforreddit.SubscribedUserDatabase.SubscribedUserDao;
|
||||||
import ml.docilealligator.infinityforreddit.User.UserData;
|
import ml.docilealligator.infinityforreddit.User.UserData;
|
||||||
import butterknife.BindView;
|
|
||||||
import butterknife.ButterKnife;
|
|
||||||
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
|
|
||||||
import ml.docilealligator.infinityforreddit.UserFollowing;
|
import ml.docilealligator.infinityforreddit.UserFollowing;
|
||||||
import pl.droidsonroids.gif.GifImageView;
|
import pl.droidsonroids.gif.GifImageView;
|
||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
public class UserListingRecyclerViewAdapter extends PagedListAdapter<UserData, RecyclerView.ViewHolder> {
|
public class UserListingRecyclerViewAdapter extends PagedListAdapter<UserData, RecyclerView.ViewHolder> {
|
||||||
public interface RetryLoadingMoreCallback {
|
|
||||||
void retryLoadingMore();
|
|
||||||
}
|
|
||||||
|
|
||||||
private RequestManager glide;
|
|
||||||
|
|
||||||
private static final int VIEW_TYPE_DATA = 0;
|
private static final int VIEW_TYPE_DATA = 0;
|
||||||
private static final int VIEW_TYPE_ERROR = 1;
|
private static final int VIEW_TYPE_ERROR = 1;
|
||||||
private static final int VIEW_TYPE_LOADING = 2;
|
private static final int VIEW_TYPE_LOADING = 2;
|
||||||
|
private static final DiffUtil.ItemCallback<UserData> DIFF_CALLBACK = new DiffUtil.ItemCallback<UserData>() {
|
||||||
|
@Override
|
||||||
|
public boolean areItemsTheSame(@NonNull UserData oldItem, @NonNull UserData newItem) {
|
||||||
|
return oldItem.getName().equals(newItem.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean areContentsTheSame(@NonNull UserData oldItem, @NonNull UserData newItem) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
private RequestManager glide;
|
||||||
private Context context;
|
private Context context;
|
||||||
private Retrofit oauthRetrofit;
|
private Retrofit oauthRetrofit;
|
||||||
private Retrofit retrofit;
|
private Retrofit retrofit;
|
||||||
@ -69,25 +74,13 @@ public class UserListingRecyclerViewAdapter extends PagedListAdapter<UserData, R
|
|||||||
glide = Glide.with(context.getApplicationContext());
|
glide = Glide.with(context.getApplicationContext());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final DiffUtil.ItemCallback<UserData> DIFF_CALLBACK = new DiffUtil.ItemCallback<UserData>() {
|
|
||||||
@Override
|
|
||||||
public boolean areItemsTheSame(@NonNull UserData oldItem, @NonNull UserData newItem) {
|
|
||||||
return oldItem.getName().equals(newItem.getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean areContentsTheSame(@NonNull UserData oldItem, @NonNull UserData newItem) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||||
if(viewType == VIEW_TYPE_DATA) {
|
if (viewType == VIEW_TYPE_DATA) {
|
||||||
ConstraintLayout constraintLayout = (ConstraintLayout) LayoutInflater.from(parent.getContext()).inflate(R.layout.item_user_listing, parent, false);
|
ConstraintLayout constraintLayout = (ConstraintLayout) LayoutInflater.from(parent.getContext()).inflate(R.layout.item_user_listing, parent, false);
|
||||||
return new UserListingRecyclerViewAdapter.DataViewHolder(constraintLayout);
|
return new UserListingRecyclerViewAdapter.DataViewHolder(constraintLayout);
|
||||||
} else if(viewType == VIEW_TYPE_ERROR) {
|
} else if (viewType == VIEW_TYPE_ERROR) {
|
||||||
RelativeLayout relativeLayout = (RelativeLayout) LayoutInflater.from(parent.getContext()).inflate(R.layout.item_footer_error, parent, false);
|
RelativeLayout relativeLayout = (RelativeLayout) LayoutInflater.from(parent.getContext()).inflate(R.layout.item_footer_error, parent, false);
|
||||||
return new UserListingRecyclerViewAdapter.ErrorViewHolder(relativeLayout);
|
return new UserListingRecyclerViewAdapter.ErrorViewHolder(relativeLayout);
|
||||||
} else {
|
} else {
|
||||||
@ -98,7 +91,7 @@ public class UserListingRecyclerViewAdapter extends PagedListAdapter<UserData, R
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
||||||
if(holder instanceof UserListingRecyclerViewAdapter.DataViewHolder) {
|
if (holder instanceof UserListingRecyclerViewAdapter.DataViewHolder) {
|
||||||
UserData userData = getItem(position);
|
UserData userData = getItem(position);
|
||||||
((UserListingRecyclerViewAdapter.DataViewHolder) holder).constraintLayout.setOnClickListener(view -> {
|
((UserListingRecyclerViewAdapter.DataViewHolder) holder).constraintLayout.setOnClickListener(view -> {
|
||||||
Intent intent = new Intent(context, ViewUserDetailActivity.class);
|
Intent intent = new Intent(context, ViewUserDetailActivity.class);
|
||||||
@ -106,7 +99,7 @@ public class UserListingRecyclerViewAdapter extends PagedListAdapter<UserData, R
|
|||||||
context.startActivity(intent);
|
context.startActivity(intent);
|
||||||
});
|
});
|
||||||
|
|
||||||
if(!userData.getIconUrl().equals("")) {
|
if (!userData.getIconUrl().equals("")) {
|
||||||
glide.load(userData.getIconUrl())
|
glide.load(userData.getIconUrl())
|
||||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
||||||
.error(glide.load(R.drawable.subreddit_default_icon)
|
.error(glide.load(R.drawable.subreddit_default_icon)
|
||||||
@ -167,7 +160,7 @@ public class UserListingRecyclerViewAdapter extends PagedListAdapter<UserData, R
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getItemCount() {
|
public int getItemCount() {
|
||||||
if(hasExtraRow()) {
|
if (hasExtraRow()) {
|
||||||
return super.getItemCount() + 1;
|
return super.getItemCount() + 1;
|
||||||
}
|
}
|
||||||
return super.getItemCount();
|
return super.getItemCount();
|
||||||
@ -193,11 +186,27 @@ public class UserListingRecyclerViewAdapter extends PagedListAdapter<UserData, R
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
|
||||||
|
if (holder instanceof UserListingRecyclerViewAdapter.DataViewHolder) {
|
||||||
|
glide.clear(((UserListingRecyclerViewAdapter.DataViewHolder) holder).iconGifImageView);
|
||||||
|
((UserListingRecyclerViewAdapter.DataViewHolder) holder).subscribeButton.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface RetryLoadingMoreCallback {
|
||||||
|
void retryLoadingMore();
|
||||||
|
}
|
||||||
|
|
||||||
class DataViewHolder extends RecyclerView.ViewHolder {
|
class DataViewHolder extends RecyclerView.ViewHolder {
|
||||||
@BindView(R.id.constraint_layout_item_user_listing) ConstraintLayout constraintLayout;
|
@BindView(R.id.constraint_layout_item_user_listing)
|
||||||
@BindView(R.id.user_icon_gif_image_view_item_user_listing) GifImageView iconGifImageView;
|
ConstraintLayout constraintLayout;
|
||||||
@BindView(R.id.user_name_text_view_item_user_listing) TextView UserNameTextView;
|
@BindView(R.id.user_icon_gif_image_view_item_user_listing)
|
||||||
@BindView(R.id.subscribe_image_view_item_user_listing) ImageView subscribeButton;
|
GifImageView iconGifImageView;
|
||||||
|
@BindView(R.id.user_name_text_view_item_user_listing)
|
||||||
|
TextView UserNameTextView;
|
||||||
|
@BindView(R.id.subscribe_image_view_item_user_listing)
|
||||||
|
ImageView subscribeButton;
|
||||||
|
|
||||||
DataViewHolder(View itemView) {
|
DataViewHolder(View itemView) {
|
||||||
super(itemView);
|
super(itemView);
|
||||||
@ -206,8 +215,10 @@ public class UserListingRecyclerViewAdapter extends PagedListAdapter<UserData, R
|
|||||||
}
|
}
|
||||||
|
|
||||||
class ErrorViewHolder extends RecyclerView.ViewHolder {
|
class ErrorViewHolder extends RecyclerView.ViewHolder {
|
||||||
@BindView(R.id.error_text_view_item_footer_error) TextView errorTextView;
|
@BindView(R.id.error_text_view_item_footer_error)
|
||||||
@BindView(R.id.retry_button_item_footer_error) Button retryButton;
|
TextView errorTextView;
|
||||||
|
@BindView(R.id.retry_button_item_footer_error)
|
||||||
|
Button retryButton;
|
||||||
|
|
||||||
ErrorViewHolder(View itemView) {
|
ErrorViewHolder(View itemView) {
|
||||||
super(itemView);
|
super(itemView);
|
||||||
@ -223,12 +234,4 @@ public class UserListingRecyclerViewAdapter extends PagedListAdapter<UserData, R
|
|||||||
ButterKnife.bind(this, itemView);
|
ButterKnife.bind(this, itemView);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
|
|
||||||
if(holder instanceof UserListingRecyclerViewAdapter.DataViewHolder) {
|
|
||||||
glide.clear(((UserListingRecyclerViewAdapter.DataViewHolder) holder).iconGifImageView);
|
|
||||||
((UserListingRecyclerViewAdapter.DataViewHolder) holder).subscribeButton.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -3,13 +3,6 @@ package ml.docilealligator.infinityforreddit;
|
|||||||
import com.google.android.material.appbar.AppBarLayout;
|
import com.google.android.material.appbar.AppBarLayout;
|
||||||
|
|
||||||
public abstract class AppBarStateChangeListener implements AppBarLayout.OnOffsetChangedListener {
|
public abstract class AppBarStateChangeListener implements AppBarLayout.OnOffsetChangedListener {
|
||||||
// State
|
|
||||||
public enum State {
|
|
||||||
EXPANDED,
|
|
||||||
COLLAPSED,
|
|
||||||
IDLE
|
|
||||||
}
|
|
||||||
|
|
||||||
private AppBarStateChangeListener.State mCurrentState = AppBarStateChangeListener.State.IDLE;
|
private AppBarStateChangeListener.State mCurrentState = AppBarStateChangeListener.State.IDLE;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -34,8 +27,16 @@ public abstract class AppBarStateChangeListener implements AppBarLayout.OnOffset
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Notifies on state change
|
* Notifies on state change
|
||||||
|
*
|
||||||
* @param appBarLayout Layout
|
* @param appBarLayout Layout
|
||||||
* @param state Collapse state
|
* @param state Collapse state
|
||||||
*/
|
*/
|
||||||
public abstract void onStateChanged(AppBarLayout appBarLayout, AppBarStateChangeListener.State state);
|
public abstract void onStateChanged(AppBarLayout appBarLayout, AppBarStateChangeListener.State state);
|
||||||
|
|
||||||
|
// State
|
||||||
|
public enum State {
|
||||||
|
EXPANDED,
|
||||||
|
COLLAPSED,
|
||||||
|
IDLE
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package ml.docilealligator.infinityforreddit;
|
|||||||
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
|
import dagger.Component;
|
||||||
import ml.docilealligator.infinityforreddit.Activity.AccountPostsActivity;
|
import ml.docilealligator.infinityforreddit.Activity.AccountPostsActivity;
|
||||||
import ml.docilealligator.infinityforreddit.Activity.AccountSavedThingActivity;
|
import ml.docilealligator.infinityforreddit.Activity.AccountSavedThingActivity;
|
||||||
import ml.docilealligator.infinityforreddit.Activity.CommentActivity;
|
import ml.docilealligator.infinityforreddit.Activity.CommentActivity;
|
||||||
@ -36,45 +37,79 @@ import ml.docilealligator.infinityforreddit.Fragment.SubscribedSubredditsListing
|
|||||||
import ml.docilealligator.infinityforreddit.Fragment.UserListingFragment;
|
import ml.docilealligator.infinityforreddit.Fragment.UserListingFragment;
|
||||||
import ml.docilealligator.infinityforreddit.Settings.MainPreferenceFragment;
|
import ml.docilealligator.infinityforreddit.Settings.MainPreferenceFragment;
|
||||||
import ml.docilealligator.infinityforreddit.Settings.NotificationPreferenceFragment;
|
import ml.docilealligator.infinityforreddit.Settings.NotificationPreferenceFragment;
|
||||||
import dagger.Component;
|
|
||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
@Component(modules = AppModule.class)
|
@Component(modules = AppModule.class)
|
||||||
public interface AppComponent {
|
public interface AppComponent {
|
||||||
void inject(MainActivity mainActivity);
|
void inject(MainActivity mainActivity);
|
||||||
|
|
||||||
void inject(LoginActivity loginActivity);
|
void inject(LoginActivity loginActivity);
|
||||||
|
|
||||||
void inject(PostFragment postFragment);
|
void inject(PostFragment postFragment);
|
||||||
|
|
||||||
void inject(SubredditListingFragment subredditListingFragment);
|
void inject(SubredditListingFragment subredditListingFragment);
|
||||||
|
|
||||||
void inject(UserListingFragment userListingFragment);
|
void inject(UserListingFragment userListingFragment);
|
||||||
|
|
||||||
void inject(ViewPostDetailActivity viewPostDetailActivity);
|
void inject(ViewPostDetailActivity viewPostDetailActivity);
|
||||||
|
|
||||||
void inject(ViewSubredditDetailActivity viewSubredditDetailActivity);
|
void inject(ViewSubredditDetailActivity viewSubredditDetailActivity);
|
||||||
|
|
||||||
void inject(ViewUserDetailActivity viewUserDetailActivity);
|
void inject(ViewUserDetailActivity viewUserDetailActivity);
|
||||||
|
|
||||||
void inject(CommentActivity commentActivity);
|
void inject(CommentActivity commentActivity);
|
||||||
|
|
||||||
void inject(SubscribedThingListingActivity subscribedThingListingActivity);
|
void inject(SubscribedThingListingActivity subscribedThingListingActivity);
|
||||||
|
|
||||||
void inject(PostTextActivity postTextActivity);
|
void inject(PostTextActivity postTextActivity);
|
||||||
|
|
||||||
void inject(SubscribedSubredditsListingFragment subscribedSubredditsListingFragment);
|
void inject(SubscribedSubredditsListingFragment subscribedSubredditsListingFragment);
|
||||||
|
|
||||||
void inject(PostLinkActivity postLinkActivity);
|
void inject(PostLinkActivity postLinkActivity);
|
||||||
|
|
||||||
void inject(PostImageActivity postImageActivity);
|
void inject(PostImageActivity postImageActivity);
|
||||||
|
|
||||||
void inject(PostVideoActivity postVideoActivity);
|
void inject(PostVideoActivity postVideoActivity);
|
||||||
|
|
||||||
void inject(FlairBottomSheetFragment flairBottomSheetFragment);
|
void inject(FlairBottomSheetFragment flairBottomSheetFragment);
|
||||||
|
|
||||||
void inject(RulesActivity rulesActivity);
|
void inject(RulesActivity rulesActivity);
|
||||||
|
|
||||||
void inject(CommentsListingFragment commentsListingFragment);
|
void inject(CommentsListingFragment commentsListingFragment);
|
||||||
|
|
||||||
void inject(SubmitPostService submitPostService);
|
void inject(SubmitPostService submitPostService);
|
||||||
|
|
||||||
void inject(FilteredThingActivity filteredPostsActivity);
|
void inject(FilteredThingActivity filteredPostsActivity);
|
||||||
|
|
||||||
void inject(SearchResultActivity searchResultActivity);
|
void inject(SearchResultActivity searchResultActivity);
|
||||||
|
|
||||||
void inject(SearchSubredditsResultActivity searchSubredditsResultActivity);
|
void inject(SearchSubredditsResultActivity searchSubredditsResultActivity);
|
||||||
|
|
||||||
void inject(FollowedUsersListingFragment followedUsersListingFragment);
|
void inject(FollowedUsersListingFragment followedUsersListingFragment);
|
||||||
|
|
||||||
void inject(SubredditSelectionActivity subredditSelectionActivity);
|
void inject(SubredditSelectionActivity subredditSelectionActivity);
|
||||||
|
|
||||||
void inject(EditPostActivity editPostActivity);
|
void inject(EditPostActivity editPostActivity);
|
||||||
|
|
||||||
void inject(EditCommentActivity editCommentActivity);
|
void inject(EditCommentActivity editCommentActivity);
|
||||||
|
|
||||||
void inject(AccountPostsActivity accountPostsActivity);
|
void inject(AccountPostsActivity accountPostsActivity);
|
||||||
|
|
||||||
void inject(PullNotificationWorker pullNotificationWorker);
|
void inject(PullNotificationWorker pullNotificationWorker);
|
||||||
|
|
||||||
void inject(ViewMessageActivity viewMessageActivity);
|
void inject(ViewMessageActivity viewMessageActivity);
|
||||||
|
|
||||||
void inject(NotificationPreferenceFragment notificationPreferenceFragment);
|
void inject(NotificationPreferenceFragment notificationPreferenceFragment);
|
||||||
|
|
||||||
void inject(LinkResolverActivity linkResolverActivity);
|
void inject(LinkResolverActivity linkResolverActivity);
|
||||||
|
|
||||||
void inject(SearchActivity searchActivity);
|
void inject(SearchActivity searchActivity);
|
||||||
|
|
||||||
void inject(SettingsActivity settingsActivity);
|
void inject(SettingsActivity settingsActivity);
|
||||||
|
|
||||||
void inject(MainPreferenceFragment mainPreferenceFragment);
|
void inject(MainPreferenceFragment mainPreferenceFragment);
|
||||||
|
|
||||||
void inject(AccountSavedThingActivity accountSavedThingActivity);
|
void inject(AccountSavedThingActivity accountSavedThingActivity);
|
||||||
|
|
||||||
void inject(ViewImageActivity viewImageActivity);
|
void inject(ViewImageActivity viewImageActivity);
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,8 @@ class AppModule {
|
|||||||
mApplication = application;
|
mApplication = application;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Provides @Named("oauth")
|
@Provides
|
||||||
|
@Named("oauth")
|
||||||
@Singleton
|
@Singleton
|
||||||
Retrofit provideOauthRetrofit(OkHttpClient okHttpClient) {
|
Retrofit provideOauthRetrofit(OkHttpClient okHttpClient) {
|
||||||
return new Retrofit.Builder()
|
return new Retrofit.Builder()
|
||||||
@ -32,7 +33,8 @@ class AppModule {
|
|||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Provides @Named("oauth_without_authenticator")
|
@Provides
|
||||||
|
@Named("oauth_without_authenticator")
|
||||||
@Singleton
|
@Singleton
|
||||||
Retrofit provideOauthWithoutAuthenticatorRetrofit() {
|
Retrofit provideOauthWithoutAuthenticatorRetrofit() {
|
||||||
return new Retrofit.Builder()
|
return new Retrofit.Builder()
|
||||||
@ -41,7 +43,8 @@ class AppModule {
|
|||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Provides @Named("no_oauth")
|
@Provides
|
||||||
|
@Named("no_oauth")
|
||||||
@Singleton
|
@Singleton
|
||||||
Retrofit provideRetrofit() {
|
Retrofit provideRetrofit() {
|
||||||
return new Retrofit.Builder()
|
return new Retrofit.Builder()
|
||||||
@ -50,7 +53,8 @@ class AppModule {
|
|||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Provides @Named("upload_media")
|
@Provides
|
||||||
|
@Named("upload_media")
|
||||||
@Singleton
|
@Singleton
|
||||||
Retrofit provideUploadMediaRetrofit() {
|
Retrofit provideUploadMediaRetrofit() {
|
||||||
return new Retrofit.Builder()
|
return new Retrofit.Builder()
|
||||||
@ -59,7 +63,8 @@ class AppModule {
|
|||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Provides @Named("upload_video")
|
@Provides
|
||||||
|
@Named("upload_video")
|
||||||
@Singleton
|
@Singleton
|
||||||
Retrofit provideUploadVideoRetrofit() {
|
Retrofit provideUploadVideoRetrofit() {
|
||||||
return new Retrofit.Builder()
|
return new Retrofit.Builder()
|
||||||
|
@ -12,11 +12,6 @@ public class CheckIsFollowingUserAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||||||
private SubscribedUserData subscribedUserData;
|
private SubscribedUserData subscribedUserData;
|
||||||
private CheckIsFollowingUserListener checkIsFollowingUserListener;
|
private CheckIsFollowingUserListener checkIsFollowingUserListener;
|
||||||
|
|
||||||
public interface CheckIsFollowingUserListener {
|
|
||||||
void isSubscribed();
|
|
||||||
void isNotSubscribed();
|
|
||||||
}
|
|
||||||
|
|
||||||
public CheckIsFollowingUserAsyncTask(SubscribedUserDao subscribedUserDao, String username, String accountName,
|
public CheckIsFollowingUserAsyncTask(SubscribedUserDao subscribedUserDao, String username, String accountName,
|
||||||
CheckIsFollowingUserListener checkIsFollowingUserListener) {
|
CheckIsFollowingUserListener checkIsFollowingUserListener) {
|
||||||
this.subscribedUserDao = subscribedUserDao;
|
this.subscribedUserDao = subscribedUserDao;
|
||||||
@ -34,10 +29,16 @@ public class CheckIsFollowingUserAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(Void aVoid) {
|
protected void onPostExecute(Void aVoid) {
|
||||||
super.onPostExecute(aVoid);
|
super.onPostExecute(aVoid);
|
||||||
if(subscribedUserData != null) {
|
if (subscribedUserData != null) {
|
||||||
checkIsFollowingUserListener.isSubscribed();
|
checkIsFollowingUserListener.isSubscribed();
|
||||||
} else {
|
} else {
|
||||||
checkIsFollowingUserListener.isNotSubscribed();
|
checkIsFollowingUserListener.isNotSubscribed();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface CheckIsFollowingUserListener {
|
||||||
|
void isSubscribed();
|
||||||
|
|
||||||
|
void isNotSubscribed();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,16 +13,11 @@ public class CheckIsSubscribedToSubredditAsyncTask extends AsyncTask<Void, Void,
|
|||||||
private SubscribedSubredditData subscribedSubredditData;
|
private SubscribedSubredditData subscribedSubredditData;
|
||||||
private CheckIsSubscribedToSubredditListener checkIsSubscribedToSubredditListener;
|
private CheckIsSubscribedToSubredditListener checkIsSubscribedToSubredditListener;
|
||||||
|
|
||||||
public interface CheckIsSubscribedToSubredditListener {
|
|
||||||
void isSubscribed();
|
|
||||||
void isNotSubscribed();
|
|
||||||
}
|
|
||||||
|
|
||||||
public CheckIsSubscribedToSubredditAsyncTask(RedditDataRoomDatabase redditDataRoomDatabase,
|
public CheckIsSubscribedToSubredditAsyncTask(RedditDataRoomDatabase redditDataRoomDatabase,
|
||||||
String subredditName, String accountName,
|
String subredditName, String accountName,
|
||||||
CheckIsSubscribedToSubredditListener checkIsSubscribedToSubredditListener) {
|
CheckIsSubscribedToSubredditListener checkIsSubscribedToSubredditListener) {
|
||||||
this.redditDataRoomDatabase = redditDataRoomDatabase;
|
this.redditDataRoomDatabase = redditDataRoomDatabase;
|
||||||
this.subredditName =subredditName;
|
this.subredditName = subredditName;
|
||||||
this.accountName = accountName;
|
this.accountName = accountName;
|
||||||
this.checkIsSubscribedToSubredditListener = checkIsSubscribedToSubredditListener;
|
this.checkIsSubscribedToSubredditListener = checkIsSubscribedToSubredditListener;
|
||||||
}
|
}
|
||||||
@ -36,10 +31,16 @@ public class CheckIsSubscribedToSubredditAsyncTask extends AsyncTask<Void, Void,
|
|||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(Void aVoid) {
|
protected void onPostExecute(Void aVoid) {
|
||||||
super.onPostExecute(aVoid);
|
super.onPostExecute(aVoid);
|
||||||
if(subscribedSubredditData != null) {
|
if (subscribedSubredditData != null) {
|
||||||
checkIsSubscribedToSubredditListener.isSubscribed();
|
checkIsSubscribedToSubredditListener.isSubscribed();
|
||||||
} else {
|
} else {
|
||||||
checkIsSubscribedToSubredditListener.isNotSubscribed();
|
checkIsSubscribedToSubredditListener.isNotSubscribed();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface CheckIsSubscribedToSubredditListener {
|
||||||
|
void isSubscribed();
|
||||||
|
|
||||||
|
void isNotSubscribed();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,14 +7,9 @@ import ml.docilealligator.infinityforreddit.Account.AccountDao;
|
|||||||
|
|
||||||
public class GetCurrentAccountAsyncTask extends AsyncTask<Void, Void, Void> {
|
public class GetCurrentAccountAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
|
|
||||||
public interface GetCurrentAccountAsyncTaskListener {
|
|
||||||
void success(Account account);
|
|
||||||
}
|
|
||||||
|
|
||||||
Account account;
|
Account account;
|
||||||
AccountDao accountDao;
|
AccountDao accountDao;
|
||||||
GetCurrentAccountAsyncTaskListener getCurrentAccountAsyncTaskListener;
|
GetCurrentAccountAsyncTaskListener getCurrentAccountAsyncTaskListener;
|
||||||
|
|
||||||
public GetCurrentAccountAsyncTask(AccountDao accountDao, GetCurrentAccountAsyncTaskListener getCurrentAccountAsyncTaskListener) {
|
public GetCurrentAccountAsyncTask(AccountDao accountDao, GetCurrentAccountAsyncTaskListener getCurrentAccountAsyncTaskListener) {
|
||||||
this.accountDao = accountDao;
|
this.accountDao = accountDao;
|
||||||
this.getCurrentAccountAsyncTaskListener = getCurrentAccountAsyncTaskListener;
|
this.getCurrentAccountAsyncTaskListener = getCurrentAccountAsyncTaskListener;
|
||||||
@ -30,4 +25,8 @@ public class GetCurrentAccountAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||||||
protected void onPostExecute(Void aVoid) {
|
protected void onPostExecute(Void aVoid) {
|
||||||
getCurrentAccountAsyncTaskListener.success(account);
|
getCurrentAccountAsyncTaskListener.success(account);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface GetCurrentAccountAsyncTaskListener {
|
||||||
|
void success(Account account);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,10 +16,6 @@ import ml.docilealligator.infinityforreddit.SubscribedUserDatabase.SubscribedUse
|
|||||||
|
|
||||||
public class InsertSubscribedThingsAsyncTask extends AsyncTask<Void, Void, Void> {
|
public class InsertSubscribedThingsAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
|
|
||||||
public interface InsertSubscribedThingListener {
|
|
||||||
void insertSuccess();
|
|
||||||
}
|
|
||||||
|
|
||||||
private RedditDataRoomDatabase mRedditDataRoomDatabase;
|
private RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
private String mAccountName;
|
private String mAccountName;
|
||||||
private SubscribedSubredditDao mSubscribedSubredditDao;
|
private SubscribedSubredditDao mSubscribedSubredditDao;
|
||||||
@ -29,7 +25,6 @@ public class InsertSubscribedThingsAsyncTask extends AsyncTask<Void, Void, Void>
|
|||||||
private List<SubscribedUserData> subscribedUserData;
|
private List<SubscribedUserData> subscribedUserData;
|
||||||
private List<SubredditData> subredditData;
|
private List<SubredditData> subredditData;
|
||||||
private InsertSubscribedThingListener insertSubscribedThingListener;
|
private InsertSubscribedThingListener insertSubscribedThingListener;
|
||||||
|
|
||||||
public InsertSubscribedThingsAsyncTask(RedditDataRoomDatabase redditDataRoomDatabase, @Nullable String accountName,
|
public InsertSubscribedThingsAsyncTask(RedditDataRoomDatabase redditDataRoomDatabase, @Nullable String accountName,
|
||||||
List<SubscribedSubredditData> subscribedSubredditData,
|
List<SubscribedSubredditData> subscribedSubredditData,
|
||||||
List<SubscribedUserData> subscribedUserData,
|
List<SubscribedUserData> subscribedUserData,
|
||||||
@ -49,23 +44,23 @@ public class InsertSubscribedThingsAsyncTask extends AsyncTask<Void, Void, Void>
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Void doInBackground(final Void... params) {
|
protected Void doInBackground(final Void... params) {
|
||||||
if(mAccountName != null && mRedditDataRoomDatabase.accountDao().getAccountData(mAccountName) == null) {
|
if (mAccountName != null && mRedditDataRoomDatabase.accountDao().getAccountData(mAccountName) == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(subscribedSubredditData != null) {
|
if (subscribedSubredditData != null) {
|
||||||
for (SubscribedSubredditData s : subscribedSubredditData) {
|
for (SubscribedSubredditData s : subscribedSubredditData) {
|
||||||
mSubscribedSubredditDao.insert(s);
|
mSubscribedSubredditDao.insert(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(subscribedUserData != null) {
|
if (subscribedUserData != null) {
|
||||||
for (SubscribedUserData s : subscribedUserData) {
|
for (SubscribedUserData s : subscribedUserData) {
|
||||||
mUserDao.insert(s);
|
mUserDao.insert(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(subredditData != null) {
|
if (subredditData != null) {
|
||||||
for (SubredditData s : subredditData) {
|
for (SubredditData s : subredditData) {
|
||||||
mSubredditDao.insert(s);
|
mSubredditDao.insert(s);
|
||||||
}
|
}
|
||||||
@ -77,4 +72,8 @@ public class InsertSubscribedThingsAsyncTask extends AsyncTask<Void, Void, Void>
|
|||||||
protected void onPostExecute(Void aVoid) {
|
protected void onPostExecute(Void aVoid) {
|
||||||
insertSubscribedThingListener.insertSuccess();
|
insertSubscribedThingListener.insertSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface InsertSubscribedThingListener {
|
||||||
|
void insertSuccess();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,18 +2,14 @@ package ml.docilealligator.infinityforreddit.AsyncTask;
|
|||||||
|
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
|
|
||||||
import ml.docilealligator.infinityforreddit.User.UserData;
|
|
||||||
import ml.docilealligator.infinityforreddit.User.UserDao;
|
import ml.docilealligator.infinityforreddit.User.UserDao;
|
||||||
|
import ml.docilealligator.infinityforreddit.User.UserData;
|
||||||
|
|
||||||
public class InsertUserDataAsyncTask extends AsyncTask<Void, Void, Void> {
|
public class InsertUserDataAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
private UserDao userDao;
|
private UserDao userDao;
|
||||||
private UserData userData;
|
private UserData userData;
|
||||||
private InsertUserDataCallback insertUserDataCallback;
|
private InsertUserDataCallback insertUserDataCallback;
|
||||||
|
|
||||||
public interface InsertUserDataCallback {
|
|
||||||
void insertSuccess();
|
|
||||||
}
|
|
||||||
|
|
||||||
public InsertUserDataAsyncTask(UserDao userDao, UserData userData, InsertUserDataCallback insertUserDataCallback) {
|
public InsertUserDataAsyncTask(UserDao userDao, UserData userData, InsertUserDataCallback insertUserDataCallback) {
|
||||||
this.userDao = userDao;
|
this.userDao = userDao;
|
||||||
this.userData = userData;
|
this.userData = userData;
|
||||||
@ -29,8 +25,12 @@ public class InsertUserDataAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(Void aVoid) {
|
protected void onPostExecute(Void aVoid) {
|
||||||
super.onPostExecute(aVoid);
|
super.onPostExecute(aVoid);
|
||||||
if(insertUserDataCallback != null) {
|
if (insertUserDataCallback != null) {
|
||||||
insertUserDataCallback.insertSuccess();
|
insertUserDataCallback.insertSuccess();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface InsertUserDataCallback {
|
||||||
|
void insertSuccess();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,10 +11,6 @@ import ml.docilealligator.infinityforreddit.SubredditDatabase.SubredditData;
|
|||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
public class LoadSubredditIconAsyncTask extends AsyncTask<Void, Void, Void> {
|
public class LoadSubredditIconAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
public interface LoadSubredditIconAsyncTaskListener {
|
|
||||||
void loadIconSuccess(String iconImageUrl);
|
|
||||||
}
|
|
||||||
|
|
||||||
private RedditDataRoomDatabase redditDataRoomDatabase;
|
private RedditDataRoomDatabase redditDataRoomDatabase;
|
||||||
private SubredditDao subredditDao;
|
private SubredditDao subredditDao;
|
||||||
private String subredditName;
|
private String subredditName;
|
||||||
@ -22,7 +18,6 @@ public class LoadSubredditIconAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||||||
private String iconImageUrl;
|
private String iconImageUrl;
|
||||||
private boolean hasSubredditInDb;
|
private boolean hasSubredditInDb;
|
||||||
private LoadSubredditIconAsyncTaskListener loadSubredditIconAsyncTaskListener;
|
private LoadSubredditIconAsyncTaskListener loadSubredditIconAsyncTaskListener;
|
||||||
|
|
||||||
public LoadSubredditIconAsyncTask(RedditDataRoomDatabase redditDataRoomDatabase, String subredditName, Retrofit retrofit,
|
public LoadSubredditIconAsyncTask(RedditDataRoomDatabase redditDataRoomDatabase, String subredditName, Retrofit retrofit,
|
||||||
LoadSubredditIconAsyncTaskListener loadSubredditIconAsyncTaskListener) {
|
LoadSubredditIconAsyncTaskListener loadSubredditIconAsyncTaskListener) {
|
||||||
this.redditDataRoomDatabase = redditDataRoomDatabase;
|
this.redditDataRoomDatabase = redditDataRoomDatabase;
|
||||||
@ -35,7 +30,7 @@ public class LoadSubredditIconAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||||||
@Override
|
@Override
|
||||||
protected Void doInBackground(Void... voids) {
|
protected Void doInBackground(Void... voids) {
|
||||||
SubredditData subredditData = subredditDao.getSubredditData(subredditName);
|
SubredditData subredditData = subredditDao.getSubredditData(subredditName);
|
||||||
if(subredditData != null) {
|
if (subredditData != null) {
|
||||||
iconImageUrl = subredditDao.getSubredditData(subredditName).getIconUrl();
|
iconImageUrl = subredditDao.getSubredditData(subredditName).getIconUrl();
|
||||||
hasSubredditInDb = true;
|
hasSubredditInDb = true;
|
||||||
} else {
|
} else {
|
||||||
@ -47,8 +42,8 @@ public class LoadSubredditIconAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(Void aVoid) {
|
protected void onPostExecute(Void aVoid) {
|
||||||
super.onPostExecute(aVoid);
|
super.onPostExecute(aVoid);
|
||||||
if(!isCancelled()) {
|
if (!isCancelled()) {
|
||||||
if(hasSubredditInDb) {
|
if (hasSubredditInDb) {
|
||||||
loadSubredditIconAsyncTaskListener.loadIconSuccess(iconImageUrl);
|
loadSubredditIconAsyncTaskListener.loadIconSuccess(iconImageUrl);
|
||||||
} else {
|
} else {
|
||||||
FetchSubredditData.fetchSubredditData(retrofit, subredditName, new FetchSubredditData.FetchSubredditDataListener() {
|
FetchSubredditData.fetchSubredditData(retrofit, subredditName, new FetchSubredditData.FetchSubredditDataListener() {
|
||||||
@ -69,4 +64,8 @@ public class LoadSubredditIconAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface LoadSubredditIconAsyncTaskListener {
|
||||||
|
void loadIconSuccess(String iconImageUrl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,22 +3,17 @@ package ml.docilealligator.infinityforreddit.AsyncTask;
|
|||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
|
|
||||||
import ml.docilealligator.infinityforreddit.FetchUserData;
|
import ml.docilealligator.infinityforreddit.FetchUserData;
|
||||||
import ml.docilealligator.infinityforreddit.User.UserData;
|
|
||||||
import ml.docilealligator.infinityforreddit.User.UserDao;
|
import ml.docilealligator.infinityforreddit.User.UserDao;
|
||||||
|
import ml.docilealligator.infinityforreddit.User.UserData;
|
||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
public class LoadUserDataAsyncTask extends AsyncTask<Void, Void, Void> {
|
public class LoadUserDataAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
public interface LoadUserDataAsyncTaskListener {
|
|
||||||
void loadUserDataSuccess(String iconImageUrl);
|
|
||||||
}
|
|
||||||
|
|
||||||
private UserDao userDao;
|
private UserDao userDao;
|
||||||
private String userName;
|
private String userName;
|
||||||
private String iconImageUrl;
|
private String iconImageUrl;
|
||||||
private boolean hasUserInDb;
|
private boolean hasUserInDb;
|
||||||
private Retrofit retrofit;
|
private Retrofit retrofit;
|
||||||
private LoadUserDataAsyncTaskListener loadUserDataAsyncTaskListener;
|
private LoadUserDataAsyncTaskListener loadUserDataAsyncTaskListener;
|
||||||
|
|
||||||
public LoadUserDataAsyncTask(UserDao userDao, String userName, Retrofit retrofit, LoadUserDataAsyncTaskListener loadUserDataAsyncTaskListener) {
|
public LoadUserDataAsyncTask(UserDao userDao, String userName, Retrofit retrofit, LoadUserDataAsyncTaskListener loadUserDataAsyncTaskListener) {
|
||||||
this.userDao = userDao;
|
this.userDao = userDao;
|
||||||
this.userName = userName;
|
this.userName = userName;
|
||||||
@ -28,7 +23,7 @@ public class LoadUserDataAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Void doInBackground(Void... voids) {
|
protected Void doInBackground(Void... voids) {
|
||||||
if(userDao.getUserData(userName) != null) {
|
if (userDao.getUserData(userName) != null) {
|
||||||
iconImageUrl = userDao.getUserData(userName).getIconUrl();
|
iconImageUrl = userDao.getUserData(userName).getIconUrl();
|
||||||
hasUserInDb = true;
|
hasUserInDb = true;
|
||||||
} else {
|
} else {
|
||||||
@ -40,7 +35,7 @@ public class LoadUserDataAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(Void aVoid) {
|
protected void onPostExecute(Void aVoid) {
|
||||||
super.onPostExecute(aVoid);
|
super.onPostExecute(aVoid);
|
||||||
if(hasUserInDb) {
|
if (hasUserInDb) {
|
||||||
loadUserDataAsyncTaskListener.loadUserDataSuccess(iconImageUrl);
|
loadUserDataAsyncTaskListener.loadUserDataSuccess(iconImageUrl);
|
||||||
} else {
|
} else {
|
||||||
FetchUserData.fetchUserData(retrofit, userName, new FetchUserData.FetchUserDataListener() {
|
FetchUserData.fetchUserData(retrofit, userName, new FetchUserData.FetchUserDataListener() {
|
||||||
@ -56,4 +51,8 @@ public class LoadUserDataAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface LoadUserDataAsyncTaskListener {
|
||||||
|
void loadUserDataSuccess(String iconImageUrl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,10 +7,6 @@ import ml.docilealligator.infinityforreddit.Account.AccountDao;
|
|||||||
|
|
||||||
public class ParseAndInsertNewAccountAsyncTask extends AsyncTask<Void, Void, Void> {
|
public class ParseAndInsertNewAccountAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
|
|
||||||
public interface ParseAndInsertAccountListener {
|
|
||||||
void success();
|
|
||||||
}
|
|
||||||
|
|
||||||
private String username;
|
private String username;
|
||||||
private String accessToken;
|
private String accessToken;
|
||||||
private String refreshToken;
|
private String refreshToken;
|
||||||
@ -20,7 +16,6 @@ public class ParseAndInsertNewAccountAsyncTask extends AsyncTask<Void, Void, Voi
|
|||||||
private String code;
|
private String code;
|
||||||
private AccountDao accountDao;
|
private AccountDao accountDao;
|
||||||
private ParseAndInsertAccountListener parseAndInsertAccountListener;
|
private ParseAndInsertAccountListener parseAndInsertAccountListener;
|
||||||
|
|
||||||
public ParseAndInsertNewAccountAsyncTask(String username, String accessToken, String refreshToken, String profileImageUrl, String bannerImageUrl,
|
public ParseAndInsertNewAccountAsyncTask(String username, String accessToken, String refreshToken, String profileImageUrl, String bannerImageUrl,
|
||||||
int karma, String code, AccountDao accountDao,
|
int karma, String code, AccountDao accountDao,
|
||||||
ParseAndInsertAccountListener parseAndInsertAccountListener) {
|
ParseAndInsertAccountListener parseAndInsertAccountListener) {
|
||||||
@ -48,4 +43,8 @@ public class ParseAndInsertNewAccountAsyncTask extends AsyncTask<Void, Void, Voi
|
|||||||
protected void onPostExecute(Void aVoid) {
|
protected void onPostExecute(Void aVoid) {
|
||||||
parseAndInsertAccountListener.success();
|
parseAndInsertAccountListener.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface ParseAndInsertAccountListener {
|
||||||
|
void success();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,15 +6,10 @@ import ml.docilealligator.infinityforreddit.Account.Account;
|
|||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
|
|
||||||
public class SwitchAccountAsyncTask extends AsyncTask<Void, Void, Void> {
|
public class SwitchAccountAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
public interface SwitchAccountAsyncTaskListener {
|
|
||||||
void switched(Account account);
|
|
||||||
}
|
|
||||||
|
|
||||||
private RedditDataRoomDatabase redditDataRoomDatabase;
|
private RedditDataRoomDatabase redditDataRoomDatabase;
|
||||||
private String newAccountName;
|
private String newAccountName;
|
||||||
private Account account;
|
private Account account;
|
||||||
private SwitchAccountAsyncTaskListener switchAccountAsyncTaskListener;
|
private SwitchAccountAsyncTaskListener switchAccountAsyncTaskListener;
|
||||||
|
|
||||||
public SwitchAccountAsyncTask(RedditDataRoomDatabase redditDataRoomDatabase, String newAccountName,
|
public SwitchAccountAsyncTask(RedditDataRoomDatabase redditDataRoomDatabase, String newAccountName,
|
||||||
SwitchAccountAsyncTaskListener switchAccountAsyncTaskListener) {
|
SwitchAccountAsyncTaskListener switchAccountAsyncTaskListener) {
|
||||||
this.redditDataRoomDatabase = redditDataRoomDatabase;
|
this.redditDataRoomDatabase = redditDataRoomDatabase;
|
||||||
@ -34,4 +29,8 @@ public class SwitchAccountAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||||||
protected void onPostExecute(Void aVoid) {
|
protected void onPostExecute(Void aVoid) {
|
||||||
switchAccountAsyncTaskListener.switched(account);
|
switchAccountAsyncTaskListener.switched(account);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface SwitchAccountAsyncTaskListener {
|
||||||
|
void switched(Account account);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,14 +6,9 @@ import ml.docilealligator.infinityforreddit.Account.AccountDao;
|
|||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
|
|
||||||
public class SwitchToAnonymousAccountAsyncTask extends AsyncTask<Void, Void, Void> {
|
public class SwitchToAnonymousAccountAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
public interface SwitchToAnonymousAccountAsyncTaskListener {
|
|
||||||
void logoutSuccess();
|
|
||||||
}
|
|
||||||
|
|
||||||
private RedditDataRoomDatabase redditDataRoomDatabase;
|
private RedditDataRoomDatabase redditDataRoomDatabase;
|
||||||
private boolean removeCurrentAccount;
|
private boolean removeCurrentAccount;
|
||||||
private SwitchToAnonymousAccountAsyncTaskListener switchToAnonymousAccountAsyncTaskListener;
|
private SwitchToAnonymousAccountAsyncTaskListener switchToAnonymousAccountAsyncTaskListener;
|
||||||
|
|
||||||
public SwitchToAnonymousAccountAsyncTask(RedditDataRoomDatabase redditDataRoomDatabase, boolean removeCurrentAccount,
|
public SwitchToAnonymousAccountAsyncTask(RedditDataRoomDatabase redditDataRoomDatabase, boolean removeCurrentAccount,
|
||||||
SwitchToAnonymousAccountAsyncTaskListener switchToAnonymousAccountAsyncTaskListener) {
|
SwitchToAnonymousAccountAsyncTaskListener switchToAnonymousAccountAsyncTaskListener) {
|
||||||
this.redditDataRoomDatabase = redditDataRoomDatabase;
|
this.redditDataRoomDatabase = redditDataRoomDatabase;
|
||||||
@ -24,7 +19,7 @@ public class SwitchToAnonymousAccountAsyncTask extends AsyncTask<Void, Void, Voi
|
|||||||
@Override
|
@Override
|
||||||
protected Void doInBackground(Void... voids) {
|
protected Void doInBackground(Void... voids) {
|
||||||
AccountDao accountDao = redditDataRoomDatabase.accountDao();
|
AccountDao accountDao = redditDataRoomDatabase.accountDao();
|
||||||
if(removeCurrentAccount) {
|
if (removeCurrentAccount) {
|
||||||
accountDao.deleteCurrentAccount();
|
accountDao.deleteCurrentAccount();
|
||||||
}
|
}
|
||||||
accountDao.markAllAccountsNonCurrent();
|
accountDao.markAllAccountsNonCurrent();
|
||||||
@ -35,4 +30,8 @@ public class SwitchToAnonymousAccountAsyncTask extends AsyncTask<Void, Void, Voi
|
|||||||
protected void onPostExecute(Void aVoid) {
|
protected void onPostExecute(Void aVoid) {
|
||||||
switchToAnonymousAccountAsyncTaskListener.logoutSuccess();
|
switchToAnonymousAccountAsyncTaskListener.logoutSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface SwitchToAnonymousAccountAsyncTaskListener {
|
||||||
|
void logoutSuccess();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,17 @@ public class CommentData implements Parcelable {
|
|||||||
public static final int VOTE_TYPE_NO_VOTE = 0;
|
public static final int VOTE_TYPE_NO_VOTE = 0;
|
||||||
public static final int VOTE_TYPE_UPVOTE = 1;
|
public static final int VOTE_TYPE_UPVOTE = 1;
|
||||||
public static final int VOTE_TYPE_DOWNVOTE = -1;
|
public static final int VOTE_TYPE_DOWNVOTE = -1;
|
||||||
|
public static final Creator<CommentData> CREATOR = new Creator<CommentData>() {
|
||||||
|
@Override
|
||||||
|
public CommentData createFromParcel(Parcel in) {
|
||||||
|
return new CommentData(in);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommentData[] newArray(int size) {
|
||||||
|
return new CommentData[size];
|
||||||
|
}
|
||||||
|
};
|
||||||
private String id;
|
private String id;
|
||||||
private String fullName;
|
private String fullName;
|
||||||
private String author;
|
private String author;
|
||||||
@ -33,7 +43,6 @@ public class CommentData implements Parcelable {
|
|||||||
private ArrayList<CommentData> children;
|
private ArrayList<CommentData> children;
|
||||||
private ArrayList<String> moreChildrenFullnames;
|
private ArrayList<String> moreChildrenFullnames;
|
||||||
private int moreChildrenStartingIndex;
|
private int moreChildrenStartingIndex;
|
||||||
|
|
||||||
private boolean isPlaceHolder;
|
private boolean isPlaceHolder;
|
||||||
private boolean isLoadingMoreChildren;
|
private boolean isLoadingMoreChildren;
|
||||||
private boolean loadMoreChildrenFailed;
|
private boolean loadMoreChildrenFailed;
|
||||||
@ -102,18 +111,6 @@ public class CommentData implements Parcelable {
|
|||||||
loadMoreChildrenFailed = in.readByte() != 0;
|
loadMoreChildrenFailed = in.readByte() != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final Creator<CommentData> CREATOR = new Creator<CommentData>() {
|
|
||||||
@Override
|
|
||||||
public CommentData createFromParcel(Parcel in) {
|
|
||||||
return new CommentData(in);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public CommentData[] newArray(int size) {
|
|
||||||
return new CommentData[size];
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public String getId() {
|
public String getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
@ -235,10 +232,10 @@ public class CommentData implements Parcelable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void addChildren(ArrayList<CommentData> moreChildren) {
|
public void addChildren(ArrayList<CommentData> moreChildren) {
|
||||||
if(children == null || children.size() == 0) {
|
if (children == null || children.size() == 0) {
|
||||||
setChildren(moreChildren);
|
setChildren(moreChildren);
|
||||||
} else {
|
} else {
|
||||||
if(children.get(children.size() - 1).isPlaceHolder) {
|
if (children.get(children.size() - 1).isPlaceHolder) {
|
||||||
children.addAll(children.size() - 2, moreChildren);
|
children.addAll(children.size() - 2, moreChildren);
|
||||||
} else {
|
} else {
|
||||||
children.addAll(moreChildren);
|
children.addAll(moreChildren);
|
||||||
@ -251,7 +248,7 @@ public class CommentData implements Parcelable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void addChild(CommentData comment, int position) {
|
public void addChild(CommentData comment, int position) {
|
||||||
if(children == null) {
|
if (children == null) {
|
||||||
children = new ArrayList<>();
|
children = new ArrayList<>();
|
||||||
}
|
}
|
||||||
children.add(position, comment);
|
children.add(position, comment);
|
||||||
|
@ -71,11 +71,11 @@ public class CommentDataSource extends PageKeyedDataSource<String, CommentData>
|
|||||||
|
|
||||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||||
Call<String> commentsCall;
|
Call<String> commentsCall;
|
||||||
if(areSavedComments) {
|
if (areSavedComments) {
|
||||||
commentsCall = api.getUserSavedCommentsOauth(username, PostDataSource.USER_WHERE_SAVED,
|
commentsCall = api.getUserSavedCommentsOauth(username, PostDataSource.USER_WHERE_SAVED,
|
||||||
null, sortType, RedditUtils.getOAuthHeader(accessToken));
|
null, sortType, RedditUtils.getOAuthHeader(accessToken));
|
||||||
} else {
|
} else {
|
||||||
if(accessToken == null) {
|
if (accessToken == null) {
|
||||||
commentsCall = api.getUserComments(username, null, sortType);
|
commentsCall = api.getUserComments(username, null, sortType);
|
||||||
} else {
|
} else {
|
||||||
commentsCall = api.getUserCommentsOauth(RedditUtils.getOAuthHeader(accessToken), username,
|
commentsCall = api.getUserCommentsOauth(RedditUtils.getOAuthHeader(accessToken), username,
|
||||||
@ -85,17 +85,17 @@ public class CommentDataSource extends PageKeyedDataSource<String, CommentData>
|
|||||||
commentsCall.enqueue(new Callback<String>() {
|
commentsCall.enqueue(new Callback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
if(response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
new ParseCommentAsyncTask(response.body(), locale, new ParseCommentAsyncTask.ParseCommentAsyncTaskListener() {
|
new ParseCommentAsyncTask(response.body(), locale, new ParseCommentAsyncTask.ParseCommentAsyncTaskListener() {
|
||||||
@Override
|
@Override
|
||||||
public void parseSuccessful(ArrayList<CommentData> comments, String after) {
|
public void parseSuccessful(ArrayList<CommentData> comments, String after) {
|
||||||
if(comments.size() == 0) {
|
if (comments.size() == 0) {
|
||||||
hasPostLiveData.postValue(false);
|
hasPostLiveData.postValue(false);
|
||||||
} else {
|
} else {
|
||||||
hasPostLiveData.postValue(true);
|
hasPostLiveData.postValue(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(after == null || after.equals("") || after.equals("null")) {
|
if (after == null || after.equals("") || after.equals("null")) {
|
||||||
callback.onResult(comments, null, null);
|
callback.onResult(comments, null, null);
|
||||||
} else {
|
} else {
|
||||||
callback.onResult(comments, null, after);
|
callback.onResult(comments, null, after);
|
||||||
@ -134,11 +134,11 @@ public class CommentDataSource extends PageKeyedDataSource<String, CommentData>
|
|||||||
|
|
||||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||||
Call<String> commentsCall;
|
Call<String> commentsCall;
|
||||||
if(areSavedComments) {
|
if (areSavedComments) {
|
||||||
commentsCall = api.getUserSavedCommentsOauth(username, PostDataSource.USER_WHERE_SAVED, params.key,
|
commentsCall = api.getUserSavedCommentsOauth(username, PostDataSource.USER_WHERE_SAVED, params.key,
|
||||||
sortType, RedditUtils.getOAuthHeader(accessToken));
|
sortType, RedditUtils.getOAuthHeader(accessToken));
|
||||||
} else {
|
} else {
|
||||||
if(accessToken == null) {
|
if (accessToken == null) {
|
||||||
commentsCall = api.getUserComments(username, params.key, sortType);
|
commentsCall = api.getUserComments(username, params.key, sortType);
|
||||||
} else {
|
} else {
|
||||||
commentsCall = api.getUserCommentsOauth(RedditUtils.getOAuthHeader(accessToken),
|
commentsCall = api.getUserCommentsOauth(RedditUtils.getOAuthHeader(accessToken),
|
||||||
@ -148,11 +148,11 @@ public class CommentDataSource extends PageKeyedDataSource<String, CommentData>
|
|||||||
commentsCall.enqueue(new Callback<String>() {
|
commentsCall.enqueue(new Callback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
if(response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
new ParseCommentAsyncTask(response.body(), locale, new ParseCommentAsyncTask.ParseCommentAsyncTaskListener() {
|
new ParseCommentAsyncTask(response.body(), locale, new ParseCommentAsyncTask.ParseCommentAsyncTaskListener() {
|
||||||
@Override
|
@Override
|
||||||
public void parseSuccessful(ArrayList<CommentData> comments, String after) {
|
public void parseSuccessful(ArrayList<CommentData> comments, String after) {
|
||||||
if(after == null || after.equals("") || after.equals("null")) {
|
if (after == null || after.equals("") || after.equals("null")) {
|
||||||
callback.onResult(comments, null);
|
callback.onResult(comments, null);
|
||||||
} else {
|
} else {
|
||||||
callback.onResult(comments, after);
|
callback.onResult(comments, after);
|
||||||
@ -184,11 +184,6 @@ public class CommentDataSource extends PageKeyedDataSource<String, CommentData>
|
|||||||
private boolean parseFailed;
|
private boolean parseFailed;
|
||||||
private ParseCommentAsyncTaskListener parseCommentAsyncTaskListener;
|
private ParseCommentAsyncTaskListener parseCommentAsyncTaskListener;
|
||||||
|
|
||||||
interface ParseCommentAsyncTaskListener {
|
|
||||||
void parseSuccessful(ArrayList<CommentData> comments, String after);
|
|
||||||
void parseFailed();
|
|
||||||
}
|
|
||||||
|
|
||||||
ParseCommentAsyncTask(String response, Locale locale, ParseCommentAsyncTaskListener parseCommentAsyncTaskListener) {
|
ParseCommentAsyncTask(String response, Locale locale, ParseCommentAsyncTaskListener parseCommentAsyncTaskListener) {
|
||||||
this.locale = locale;
|
this.locale = locale;
|
||||||
this.parseCommentAsyncTaskListener = parseCommentAsyncTaskListener;
|
this.parseCommentAsyncTaskListener = parseCommentAsyncTaskListener;
|
||||||
@ -205,16 +200,17 @@ public class CommentDataSource extends PageKeyedDataSource<String, CommentData>
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected ArrayList<CommentData> doInBackground(Void... voids) {
|
protected ArrayList<CommentData> doInBackground(Void... voids) {
|
||||||
if(parseFailed) {
|
if (parseFailed) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
ArrayList<CommentData> comments = new ArrayList<>();
|
ArrayList<CommentData> comments = new ArrayList<>();
|
||||||
for(int i = 0; i < commentsJSONArray.length(); i++) {
|
for (int i = 0; i < commentsJSONArray.length(); i++) {
|
||||||
try {
|
try {
|
||||||
JSONObject commentJSON = commentsJSONArray.getJSONObject(i).getJSONObject(JSONUtils.DATA_KEY);
|
JSONObject commentJSON = commentsJSONArray.getJSONObject(i).getJSONObject(JSONUtils.DATA_KEY);
|
||||||
comments.add(ParseComment.parseSingleComment(commentJSON, 0, locale));
|
comments.add(ParseComment.parseSingleComment(commentJSON, 0, locale));
|
||||||
} catch (JSONException ignored) {}
|
} catch (JSONException ignored) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return comments;
|
return comments;
|
||||||
}
|
}
|
||||||
@ -222,11 +218,17 @@ public class CommentDataSource extends PageKeyedDataSource<String, CommentData>
|
|||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(ArrayList<CommentData> commentData) {
|
protected void onPostExecute(ArrayList<CommentData> commentData) {
|
||||||
super.onPostExecute(commentData);
|
super.onPostExecute(commentData);
|
||||||
if(commentData != null) {
|
if (commentData != null) {
|
||||||
parseCommentAsyncTaskListener.parseSuccessful(commentData, after);
|
parseCommentAsyncTaskListener.parseSuccessful(commentData, after);
|
||||||
} else {
|
} else {
|
||||||
parseCommentAsyncTaskListener.parseFailed();
|
parseCommentAsyncTaskListener.parseFailed();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface ParseCommentAsyncTaskListener {
|
||||||
|
void parseSuccessful(ArrayList<CommentData> comments, String after);
|
||||||
|
|
||||||
|
void parseFailed();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,11 @@ public enum ContentFontStyle {
|
|||||||
private int resId;
|
private int resId;
|
||||||
private String title;
|
private String title;
|
||||||
|
|
||||||
|
ContentFontStyle(int resId, String title) {
|
||||||
|
this.resId = resId;
|
||||||
|
this.title = title;
|
||||||
|
}
|
||||||
|
|
||||||
public int getResId() {
|
public int getResId() {
|
||||||
return resId;
|
return resId;
|
||||||
}
|
}
|
||||||
@ -17,9 +22,4 @@ public enum ContentFontStyle {
|
|||||||
public String getTitle() {
|
public String getTitle() {
|
||||||
return title;
|
return title;
|
||||||
}
|
}
|
||||||
|
|
||||||
ContentFontStyle(int resId, String title) {
|
|
||||||
this.resId = resId;
|
|
||||||
this.title = title;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,17 @@ import pl.droidsonroids.gif.GifImageView;
|
|||||||
public class AspectRatioGifImageView extends GifImageView {
|
public class AspectRatioGifImageView extends GifImageView {
|
||||||
private float ratio;
|
private float ratio;
|
||||||
|
|
||||||
|
public AspectRatioGifImageView(Context context) {
|
||||||
|
super(context);
|
||||||
|
this.ratio = 1.0F;
|
||||||
|
}
|
||||||
|
|
||||||
|
public AspectRatioGifImageView(Context context, AttributeSet attrs) {
|
||||||
|
super(context, attrs);
|
||||||
|
this.ratio = 1.0F;
|
||||||
|
this.init(context, attrs);
|
||||||
|
}
|
||||||
|
|
||||||
public final float getRatio() {
|
public final float getRatio() {
|
||||||
return this.ratio;
|
return this.ratio;
|
||||||
}
|
}
|
||||||
@ -32,23 +43,12 @@ public class AspectRatioGifImageView extends GifImageView {
|
|||||||
int height = this.getMeasuredHeight();
|
int height = this.getMeasuredHeight();
|
||||||
if (width != 0 || height != 0) {
|
if (width != 0 || height != 0) {
|
||||||
if (width > 0) {
|
if (width > 0) {
|
||||||
height = (int)((float)width * this.ratio);
|
height = (int) ((float) width * this.ratio);
|
||||||
} else {
|
} else {
|
||||||
width = (int)((float)height / this.ratio);
|
width = (int) ((float) height / this.ratio);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setMeasuredDimension(width, height);
|
this.setMeasuredDimension(width, height);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public AspectRatioGifImageView(Context context) {
|
|
||||||
super(context);
|
|
||||||
this.ratio = 1.0F;
|
|
||||||
}
|
|
||||||
|
|
||||||
public AspectRatioGifImageView(Context context, AttributeSet attrs) {
|
|
||||||
super(context, attrs);
|
|
||||||
this.ratio = 1.0F;
|
|
||||||
this.init(context, attrs);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -11,18 +11,13 @@ import retrofit2.Response;
|
|||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
public class DeleteThing {
|
public class DeleteThing {
|
||||||
public interface DeleteThingListener {
|
|
||||||
void deleteSuccess();
|
|
||||||
void deleteFailed();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void delete(Retrofit oauthRetrofit, String fullname, String accessToken, DeleteThingListener deleteThingListener) {
|
public static void delete(Retrofit oauthRetrofit, String fullname, String accessToken, DeleteThingListener deleteThingListener) {
|
||||||
Map<String, String> params = new HashMap<>();
|
Map<String, String> params = new HashMap<>();
|
||||||
params.put(RedditUtils.ID_KEY, fullname);
|
params.put(RedditUtils.ID_KEY, fullname);
|
||||||
oauthRetrofit.create(RedditAPI.class).delete(RedditUtils.getOAuthHeader(accessToken), params).enqueue(new Callback<String>() {
|
oauthRetrofit.create(RedditAPI.class).delete(RedditUtils.getOAuthHeader(accessToken), params).enqueue(new Callback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
if(response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
deleteThingListener.deleteSuccess();
|
deleteThingListener.deleteSuccess();
|
||||||
} else {
|
} else {
|
||||||
deleteThingListener.deleteFailed();
|
deleteThingListener.deleteFailed();
|
||||||
@ -35,4 +30,10 @@ public class DeleteThing {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface DeleteThingListener {
|
||||||
|
void deleteSuccess();
|
||||||
|
|
||||||
|
void deleteFailed();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
package ml.docilealligator.infinityforreddit.Event;
|
package ml.docilealligator.infinityforreddit.Event;
|
||||||
|
|
||||||
public class ChangeFontSizeEvent { }
|
public class ChangeFontSizeEvent {
|
||||||
|
}
|
||||||
|
@ -2,6 +2,7 @@ package ml.docilealligator.infinityforreddit.Event;
|
|||||||
|
|
||||||
public class ChangeNSFWBlurEvent {
|
public class ChangeNSFWBlurEvent {
|
||||||
public boolean needBlurNSFW;
|
public boolean needBlurNSFW;
|
||||||
|
|
||||||
public ChangeNSFWBlurEvent(boolean needBlurNSFW) {
|
public ChangeNSFWBlurEvent(boolean needBlurNSFW) {
|
||||||
this.needBlurNSFW = needBlurNSFW;
|
this.needBlurNSFW = needBlurNSFW;
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package ml.docilealligator.infinityforreddit.Event;
|
|||||||
|
|
||||||
public class ChangeNSFWEvent {
|
public class ChangeNSFWEvent {
|
||||||
public boolean nsfw;
|
public boolean nsfw;
|
||||||
|
|
||||||
public ChangeNSFWEvent(boolean nsfw) {
|
public ChangeNSFWEvent(boolean nsfw) {
|
||||||
this.nsfw = nsfw;
|
this.nsfw = nsfw;
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package ml.docilealligator.infinityforreddit.Event;
|
|||||||
|
|
||||||
public class ChangeSpoilerBlurEvent {
|
public class ChangeSpoilerBlurEvent {
|
||||||
public boolean needBlurSpoiler;
|
public boolean needBlurSpoiler;
|
||||||
|
|
||||||
public ChangeSpoilerBlurEvent(boolean needBlurSpoiler) {
|
public ChangeSpoilerBlurEvent(boolean needBlurSpoiler) {
|
||||||
this.needBlurSpoiler = needBlurSpoiler;
|
this.needBlurSpoiler = needBlurSpoiler;
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,10 @@ package ml.docilealligator.infinityforreddit.Event;
|
|||||||
|
|
||||||
public class SwitchAccountEvent {
|
public class SwitchAccountEvent {
|
||||||
public String excludeActivityClassName;
|
public String excludeActivityClassName;
|
||||||
public SwitchAccountEvent() {}
|
|
||||||
|
public SwitchAccountEvent() {
|
||||||
|
}
|
||||||
|
|
||||||
public SwitchAccountEvent(String excludeActivityClassName) {
|
public SwitchAccountEvent(String excludeActivityClassName) {
|
||||||
this.excludeActivityClassName = excludeActivityClassName;
|
this.excludeActivityClassName = excludeActivityClassName;
|
||||||
}
|
}
|
||||||
|
@ -12,28 +12,18 @@ import retrofit2.Response;
|
|||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
public class FetchComment {
|
public class FetchComment {
|
||||||
public interface FetchCommentListener {
|
|
||||||
void onFetchCommentSuccess(ArrayList<CommentData> expandedComments, String parentId, ArrayList<String> children);
|
|
||||||
void onFetchCommentFailed();
|
|
||||||
}
|
|
||||||
|
|
||||||
public interface FetchMoreCommentListener {
|
|
||||||
void onFetchMoreCommentSuccess(ArrayList<CommentData> expandedComments, int childrenStartingIndex);
|
|
||||||
void onFetchMoreCommentFailed();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void fetchComments(Retrofit retrofit, @Nullable String accessToken, String article, String commentId,
|
public static void fetchComments(Retrofit retrofit, @Nullable String accessToken, String article, String commentId,
|
||||||
Locale locale, FetchCommentListener fetchCommentListener) {
|
Locale locale, FetchCommentListener fetchCommentListener) {
|
||||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||||
Call<String> comments;
|
Call<String> comments;
|
||||||
if(accessToken == null) {
|
if (accessToken == null) {
|
||||||
if(commentId == null) {
|
if (commentId == null) {
|
||||||
comments = api.getPostAndCommentsById(article);
|
comments = api.getPostAndCommentsById(article);
|
||||||
} else {
|
} else {
|
||||||
comments = api.getPostAndCommentsSingleThreadById(article, commentId);
|
comments = api.getPostAndCommentsSingleThreadById(article, commentId);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(commentId == null) {
|
if (commentId == null) {
|
||||||
comments = api.getPostAndCommentsByIdOauth(article, RedditUtils.getOAuthHeader(accessToken));
|
comments = api.getPostAndCommentsByIdOauth(article, RedditUtils.getOAuthHeader(accessToken));
|
||||||
} else {
|
} else {
|
||||||
comments = api.getPostAndCommentsSingleThreadByIdOauth(article, commentId, RedditUtils.getOAuthHeader(accessToken));
|
comments = api.getPostAndCommentsSingleThreadByIdOauth(article, commentId, RedditUtils.getOAuthHeader(accessToken));
|
||||||
@ -43,7 +33,7 @@ public class FetchComment {
|
|||||||
comments.enqueue(new Callback<String>() {
|
comments.enqueue(new Callback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
if(response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
ParseComment.parseComment(response.body(), new ArrayList<>(),
|
ParseComment.parseComment(response.body(), new ArrayList<>(),
|
||||||
locale, new ParseComment.ParseCommentListener() {
|
locale, new ParseComment.ParseCommentListener() {
|
||||||
@Override
|
@Override
|
||||||
@ -74,14 +64,14 @@ public class FetchComment {
|
|||||||
ArrayList<String> allChildren, int startingIndex,
|
ArrayList<String> allChildren, int startingIndex,
|
||||||
int depth, Locale locale, FetchMoreCommentListener fetchMoreCommentListener) {
|
int depth, Locale locale, FetchMoreCommentListener fetchMoreCommentListener) {
|
||||||
StringBuilder stringBuilder = new StringBuilder();
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
for(int i = 0; i < 100; i++) {
|
for (int i = 0; i < 100; i++) {
|
||||||
if(allChildren.size() <= startingIndex + i) {
|
if (allChildren.size() <= startingIndex + i) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
stringBuilder.append(allChildren.get(startingIndex + i)).append(",");
|
stringBuilder.append(allChildren.get(startingIndex + i)).append(",");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(stringBuilder.length() == 0) {
|
if (stringBuilder.length() == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,7 +79,7 @@ public class FetchComment {
|
|||||||
|
|
||||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||||
Call<String> moreComments;
|
Call<String> moreComments;
|
||||||
if(accessToken == null) {
|
if (accessToken == null) {
|
||||||
moreComments = api.getInfo(stringBuilder.toString());
|
moreComments = api.getInfo(stringBuilder.toString());
|
||||||
} else {
|
} else {
|
||||||
moreComments = api.getInfoOauth(stringBuilder.toString(), RedditUtils.getOAuthHeader(accessToken));
|
moreComments = api.getInfoOauth(stringBuilder.toString(), RedditUtils.getOAuthHeader(accessToken));
|
||||||
@ -98,7 +88,7 @@ public class FetchComment {
|
|||||||
moreComments.enqueue(new Callback<String>() {
|
moreComments.enqueue(new Callback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
if(response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
ParseComment.parseMoreComment(response.body(), new ArrayList<>(), locale,
|
ParseComment.parseMoreComment(response.body(), new ArrayList<>(), locale,
|
||||||
depth, new ParseComment.ParseCommentListener() {
|
depth, new ParseComment.ParseCommentListener() {
|
||||||
@Override
|
@Override
|
||||||
@ -124,4 +114,16 @@ public class FetchComment {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface FetchCommentListener {
|
||||||
|
void onFetchCommentSuccess(ArrayList<CommentData> expandedComments, String parentId, ArrayList<String> children);
|
||||||
|
|
||||||
|
void onFetchCommentFailed();
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface FetchMoreCommentListener {
|
||||||
|
void onFetchMoreCommentSuccess(ArrayList<CommentData> expandedComments, int childrenStartingIndex);
|
||||||
|
|
||||||
|
void onFetchMoreCommentFailed();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,11 +15,6 @@ import retrofit2.Response;
|
|||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
public class FetchFlairs {
|
public class FetchFlairs {
|
||||||
public interface FetchFlairsInSubredditListener {
|
|
||||||
void fetchSuccessful(ArrayList<Flair> flairs);
|
|
||||||
void fetchFailed();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void fetchFlairsInSubreddit(Retrofit oauthRetrofit, String accessToken, String subredditName, FetchFlairsInSubredditListener fetchFlairsInSubredditListener) {
|
public static void fetchFlairsInSubreddit(Retrofit oauthRetrofit, String accessToken, String subredditName, FetchFlairsInSubredditListener fetchFlairsInSubredditListener) {
|
||||||
RedditAPI api = oauthRetrofit.create(RedditAPI.class);
|
RedditAPI api = oauthRetrofit.create(RedditAPI.class);
|
||||||
|
|
||||||
@ -39,7 +34,7 @@ public class FetchFlairs {
|
|||||||
fetchFlairsInSubredditListener.fetchFailed();
|
fetchFlairsInSubredditListener.fetchFailed();
|
||||||
}
|
}
|
||||||
}).execute();
|
}).execute();
|
||||||
} else if(response.code() == 403) {
|
} else if (response.code() == 403) {
|
||||||
//No flairs
|
//No flairs
|
||||||
fetchFlairsInSubredditListener.fetchSuccessful(null);
|
fetchFlairsInSubredditListener.fetchSuccessful(null);
|
||||||
} else {
|
} else {
|
||||||
@ -54,15 +49,15 @@ public class FetchFlairs {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class ParseFlairsAsyncTask extends AsyncTask<Void, ArrayList<Flair>, ArrayList<Flair>> {
|
public interface FetchFlairsInSubredditListener {
|
||||||
interface ParseFlairsAsyncTaskListener {
|
void fetchSuccessful(ArrayList<Flair> flairs);
|
||||||
void parseSuccessful(ArrayList<Flair> flairs);
|
|
||||||
void parseFailed();
|
void fetchFailed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static class ParseFlairsAsyncTask extends AsyncTask<Void, ArrayList<Flair>, ArrayList<Flair>> {
|
||||||
private String response;
|
private String response;
|
||||||
private ParseFlairsAsyncTaskListener parseFlairsAsyncTaskListener;
|
private ParseFlairsAsyncTaskListener parseFlairsAsyncTaskListener;
|
||||||
|
|
||||||
ParseFlairsAsyncTask(String response, ParseFlairsAsyncTaskListener parseFlairsAsyncTaskListener) {
|
ParseFlairsAsyncTask(String response, ParseFlairsAsyncTaskListener parseFlairsAsyncTaskListener) {
|
||||||
this.response = response;
|
this.response = response;
|
||||||
this.parseFlairsAsyncTaskListener = parseFlairsAsyncTaskListener;
|
this.parseFlairsAsyncTaskListener = parseFlairsAsyncTaskListener;
|
||||||
@ -73,7 +68,7 @@ public class FetchFlairs {
|
|||||||
try {
|
try {
|
||||||
JSONArray jsonArray = new JSONArray(response);
|
JSONArray jsonArray = new JSONArray(response);
|
||||||
ArrayList<Flair> flairs = new ArrayList<>();
|
ArrayList<Flair> flairs = new ArrayList<>();
|
||||||
for(int i = 0; i < jsonArray.length(); i++) {
|
for (int i = 0; i < jsonArray.length(); i++) {
|
||||||
String id = jsonArray.getJSONObject(i).getString(JSONUtils.ID_KEY);
|
String id = jsonArray.getJSONObject(i).getString(JSONUtils.ID_KEY);
|
||||||
String text = jsonArray.getJSONObject(i).getString(JSONUtils.TEXT_KEY);
|
String text = jsonArray.getJSONObject(i).getString(JSONUtils.TEXT_KEY);
|
||||||
boolean editable = jsonArray.getJSONObject(i).getBoolean(JSONUtils.TEXT_EDITABLE_KEY);
|
boolean editable = jsonArray.getJSONObject(i).getBoolean(JSONUtils.TEXT_EDITABLE_KEY);
|
||||||
@ -89,11 +84,17 @@ public class FetchFlairs {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(ArrayList<Flair> strings) {
|
protected void onPostExecute(ArrayList<Flair> strings) {
|
||||||
if(strings != null) {
|
if (strings != null) {
|
||||||
parseFlairsAsyncTaskListener.parseSuccessful(strings);
|
parseFlairsAsyncTaskListener.parseSuccessful(strings);
|
||||||
} else {
|
} else {
|
||||||
parseFlairsAsyncTaskListener.parseFailed();
|
parseFlairsAsyncTaskListener.parseFailed();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface ParseFlairsAsyncTaskListener {
|
||||||
|
void parseSuccessful(ArrayList<Flair> flairs);
|
||||||
|
|
||||||
|
void parseFailed();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,11 +21,6 @@ import retrofit2.Retrofit;
|
|||||||
|
|
||||||
public class FetchMessages {
|
public class FetchMessages {
|
||||||
|
|
||||||
interface FetchMessagesListener {
|
|
||||||
void fetchSuccess(ArrayList<Message> messages, @Nullable String after);
|
|
||||||
void fetchFailed();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static final String WHERE_INBOX = "inbox";
|
public static final String WHERE_INBOX = "inbox";
|
||||||
public static final String WHERE_UNREAD = "unread";
|
public static final String WHERE_UNREAD = "unread";
|
||||||
public static final String WHERE_SENT = "sent";
|
public static final String WHERE_SENT = "sent";
|
||||||
@ -37,7 +32,7 @@ public class FetchMessages {
|
|||||||
.enqueue(new Callback<String>() {
|
.enqueue(new Callback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
if(response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
new ParseMessageAsnycTask(response.body(), locale, fetchMessagesListener::fetchSuccess).execute();
|
new ParseMessageAsnycTask(response.body(), locale, fetchMessagesListener::fetchSuccess).execute();
|
||||||
} else {
|
} else {
|
||||||
fetchMessagesListener.fetchFailed();
|
fetchMessagesListener.fetchFailed();
|
||||||
@ -62,7 +57,7 @@ public class FetchMessages {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ArrayList<Message> messages = new ArrayList<>();
|
ArrayList<Message> messages = new ArrayList<>();
|
||||||
for(int i = 0; i < messageArray.length(); i++) {
|
for (int i = 0; i < messageArray.length(); i++) {
|
||||||
try {
|
try {
|
||||||
JSONObject messageJSON = messageArray.getJSONObject(i);
|
JSONObject messageJSON = messageArray.getJSONObject(i);
|
||||||
String kind = messageJSON.getString(JSONUtils.KIND_KEY);
|
String kind = messageJSON.getString(JSONUtils.KIND_KEY);
|
||||||
@ -100,18 +95,19 @@ public class FetchMessages {
|
|||||||
return messages;
|
return messages;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class ParseMessageAsnycTask extends AsyncTask<Void, Void, Void> {
|
interface FetchMessagesListener {
|
||||||
|
void fetchSuccess(ArrayList<Message> messages, @Nullable String after);
|
||||||
|
|
||||||
interface ParseMessageAsyncTaskListener {
|
void fetchFailed();
|
||||||
void parseSuccess(ArrayList<Message> messages, @Nullable String after);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static class ParseMessageAsnycTask extends AsyncTask<Void, Void, Void> {
|
||||||
|
|
||||||
private String response;
|
private String response;
|
||||||
private Locale locale;
|
private Locale locale;
|
||||||
private ArrayList<Message> messages;
|
private ArrayList<Message> messages;
|
||||||
private String after;
|
private String after;
|
||||||
private ParseMessageAsyncTaskListener parseMessageAsyncTaskListener;
|
private ParseMessageAsyncTaskListener parseMessageAsyncTaskListener;
|
||||||
|
|
||||||
ParseMessageAsnycTask(String response, Locale locale, ParseMessageAsyncTaskListener parseMessageAsnycTaskListener) {
|
ParseMessageAsnycTask(String response, Locale locale, ParseMessageAsyncTaskListener parseMessageAsnycTaskListener) {
|
||||||
this.response = response;
|
this.response = response;
|
||||||
this.locale = locale;
|
this.locale = locale;
|
||||||
@ -135,5 +131,9 @@ public class FetchMessages {
|
|||||||
super.onPostExecute(aVoid);
|
super.onPostExecute(aVoid);
|
||||||
parseMessageAsyncTaskListener.parseSuccess(messages, after);
|
parseMessageAsyncTaskListener.parseSuccess(messages, after);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface ParseMessageAsyncTaskListener {
|
||||||
|
void parseSuccess(ArrayList<Message> messages, @Nullable String after);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package ml.docilealligator.infinityforreddit;
|
package ml.docilealligator.infinityforreddit;
|
||||||
|
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
@ -10,11 +8,6 @@ import retrofit2.Retrofit;
|
|||||||
|
|
||||||
public class FetchMyInfo {
|
public class FetchMyInfo {
|
||||||
|
|
||||||
public interface FetchUserMyListener {
|
|
||||||
void onFetchMyInfoSuccess(String response);
|
|
||||||
void onFetchMyInfoFail();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void fetchAccountInfo(final Retrofit retrofit, String accessToken,
|
public static void fetchAccountInfo(final Retrofit retrofit, String accessToken,
|
||||||
final FetchUserMyListener fetchUserMyListener) {
|
final FetchUserMyListener fetchUserMyListener) {
|
||||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||||
@ -23,7 +16,7 @@ public class FetchMyInfo {
|
|||||||
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()) {
|
||||||
fetchUserMyListener.onFetchMyInfoSuccess(response.body());
|
fetchUserMyListener.onFetchMyInfoSuccess(response.body());
|
||||||
} else {
|
} else {
|
||||||
fetchUserMyListener.onFetchMyInfoFail();
|
fetchUserMyListener.onFetchMyInfoFail();
|
||||||
@ -36,4 +29,10 @@ public class FetchMyInfo {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface FetchUserMyListener {
|
||||||
|
void onFetchMyInfoSuccess(String response);
|
||||||
|
|
||||||
|
void onFetchMyInfoFail();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,14 +10,9 @@ import retrofit2.Response;
|
|||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
public class FetchPost {
|
public class FetchPost {
|
||||||
public interface FetchPostListener {
|
|
||||||
void fetchPostSuccess(Post post);
|
|
||||||
void fetchPostFailed();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void fetchPost(Retrofit retrofit, String id, String accessToken, Locale locale, FetchPostListener fetchPostListener) {
|
public static void fetchPost(Retrofit retrofit, String id, String accessToken, Locale locale, FetchPostListener fetchPostListener) {
|
||||||
Call<String> postCall;
|
Call<String> postCall;
|
||||||
if(accessToken == null) {
|
if (accessToken == null) {
|
||||||
postCall = retrofit.create(RedditAPI.class).getPost(id);
|
postCall = retrofit.create(RedditAPI.class).getPost(id);
|
||||||
} else {
|
} else {
|
||||||
postCall = retrofit.create(RedditAPI.class).getPostOauth(id, RedditUtils.getOAuthHeader(accessToken));
|
postCall = retrofit.create(RedditAPI.class).getPostOauth(id, RedditUtils.getOAuthHeader(accessToken));
|
||||||
@ -25,7 +20,7 @@ public class FetchPost {
|
|||||||
postCall.enqueue(new Callback<String>() {
|
postCall.enqueue(new Callback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
if(response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
ParsePost.parsePost(response.body(), locale, new ParsePost.ParsePostListener() {
|
ParsePost.parsePost(response.body(), locale, new ParsePost.ParsePostListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParsePostSuccess(Post post) {
|
public void onParsePostSuccess(Post post) {
|
||||||
@ -48,4 +43,10 @@ public class FetchPost {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface FetchPostListener {
|
||||||
|
void fetchPostSuccess(Post post);
|
||||||
|
|
||||||
|
void fetchPostFailed();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,16 +11,6 @@ import retrofit2.Response;
|
|||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
public class FetchSubredditData {
|
public class FetchSubredditData {
|
||||||
public interface FetchSubredditDataListener {
|
|
||||||
void onFetchSubredditDataSuccess(SubredditData subredditData, int nCurrentOnlineSubscribers);
|
|
||||||
void onFetchSubredditDataFail();
|
|
||||||
}
|
|
||||||
|
|
||||||
interface FetchSubredditListingDataListener {
|
|
||||||
void onFetchSubredditListingDataSuccess(ArrayList<SubredditData> subredditData, String after);
|
|
||||||
void onFetchSubredditListingDataFail();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void fetchSubredditData(Retrofit retrofit, String subredditName, final FetchSubredditDataListener fetchSubredditDataListener) {
|
public static void fetchSubredditData(Retrofit retrofit, String subredditName, final FetchSubredditDataListener fetchSubredditDataListener) {
|
||||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||||
|
|
||||||
@ -28,7 +18,7 @@ public class FetchSubredditData {
|
|||||||
subredditData.enqueue(new Callback<String>() {
|
subredditData.enqueue(new Callback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
if(response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
ParseSubredditData.parseSubredditData(response.body(), new ParseSubredditData.ParseSubredditDataListener() {
|
ParseSubredditData.parseSubredditData(response.body(), new ParseSubredditData.ParseSubredditDataListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParseSubredditDataSuccess(SubredditData subredditData, int nCurrentOnlineSubscribers) {
|
public void onParseSubredditDataSuccess(SubredditData subredditData, int nCurrentOnlineSubscribers) {
|
||||||
@ -60,7 +50,7 @@ public class FetchSubredditData {
|
|||||||
subredditDataCall.enqueue(new Callback<String>() {
|
subredditDataCall.enqueue(new Callback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
if(response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
ParseSubredditData.parseSubredditListingData(response.body(), new ParseSubredditData.ParseSubredditListingDataListener() {
|
ParseSubredditData.parseSubredditListingData(response.body(), new ParseSubredditData.ParseSubredditListingDataListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParseSubredditListingDataSuccess(ArrayList<SubredditData> subredditData, String after) {
|
public void onParseSubredditListingDataSuccess(ArrayList<SubredditData> subredditData, String after) {
|
||||||
@ -83,4 +73,16 @@ public class FetchSubredditData {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface FetchSubredditDataListener {
|
||||||
|
void onFetchSubredditDataSuccess(SubredditData subredditData, int nCurrentOnlineSubscribers);
|
||||||
|
|
||||||
|
void onFetchSubredditDataFail();
|
||||||
|
}
|
||||||
|
|
||||||
|
interface FetchSubredditListingDataListener {
|
||||||
|
void onFetchSubredditListingDataSuccess(ArrayList<SubredditData> subredditData, String after);
|
||||||
|
|
||||||
|
void onFetchSubredditListingDataFail();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,13 +13,6 @@ import retrofit2.Response;
|
|||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
public class FetchSubscribedThing {
|
public class FetchSubscribedThing {
|
||||||
public interface FetchSubscribedThingListener {
|
|
||||||
void onFetchSubscribedThingSuccess(ArrayList<SubscribedSubredditData> subscribedSubredditData,
|
|
||||||
ArrayList<SubscribedUserData> subscribedUserData,
|
|
||||||
ArrayList<SubredditData> subredditData);
|
|
||||||
void onFetchSubscribedThingFail();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void fetchSubscribedThing(final Retrofit retrofit, String accessToken, String accountName,
|
public static void fetchSubscribedThing(final Retrofit retrofit, String accessToken, String accountName,
|
||||||
final String lastItem, final ArrayList<SubscribedSubredditData> subscribedSubredditData,
|
final String lastItem, final ArrayList<SubscribedSubredditData> subscribedSubredditData,
|
||||||
final ArrayList<SubscribedUserData> subscribedUserData,
|
final ArrayList<SubscribedUserData> subscribedUserData,
|
||||||
@ -31,7 +24,7 @@ public class FetchSubscribedThing {
|
|||||||
subredditDataCall.enqueue(new Callback<String>() {
|
subredditDataCall.enqueue(new Callback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
if(response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
ParseSubscribedThing.parseSubscribedSubreddits(response.body(), accountName,
|
ParseSubscribedThing.parseSubscribedSubreddits(response.body(), accountName,
|
||||||
subscribedSubredditData, subscribedUserData, subredditData,
|
subscribedSubredditData, subscribedUserData, subredditData,
|
||||||
new ParseSubscribedThing.ParseSubscribedSubredditsListener() {
|
new ParseSubscribedThing.ParseSubscribedSubredditsListener() {
|
||||||
@ -41,7 +34,7 @@ public class FetchSubscribedThing {
|
|||||||
ArrayList<SubscribedUserData> subscribedUserData,
|
ArrayList<SubscribedUserData> subscribedUserData,
|
||||||
ArrayList<SubredditData> subredditData,
|
ArrayList<SubredditData> subredditData,
|
||||||
String lastItem) {
|
String lastItem) {
|
||||||
if(lastItem.equals("null")) {
|
if (lastItem.equals("null")) {
|
||||||
fetchSubscribedThingListener.onFetchSubscribedThingSuccess(
|
fetchSubscribedThingListener.onFetchSubscribedThingSuccess(
|
||||||
subscribedSubredditData, subscribedUserData, subredditData);
|
subscribedSubredditData, subscribedUserData, subredditData);
|
||||||
} else {
|
} else {
|
||||||
@ -67,4 +60,12 @@ public class FetchSubscribedThing {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface FetchSubscribedThingListener {
|
||||||
|
void onFetchSubscribedThingSuccess(ArrayList<SubscribedSubredditData> subscribedSubredditData,
|
||||||
|
ArrayList<SubscribedUserData> subscribedUserData,
|
||||||
|
ArrayList<SubredditData> subredditData);
|
||||||
|
|
||||||
|
void onFetchSubscribedThingFail();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,16 +10,6 @@ import retrofit2.Callback;
|
|||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
public class FetchUserData {
|
public class FetchUserData {
|
||||||
public interface FetchUserDataListener {
|
|
||||||
void onFetchUserDataSuccess(UserData userData);
|
|
||||||
void onFetchUserDataFailed();
|
|
||||||
}
|
|
||||||
|
|
||||||
public interface FetchUserListingDataListener {
|
|
||||||
void onFetchUserListingDataSuccess(ArrayList<UserData> userData, String after);
|
|
||||||
void onFetchUserListingDataFailed();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void fetchUserData(Retrofit retrofit, String userName, FetchUserDataListener fetchUserDataListener) {
|
public static void fetchUserData(Retrofit retrofit, String userName, FetchUserDataListener fetchUserDataListener) {
|
||||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||||
|
|
||||||
@ -27,7 +17,7 @@ public class FetchUserData {
|
|||||||
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(response.body(), new ParseUserData.ParseUserDataListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParseUserDataSuccess(UserData userData) {
|
public void onParseUserDataSuccess(UserData userData) {
|
||||||
@ -59,7 +49,7 @@ public class FetchUserData {
|
|||||||
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.parseUserListingData(response.body(), new ParseUserData.ParseUserListingDataListener() {
|
ParseUserData.parseUserListingData(response.body(), new ParseUserData.ParseUserListingDataListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParseUserListingDataSuccess(ArrayList<UserData> userData, String after) {
|
public void onParseUserListingDataSuccess(ArrayList<UserData> userData, String after) {
|
||||||
@ -82,4 +72,16 @@ public class FetchUserData {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface FetchUserDataListener {
|
||||||
|
void onFetchUserDataSuccess(UserData userData);
|
||||||
|
|
||||||
|
void onFetchUserDataFailed();
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface FetchUserListingDataListener {
|
||||||
|
void onFetchUserListingDataSuccess(ArrayList<UserData> userData, String after);
|
||||||
|
|
||||||
|
void onFetchUserListingDataFailed();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,17 @@ import android.os.Parcel;
|
|||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
|
|
||||||
public class Flair implements Parcelable {
|
public class Flair implements Parcelable {
|
||||||
|
public static final Creator<Flair> CREATOR = new Creator<Flair>() {
|
||||||
|
@Override
|
||||||
|
public Flair createFromParcel(Parcel in) {
|
||||||
|
return new Flair(in);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Flair[] newArray(int size) {
|
||||||
|
return new Flair[size];
|
||||||
|
}
|
||||||
|
};
|
||||||
private String id;
|
private String id;
|
||||||
private String text;
|
private String text;
|
||||||
private boolean editable;
|
private boolean editable;
|
||||||
@ -20,18 +31,6 @@ public class Flair implements Parcelable {
|
|||||||
editable = in.readByte() != 0;
|
editable = in.readByte() != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final Creator<Flair> CREATOR = new Creator<Flair>() {
|
|
||||||
@Override
|
|
||||||
public Flair createFromParcel(Parcel in) {
|
|
||||||
return new Flair(in);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Flair[] newArray(int size) {
|
|
||||||
return new Flair[size];
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public String getId() {
|
public String getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,11 @@ public enum FontStyle {
|
|||||||
private int resId;
|
private int resId;
|
||||||
private String title;
|
private String title;
|
||||||
|
|
||||||
|
FontStyle(int resId, String title) {
|
||||||
|
this.resId = resId;
|
||||||
|
this.title = title;
|
||||||
|
}
|
||||||
|
|
||||||
public int getResId() {
|
public int getResId() {
|
||||||
return resId;
|
return resId;
|
||||||
}
|
}
|
||||||
@ -16,9 +21,4 @@ public enum FontStyle {
|
|||||||
public String getTitle() {
|
public String getTitle() {
|
||||||
return title;
|
return title;
|
||||||
}
|
}
|
||||||
|
|
||||||
FontStyle(int resId, String title) {
|
|
||||||
this.resId = resId;
|
|
||||||
this.title = title;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -55,33 +55,32 @@ public class CommentsListingFragment extends Fragment implements FragmentCommuni
|
|||||||
private static final String NULL_ACCESS_TOKEN_STATE = "NATS";
|
private static final String NULL_ACCESS_TOKEN_STATE = "NATS";
|
||||||
private static final String ACCESS_TOKEN_STATE = "ATS";
|
private static final String ACCESS_TOKEN_STATE = "ATS";
|
||||||
|
|
||||||
@BindView(R.id.coordinator_layout_comments_listing_fragment) CoordinatorLayout mCoordinatorLayout;
|
@BindView(R.id.coordinator_layout_comments_listing_fragment)
|
||||||
@BindView(R.id.recycler_view_comments_listing_fragment) RecyclerView mCommentRecyclerView;
|
CoordinatorLayout mCoordinatorLayout;
|
||||||
@BindView(R.id.progress_bar_comments_listing_fragment) CircleProgressBar mProgressBar;
|
@BindView(R.id.recycler_view_comments_listing_fragment)
|
||||||
@BindView(R.id.fetch_comments_info_linear_layout_comments_listing_fragment) LinearLayout mFetchCommentInfoLinearLayout;
|
RecyclerView mCommentRecyclerView;
|
||||||
@BindView(R.id.fetch_comments_info_image_view_comments_listing_fragment) ImageView mFetchCommentInfoImageView;
|
@BindView(R.id.progress_bar_comments_listing_fragment)
|
||||||
@BindView(R.id.fetch_comments_info_text_view_comments_listing_fragment) TextView mFetchCommentInfoTextView;
|
CircleProgressBar mProgressBar;
|
||||||
|
@BindView(R.id.fetch_comments_info_linear_layout_comments_listing_fragment)
|
||||||
private boolean mNullAccessToken = false;
|
LinearLayout mFetchCommentInfoLinearLayout;
|
||||||
private String mAccessToken;
|
@BindView(R.id.fetch_comments_info_image_view_comments_listing_fragment)
|
||||||
|
ImageView mFetchCommentInfoImageView;
|
||||||
private RequestManager mGlide;
|
@BindView(R.id.fetch_comments_info_text_view_comments_listing_fragment)
|
||||||
|
TextView mFetchCommentInfoTextView;
|
||||||
private Activity activity;
|
|
||||||
|
|
||||||
private CommentsListingRecyclerViewAdapter mAdapter;
|
|
||||||
|
|
||||||
CommentViewModel mCommentViewModel;
|
CommentViewModel mCommentViewModel;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@Named("no_oauth")
|
@Named("no_oauth")
|
||||||
Retrofit mRetrofit;
|
Retrofit mRetrofit;
|
||||||
|
@Inject
|
||||||
@Inject @Named("oauth")
|
@Named("oauth")
|
||||||
Retrofit mOauthRetrofit;
|
Retrofit mOauthRetrofit;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
|
private boolean mNullAccessToken = false;
|
||||||
|
private String mAccessToken;
|
||||||
|
private RequestManager mGlide;
|
||||||
|
private Activity activity;
|
||||||
|
private CommentsListingRecyclerViewAdapter mAdapter;
|
||||||
|
|
||||||
public CommentsListingFragment() {
|
public CommentsListingFragment() {
|
||||||
// Required empty public constructor
|
// Required empty public constructor
|
||||||
@ -128,7 +127,7 @@ public class CommentsListingFragment extends Fragment implements FragmentCommuni
|
|||||||
|
|
||||||
private void getCurrentAccountAndBindView(Resources resources) {
|
private void getCurrentAccountAndBindView(Resources resources) {
|
||||||
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
||||||
if(account == null) {
|
if (account == null) {
|
||||||
mNullAccessToken = true;
|
mNullAccessToken = true;
|
||||||
} else {
|
} else {
|
||||||
mAccessToken = account.getAccessToken();
|
mAccessToken = account.getAccessToken();
|
||||||
@ -150,7 +149,7 @@ public class CommentsListingFragment extends Fragment implements FragmentCommuni
|
|||||||
|
|
||||||
CommentViewModel.Factory factory;
|
CommentViewModel.Factory factory;
|
||||||
|
|
||||||
if(mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
factory = new CommentViewModel.Factory(mRetrofit,
|
factory = new CommentViewModel.Factory(mRetrofit,
|
||||||
resources.getConfiguration().locale, mAccessToken, username, PostDataSource.SORT_TYPE_NEW,
|
resources.getConfiguration().locale, mAccessToken, username, PostDataSource.SORT_TYPE_NEW,
|
||||||
getArguments().getBoolean(EXTRA_ARE_SAVED_COMMENTS));
|
getArguments().getBoolean(EXTRA_ARE_SAVED_COMMENTS));
|
||||||
@ -165,7 +164,7 @@ public class CommentsListingFragment extends Fragment implements FragmentCommuni
|
|||||||
|
|
||||||
mCommentViewModel.hasComment().observe(this, hasComment -> {
|
mCommentViewModel.hasComment().observe(this, hasComment -> {
|
||||||
mProgressBar.setVisibility(View.GONE);
|
mProgressBar.setVisibility(View.GONE);
|
||||||
if(hasComment) {
|
if (hasComment) {
|
||||||
mFetchCommentInfoLinearLayout.setVisibility(View.GONE);
|
mFetchCommentInfoLinearLayout.setVisibility(View.GONE);
|
||||||
} else {
|
} else {
|
||||||
mFetchCommentInfoLinearLayout.setOnClickListener(view -> {
|
mFetchCommentInfoLinearLayout.setOnClickListener(view -> {
|
||||||
@ -176,9 +175,9 @@ public class CommentsListingFragment extends Fragment implements FragmentCommuni
|
|||||||
});
|
});
|
||||||
|
|
||||||
mCommentViewModel.getInitialLoadingState().observe(this, networkState -> {
|
mCommentViewModel.getInitialLoadingState().observe(this, networkState -> {
|
||||||
if(networkState.getStatus().equals(NetworkState.Status.SUCCESS)) {
|
if (networkState.getStatus().equals(NetworkState.Status.SUCCESS)) {
|
||||||
mProgressBar.setVisibility(View.GONE);
|
mProgressBar.setVisibility(View.GONE);
|
||||||
} else if(networkState.getStatus().equals(NetworkState.Status.FAILED)) {
|
} else if (networkState.getStatus().equals(NetworkState.Status.FAILED)) {
|
||||||
mProgressBar.setVisibility(View.GONE);
|
mProgressBar.setVisibility(View.GONE);
|
||||||
mFetchCommentInfoLinearLayout.setOnClickListener(view -> refresh());
|
mFetchCommentInfoLinearLayout.setOnClickListener(view -> refresh());
|
||||||
showErrorView(R.string.load_comments_failed);
|
showErrorView(R.string.load_comments_failed);
|
||||||
@ -215,7 +214,7 @@ public class CommentsListingFragment extends Fragment implements FragmentCommuni
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showErrorView(int stringResId) {
|
private void showErrorView(int stringResId) {
|
||||||
if(activity != null && isAdded()) {
|
if (activity != null && isAdded()) {
|
||||||
mProgressBar.setVisibility(View.GONE);
|
mProgressBar.setVisibility(View.GONE);
|
||||||
mFetchCommentInfoLinearLayout.setVisibility(View.VISIBLE);
|
mFetchCommentInfoLinearLayout.setVisibility(View.VISIBLE);
|
||||||
mFetchCommentInfoTextView.setText(stringResId);
|
mFetchCommentInfoTextView.setText(stringResId);
|
||||||
|
@ -36,36 +36,29 @@ import retrofit2.Retrofit;
|
|||||||
*/
|
*/
|
||||||
public class FlairBottomSheetFragment extends BottomSheetDialogFragment {
|
public class FlairBottomSheetFragment extends BottomSheetDialogFragment {
|
||||||
|
|
||||||
public interface FlairSelectionCallback {
|
|
||||||
void flairSelected(Flair flair);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static final String EXTRA_ACCESS_TOKEN = "EAT";
|
public static final String EXTRA_ACCESS_TOKEN = "EAT";
|
||||||
public static final String EXTRA_SUBREDDIT_NAME = "ESN";
|
public static final String EXTRA_SUBREDDIT_NAME = "ESN";
|
||||||
|
@BindView(R.id.progress_bar_flair_bottom_sheet_fragment)
|
||||||
@BindView(R.id.progress_bar_flair_bottom_sheet_fragment) ProgressBar progressBar;
|
ProgressBar progressBar;
|
||||||
@BindView(R.id.error_text_view_flair_bottom_sheet_fragment) TextView errorTextView;
|
@BindView(R.id.error_text_view_flair_bottom_sheet_fragment)
|
||||||
@BindView(R.id.recycler_view_bottom_sheet_fragment) RecyclerView recyclerView;
|
TextView errorTextView;
|
||||||
|
@BindView(R.id.recycler_view_bottom_sheet_fragment)
|
||||||
private String mAccessToken;
|
RecyclerView recyclerView;
|
||||||
private String mSubredditName;
|
|
||||||
|
|
||||||
private Activity mActivity;
|
|
||||||
private FlairBottomSheetRecyclerViewAdapter mAdapter;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@Named("oauth")
|
@Named("oauth")
|
||||||
Retrofit mOauthRetrofit;
|
Retrofit mOauthRetrofit;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@Named("no_oauth")
|
@Named("no_oauth")
|
||||||
Retrofit mRetrofit;
|
Retrofit mRetrofit;
|
||||||
|
private String mAccessToken;
|
||||||
|
private String mSubredditName;
|
||||||
|
private Activity mActivity;
|
||||||
|
private FlairBottomSheetRecyclerViewAdapter mAdapter;
|
||||||
|
|
||||||
public FlairBottomSheetFragment() {
|
public FlairBottomSheetFragment() {
|
||||||
// Required empty public constructor
|
// Required empty public constructor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
|
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
@ -104,7 +97,7 @@ public class FlairBottomSheetFragment extends BottomSheetDialogFragment {
|
|||||||
@Override
|
@Override
|
||||||
public void fetchSuccessful(ArrayList<Flair> flairs) {
|
public void fetchSuccessful(ArrayList<Flair> flairs) {
|
||||||
progressBar.setVisibility(View.GONE);
|
progressBar.setVisibility(View.GONE);
|
||||||
if(flairs == null || flairs.size() == 0) {
|
if (flairs == null || flairs.size() == 0) {
|
||||||
errorTextView.setVisibility(View.VISIBLE);
|
errorTextView.setVisibility(View.VISIBLE);
|
||||||
errorTextView.setText(R.string.no_flair);
|
errorTextView.setText(R.string.no_flair);
|
||||||
} else {
|
} else {
|
||||||
@ -122,4 +115,8 @@ public class FlairBottomSheetFragment extends BottomSheetDialogFragment {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface FlairSelectionCallback {
|
||||||
|
void flairSelected(Flair flair);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,13 +22,13 @@ import com.bumptech.glide.RequestManager;
|
|||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import butterknife.BindView;
|
||||||
|
import butterknife.ButterKnife;
|
||||||
import ml.docilealligator.infinityforreddit.Adapter.FollowedUsersRecyclerViewAdapter;
|
import ml.docilealligator.infinityforreddit.Adapter.FollowedUsersRecyclerViewAdapter;
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
import ml.docilealligator.infinityforreddit.SubscribedUserDatabase.SubscribedUserViewModel;
|
import ml.docilealligator.infinityforreddit.SubscribedUserDatabase.SubscribedUserViewModel;
|
||||||
import butterknife.BindView;
|
|
||||||
import butterknife.ButterKnife;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -38,23 +38,22 @@ public class FollowedUsersListingFragment extends Fragment {
|
|||||||
|
|
||||||
public static final String EXTRA_ACCOUNT_NAME = "EAN";
|
public static final String EXTRA_ACCOUNT_NAME = "EAN";
|
||||||
|
|
||||||
@BindView(R.id.recycler_view_followed_users_listing_fragment) RecyclerView mRecyclerView;
|
@BindView(R.id.recycler_view_followed_users_listing_fragment)
|
||||||
@BindView(R.id.no_subscriptions_linear_layout_followed_users_listing_fragment) LinearLayout mLinearLayout;
|
RecyclerView mRecyclerView;
|
||||||
@BindView(R.id.no_subscriptions_image_view_followed_users_listing_fragment) ImageView mImageView;
|
@BindView(R.id.no_subscriptions_linear_layout_followed_users_listing_fragment)
|
||||||
|
LinearLayout mLinearLayout;
|
||||||
|
@BindView(R.id.no_subscriptions_image_view_followed_users_listing_fragment)
|
||||||
|
ImageView mImageView;
|
||||||
|
@Inject
|
||||||
|
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
private Activity mActivity;
|
private Activity mActivity;
|
||||||
|
|
||||||
private RequestManager mGlide;
|
private RequestManager mGlide;
|
||||||
|
|
||||||
private SubscribedUserViewModel mSubscribedUserViewModel;
|
private SubscribedUserViewModel mSubscribedUserViewModel;
|
||||||
|
|
||||||
public FollowedUsersListingFragment() {
|
public FollowedUsersListingFragment() {
|
||||||
// Required empty public constructor
|
// Required empty public constructor
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject
|
|
||||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
|
@ -32,14 +32,14 @@ public class ModifyCommentBottomSheetFragment extends RoundedBottomSheetDialogFr
|
|||||||
public static final String EXTRA_COMMENT_CONTENT = "ECC";
|
public static final String EXTRA_COMMENT_CONTENT = "ECC";
|
||||||
public static final String EXTRA_ACCESS_TOKEN = "EAT";
|
public static final String EXTRA_ACCESS_TOKEN = "EAT";
|
||||||
public static final String EXTRA_POSITION = "EP";
|
public static final String EXTRA_POSITION = "EP";
|
||||||
|
@BindView(R.id.edit_text_view_modify_comment_bottom_sheet_fragment)
|
||||||
|
TextView editTextView;
|
||||||
|
@BindView(R.id.delete_text_view_modify_comment_bottom_sheet_fragment)
|
||||||
|
TextView deleteTextView;
|
||||||
public ModifyCommentBottomSheetFragment() {
|
public ModifyCommentBottomSheetFragment() {
|
||||||
// Required empty public constructor
|
// Required empty public constructor
|
||||||
}
|
}
|
||||||
|
|
||||||
@BindView(R.id.edit_text_view_modify_comment_bottom_sheet_fragment) TextView editTextView;
|
|
||||||
@BindView(R.id.delete_text_view_modify_comment_bottom_sheet_fragment) TextView deleteTextView;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
@ -48,7 +48,7 @@ public class ModifyCommentBottomSheetFragment extends RoundedBottomSheetDialogFr
|
|||||||
|
|
||||||
Activity activity = getActivity();
|
Activity activity = getActivity();
|
||||||
|
|
||||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
|
||||||
&& (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
&& (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
rootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
rootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
@ -64,7 +64,7 @@ public class ModifyCommentBottomSheetFragment extends RoundedBottomSheetDialogFr
|
|||||||
intent.putExtra(EditCommentActivity.EXTRA_FULLNAME, fullName);
|
intent.putExtra(EditCommentActivity.EXTRA_FULLNAME, fullName);
|
||||||
intent.putExtra(EditCommentActivity.EXTRA_CONTENT, content);
|
intent.putExtra(EditCommentActivity.EXTRA_CONTENT, content);
|
||||||
intent.putExtra(EditCommentActivity.EXTRA_POSITION, bundle.getInt(EXTRA_POSITION));
|
intent.putExtra(EditCommentActivity.EXTRA_POSITION, bundle.getInt(EXTRA_POSITION));
|
||||||
if(activity instanceof ViewPostDetailActivity) {
|
if (activity instanceof ViewPostDetailActivity) {
|
||||||
activity.startActivityForResult(intent, ViewPostDetailActivity.EDIT_COMMENT_REQUEST_CODE);
|
activity.startActivityForResult(intent, ViewPostDetailActivity.EDIT_COMMENT_REQUEST_CODE);
|
||||||
} else {
|
} else {
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
@ -75,9 +75,9 @@ public class ModifyCommentBottomSheetFragment extends RoundedBottomSheetDialogFr
|
|||||||
|
|
||||||
deleteTextView.setOnClickListener(view -> {
|
deleteTextView.setOnClickListener(view -> {
|
||||||
dismiss();
|
dismiss();
|
||||||
if(activity instanceof ViewPostDetailActivity) {
|
if (activity instanceof ViewPostDetailActivity) {
|
||||||
((ViewPostDetailActivity) activity).deleteComment(fullName, bundle.getInt(EXTRA_POSITION));
|
((ViewPostDetailActivity) activity).deleteComment(fullName, bundle.getInt(EXTRA_POSITION));
|
||||||
} else if(activity instanceof ViewUserDetailActivity) {
|
} else if (activity instanceof ViewUserDetailActivity) {
|
||||||
((ViewUserDetailActivity) activity).deleteComment(fullName);
|
((ViewUserDetailActivity) activity).deleteComment(fullName);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -82,46 +82,42 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
private static final String IS_IN_LAZY_MODE_STATE = "IILMS";
|
private static final String IS_IN_LAZY_MODE_STATE = "IILMS";
|
||||||
private static final String RECYCLER_VIEW_POSITION_STATE = "RVPS";
|
private static final String RECYCLER_VIEW_POSITION_STATE = "RVPS";
|
||||||
|
|
||||||
@BindView(R.id.recycler_view_post_fragment) RecyclerView mPostRecyclerView;
|
@BindView(R.id.recycler_view_post_fragment)
|
||||||
@BindView(R.id.progress_bar_post_fragment) CircleProgressBar mProgressBar;
|
RecyclerView mPostRecyclerView;
|
||||||
@BindView(R.id.fetch_post_info_linear_layout_post_fragment) LinearLayout mFetchPostInfoLinearLayout;
|
@BindView(R.id.progress_bar_post_fragment)
|
||||||
@BindView(R.id.fetch_post_info_image_view_post_fragment) ImageView mFetchPostInfoImageView;
|
CircleProgressBar mProgressBar;
|
||||||
@BindView(R.id.fetch_post_info_text_view_post_fragment) TextView mFetchPostInfoTextView;
|
@BindView(R.id.fetch_post_info_linear_layout_post_fragment)
|
||||||
|
LinearLayout mFetchPostInfoLinearLayout;
|
||||||
|
@BindView(R.id.fetch_post_info_image_view_post_fragment)
|
||||||
|
ImageView mFetchPostInfoImageView;
|
||||||
|
@BindView(R.id.fetch_post_info_text_view_post_fragment)
|
||||||
|
TextView mFetchPostInfoTextView;
|
||||||
|
PostViewModel mPostViewModel;
|
||||||
|
@Inject
|
||||||
|
@Named("no_oauth")
|
||||||
|
Retrofit mRetrofit;
|
||||||
|
@Inject
|
||||||
|
@Named("oauth")
|
||||||
|
Retrofit mOauthRetrofit;
|
||||||
|
@Inject
|
||||||
|
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
|
@Inject
|
||||||
|
SharedPreferences mSharedPreferences;
|
||||||
private RequestManager mGlide;
|
private RequestManager mGlide;
|
||||||
|
|
||||||
private Activity activity;
|
private Activity activity;
|
||||||
private LinearLayoutManager mLinearLayoutManager;
|
private LinearLayoutManager mLinearLayoutManager;
|
||||||
private StaggeredGridLayoutManager mStaggeredGridLayoutManager;
|
private StaggeredGridLayoutManager mStaggeredGridLayoutManager;
|
||||||
|
|
||||||
private boolean isInLazyMode = false;
|
private boolean isInLazyMode = false;
|
||||||
private boolean isLazyModePaused = false;
|
private boolean isLazyModePaused = false;
|
||||||
private boolean hasPost = false;
|
private boolean hasPost = false;
|
||||||
|
|
||||||
private PostRecyclerViewAdapter mAdapter;
|
private PostRecyclerViewAdapter mAdapter;
|
||||||
private RecyclerView.SmoothScroller smoothScroller;
|
private RecyclerView.SmoothScroller smoothScroller;
|
||||||
|
|
||||||
PostViewModel mPostViewModel;
|
|
||||||
|
|
||||||
private Window window;
|
private Window window;
|
||||||
private Handler lazyModeHandler;
|
private Handler lazyModeHandler;
|
||||||
private LazyModeRunnable lazyModeRunnable;
|
private LazyModeRunnable lazyModeRunnable;
|
||||||
private CountDownTimer resumeLazyModeCountDownTimer;
|
private CountDownTimer resumeLazyModeCountDownTimer;
|
||||||
|
|
||||||
private float lazyModeInterval;
|
private float lazyModeInterval;
|
||||||
|
|
||||||
@Inject @Named("no_oauth")
|
|
||||||
Retrofit mRetrofit;
|
|
||||||
|
|
||||||
@Inject @Named("oauth")
|
|
||||||
Retrofit mOauthRetrofit;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
SharedPreferences mSharedPreferences;
|
|
||||||
|
|
||||||
public PostFragment() {
|
public PostFragment() {
|
||||||
// Required empty public constructor
|
// Required empty public constructor
|
||||||
}
|
}
|
||||||
@ -129,7 +125,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
if(mPostRecyclerView.getAdapter() != null) {
|
if (mPostRecyclerView.getAdapter() != null) {
|
||||||
((PostRecyclerViewAdapter) mPostRecyclerView.getAdapter()).setCanStartActivity(true);
|
((PostRecyclerViewAdapter) mPostRecyclerView.getAdapter()).setCanStartActivity(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -187,10 +183,10 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if(isInLazyMode && !isLazyModePaused) {
|
if (isInLazyMode && !isLazyModePaused) {
|
||||||
int nPosts = mAdapter.getItemCount();
|
int nPosts = mAdapter.getItemCount();
|
||||||
if(getCurrentPosition() == -1) {
|
if (getCurrentPosition() == -1) {
|
||||||
if(mLinearLayoutManager != null) {
|
if (mLinearLayoutManager != null) {
|
||||||
setCurrentPosition(mLinearLayoutManager.findFirstVisibleItemPosition());
|
setCurrentPosition(mLinearLayoutManager.findFirstVisibleItemPosition());
|
||||||
} else {
|
} else {
|
||||||
int[] into = new int[2];
|
int[] into = new int[2];
|
||||||
@ -198,10 +194,10 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(getCurrentPosition() != RecyclerView.NO_POSITION && nPosts > getCurrentPosition()) {
|
if (getCurrentPosition() != RecyclerView.NO_POSITION && nPosts > getCurrentPosition()) {
|
||||||
incrementCurrentPosition();
|
incrementCurrentPosition();
|
||||||
smoothScroller.setTargetPosition(getCurrentPosition());
|
smoothScroller.setTargetPosition(getCurrentPosition());
|
||||||
if(mLinearLayoutManager != null) {
|
if (mLinearLayoutManager != null) {
|
||||||
mLinearLayoutManager.startSmoothScroll(smoothScroller);
|
mLinearLayoutManager.startSmoothScroll(smoothScroller);
|
||||||
} else {
|
} else {
|
||||||
mStaggeredGridLayoutManager.startSmoothScroll(smoothScroller);
|
mStaggeredGridLayoutManager.startSmoothScroll(smoothScroller);
|
||||||
@ -224,26 +220,26 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if(savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
int recyclerViewPosition = savedInstanceState.getInt(RECYCLER_VIEW_POSITION_STATE);
|
int recyclerViewPosition = savedInstanceState.getInt(RECYCLER_VIEW_POSITION_STATE);
|
||||||
if(recyclerViewPosition > 0) {
|
if (recyclerViewPosition > 0) {
|
||||||
mPostRecyclerView.scrollToPosition(recyclerViewPosition);
|
mPostRecyclerView.scrollToPosition(recyclerViewPosition);
|
||||||
}
|
}
|
||||||
|
|
||||||
isInLazyMode = savedInstanceState.getBoolean(IS_IN_LAZY_MODE_STATE);
|
isInLazyMode = savedInstanceState.getBoolean(IS_IN_LAZY_MODE_STATE);
|
||||||
if(isInLazyMode) {
|
if (isInLazyMode) {
|
||||||
resumeLazyMode(false);
|
resumeLazyMode(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mPostRecyclerView.setOnTouchListener((view, motionEvent) -> {
|
mPostRecyclerView.setOnTouchListener((view, motionEvent) -> {
|
||||||
if(isInLazyMode) {
|
if (isInLazyMode) {
|
||||||
pauseLazyMode(true);
|
pauseLazyMode(true);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
if(activity instanceof MainActivity) {
|
if (activity instanceof MainActivity) {
|
||||||
mPostRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
mPostRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
|
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
|
||||||
@ -255,7 +251,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else if(activity instanceof ViewSubredditDetailActivity) {
|
} else if (activity instanceof ViewSubredditDetailActivity) {
|
||||||
mPostRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
mPostRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
|
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
|
||||||
@ -280,7 +276,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
|
|
||||||
PostViewModel.Factory factory;
|
PostViewModel.Factory factory;
|
||||||
|
|
||||||
if(postType == PostDataSource.TYPE_SEARCH) {
|
if (postType == PostDataSource.TYPE_SEARCH) {
|
||||||
String subredditName = getArguments().getString(EXTRA_NAME);
|
String subredditName = getArguments().getString(EXTRA_NAME);
|
||||||
String query = getArguments().getString(EXTRA_QUERY);
|
String query = getArguments().getString(EXTRA_QUERY);
|
||||||
|
|
||||||
@ -304,7 +300,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if(accessToken == null) {
|
if (accessToken == null) {
|
||||||
factory = new PostViewModel.Factory(mRetrofit, accessToken,
|
factory = new PostViewModel.Factory(mRetrofit, accessToken,
|
||||||
getResources().getConfiguration().locale, subredditName, query, postType,
|
getResources().getConfiguration().locale, subredditName, query, postType,
|
||||||
sortType, filter, nsfw);
|
sortType, filter, nsfw);
|
||||||
@ -313,7 +309,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
getResources().getConfiguration().locale, subredditName, query, postType,
|
getResources().getConfiguration().locale, subredditName, query, postType,
|
||||||
sortType, filter, nsfw);
|
sortType, filter, nsfw);
|
||||||
}
|
}
|
||||||
} else if(postType == PostDataSource.TYPE_SUBREDDIT) {
|
} else if (postType == PostDataSource.TYPE_SUBREDDIT) {
|
||||||
String subredditName = getArguments().getString(EXTRA_NAME);
|
String subredditName = getArguments().getString(EXTRA_NAME);
|
||||||
|
|
||||||
boolean displaySubredditName = subredditName != null && (subredditName.equals("popular") || subredditName.equals("all"));
|
boolean displaySubredditName = subredditName != null && (subredditName.equals("popular") || subredditName.equals("all"));
|
||||||
@ -336,7 +332,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if(accessToken == null) {
|
if (accessToken == null) {
|
||||||
factory = new PostViewModel.Factory(mRetrofit, accessToken,
|
factory = new PostViewModel.Factory(mRetrofit, accessToken,
|
||||||
getResources().getConfiguration().locale, subredditName, postType, sortType,
|
getResources().getConfiguration().locale, subredditName, postType, sortType,
|
||||||
filter, nsfw);
|
filter, nsfw);
|
||||||
@ -345,10 +341,10 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
getResources().getConfiguration().locale, subredditName, postType, sortType,
|
getResources().getConfiguration().locale, subredditName, postType, sortType,
|
||||||
filter, nsfw);
|
filter, nsfw);
|
||||||
}
|
}
|
||||||
} else if(postType == PostDataSource.TYPE_USER) {
|
} else if (postType == PostDataSource.TYPE_USER) {
|
||||||
String username = getArguments().getString(EXTRA_USER_NAME);
|
String username = getArguments().getString(EXTRA_USER_NAME);
|
||||||
String where = getArguments().getString(EXTRA_USER_WHERE);
|
String where = getArguments().getString(EXTRA_USER_WHERE);
|
||||||
if(where != null && where.equals(PostDataSource.USER_WHERE_SUBMITTED)) {
|
if (where != null && where.equals(PostDataSource.USER_WHERE_SUBMITTED)) {
|
||||||
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) mFetchPostInfoLinearLayout.getLayoutParams();
|
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) mFetchPostInfoLinearLayout.getLayoutParams();
|
||||||
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
|
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
|
||||||
mFetchPostInfoLinearLayout.setLayoutParams(params);
|
mFetchPostInfoLinearLayout.setLayoutParams(params);
|
||||||
@ -374,7 +370,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if(accessToken == null) {
|
if (accessToken == null) {
|
||||||
factory = new PostViewModel.Factory(mRetrofit, accessToken,
|
factory = new PostViewModel.Factory(mRetrofit, accessToken,
|
||||||
getResources().getConfiguration().locale, username, postType, sortType, where,
|
getResources().getConfiguration().locale, username, postType, sortType, where,
|
||||||
filter, nsfw);
|
filter, nsfw);
|
||||||
@ -415,22 +411,23 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
mPostViewModel.hasPost().observe(this, hasPost -> {
|
mPostViewModel.hasPost().observe(this, hasPost -> {
|
||||||
this.hasPost = hasPost;
|
this.hasPost = hasPost;
|
||||||
mProgressBar.setVisibility(View.GONE);
|
mProgressBar.setVisibility(View.GONE);
|
||||||
if(hasPost) {
|
if (hasPost) {
|
||||||
mFetchPostInfoLinearLayout.setVisibility(View.GONE);
|
mFetchPostInfoLinearLayout.setVisibility(View.GONE);
|
||||||
} else {
|
} else {
|
||||||
if(isInLazyMode) {
|
if (isInLazyMode) {
|
||||||
stopLazyMode();
|
stopLazyMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
mFetchPostInfoLinearLayout.setOnClickListener(view -> {});
|
mFetchPostInfoLinearLayout.setOnClickListener(view -> {
|
||||||
|
});
|
||||||
showErrorView(R.string.no_posts);
|
showErrorView(R.string.no_posts);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
mPostViewModel.getInitialLoadingState().observe(this, networkState -> {
|
mPostViewModel.getInitialLoadingState().observe(this, networkState -> {
|
||||||
if(networkState.getStatus().equals(NetworkState.Status.SUCCESS)) {
|
if (networkState.getStatus().equals(NetworkState.Status.SUCCESS)) {
|
||||||
mProgressBar.setVisibility(View.GONE);
|
mProgressBar.setVisibility(View.GONE);
|
||||||
} else if(networkState.getStatus().equals(NetworkState.Status.FAILED)) {
|
} else if (networkState.getStatus().equals(NetworkState.Status.FAILED)) {
|
||||||
mProgressBar.setVisibility(View.GONE);
|
mProgressBar.setVisibility(View.GONE);
|
||||||
mFetchPostInfoLinearLayout.setOnClickListener(view -> refresh());
|
mFetchPostInfoLinearLayout.setOnClickListener(view -> refresh());
|
||||||
showErrorView(R.string.load_posts_error);
|
showErrorView(R.string.load_posts_error);
|
||||||
@ -458,9 +455,9 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
public void onSaveInstanceState(@NonNull Bundle outState) {
|
public void onSaveInstanceState(@NonNull Bundle outState) {
|
||||||
super.onSaveInstanceState(outState);
|
super.onSaveInstanceState(outState);
|
||||||
outState.putBoolean(IS_IN_LAZY_MODE_STATE, isInLazyMode);
|
outState.putBoolean(IS_IN_LAZY_MODE_STATE, isInLazyMode);
|
||||||
if(mLinearLayoutManager != null) {
|
if (mLinearLayoutManager != null) {
|
||||||
outState.putInt(RECYCLER_VIEW_POSITION_STATE, mLinearLayoutManager.findFirstVisibleItemPosition());
|
outState.putInt(RECYCLER_VIEW_POSITION_STATE, mLinearLayoutManager.findFirstVisibleItemPosition());
|
||||||
} else if(mStaggeredGridLayoutManager != null) {
|
} else if (mStaggeredGridLayoutManager != null) {
|
||||||
int[] into = new int[2];
|
int[] into = new int[2];
|
||||||
outState.putInt(RECYCLER_VIEW_POSITION_STATE,
|
outState.putInt(RECYCLER_VIEW_POSITION_STATE,
|
||||||
mStaggeredGridLayoutManager.findFirstVisibleItemPositions(into)[0]);
|
mStaggeredGridLayoutManager.findFirstVisibleItemPositions(into)[0]);
|
||||||
@ -469,7 +466,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void refresh() {
|
public void refresh() {
|
||||||
if(isInLazyMode) {
|
if (isInLazyMode) {
|
||||||
stopLazyMode();
|
stopLazyMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -480,7 +477,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showErrorView(int stringResId) {
|
private void showErrorView(int stringResId) {
|
||||||
if(activity != null && isAdded()) {
|
if (activity != null && isAdded()) {
|
||||||
mProgressBar.setVisibility(View.GONE);
|
mProgressBar.setVisibility(View.GONE);
|
||||||
mFetchPostInfoLinearLayout.setVisibility(View.VISIBLE);
|
mFetchPostInfoLinearLayout.setVisibility(View.VISIBLE);
|
||||||
mFetchPostInfoTextView.setText(stringResId);
|
mFetchPostInfoTextView.setText(stringResId);
|
||||||
@ -495,7 +492,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean startLazyMode() {
|
public boolean startLazyMode() {
|
||||||
if(!hasPost) {
|
if (!hasPost) {
|
||||||
Toast.makeText(activity, R.string.no_posts_no_lazy_mode, Toast.LENGTH_SHORT).show();
|
Toast.makeText(activity, R.string.no_posts_no_lazy_mode, Toast.LENGTH_SHORT).show();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -525,13 +522,13 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void resumeLazyMode(boolean resumeNow) {
|
public void resumeLazyMode(boolean resumeNow) {
|
||||||
if(isInLazyMode) {
|
if (isInLazyMode) {
|
||||||
isLazyModePaused = false;
|
isLazyModePaused = false;
|
||||||
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
||||||
|
|
||||||
lazyModeRunnable.resetOldPosition();
|
lazyModeRunnable.resetOldPosition();
|
||||||
|
|
||||||
if(resumeNow) {
|
if (resumeNow) {
|
||||||
lazyModeHandler.post(lazyModeRunnable);
|
lazyModeHandler.post(lazyModeRunnable);
|
||||||
} else {
|
} else {
|
||||||
lazyModeHandler.postDelayed(lazyModeRunnable, (long) (lazyModeInterval * 1000));
|
lazyModeHandler.postDelayed(lazyModeRunnable, (long) (lazyModeInterval * 1000));
|
||||||
@ -547,7 +544,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
lazyModeHandler.removeCallbacks(lazyModeRunnable);
|
lazyModeHandler.removeCallbacks(lazyModeRunnable);
|
||||||
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
||||||
|
|
||||||
if(startTimer) {
|
if (startTimer) {
|
||||||
resumeLazyModeCountDownTimer.start();
|
resumeLazyModeCountDownTimer.start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -590,9 +587,9 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
|
|
||||||
private void refreshAdapter() {
|
private void refreshAdapter() {
|
||||||
int previousPosition = -1;
|
int previousPosition = -1;
|
||||||
if(mLinearLayoutManager != null) {
|
if (mLinearLayoutManager != null) {
|
||||||
previousPosition = mLinearLayoutManager.findFirstVisibleItemPosition();
|
previousPosition = mLinearLayoutManager.findFirstVisibleItemPosition();
|
||||||
} else if(mStaggeredGridLayoutManager != null) {
|
} else if (mStaggeredGridLayoutManager != null) {
|
||||||
int[] into = new int[2];
|
int[] into = new int[2];
|
||||||
previousPosition = mStaggeredGridLayoutManager.findFirstVisibleItemPositions(into)[0];
|
previousPosition = mStaggeredGridLayoutManager.findFirstVisibleItemPositions(into)[0];
|
||||||
}
|
}
|
||||||
@ -603,7 +600,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
mPostRecyclerView.setAdapter(mAdapter);
|
mPostRecyclerView.setAdapter(mAdapter);
|
||||||
mPostRecyclerView.setLayoutManager(layoutManager);
|
mPostRecyclerView.setLayoutManager(layoutManager);
|
||||||
|
|
||||||
if(previousPosition > 0) {
|
if (previousPosition > 0) {
|
||||||
mPostRecyclerView.scrollToPosition(previousPosition);
|
mPostRecyclerView.scrollToPosition(previousPosition);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -611,7 +608,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
@Override
|
@Override
|
||||||
public void onStart() {
|
public void onStart() {
|
||||||
super.onStart();
|
super.onStart();
|
||||||
if(isInLazyMode && isLazyModePaused) {
|
if (isInLazyMode && isLazyModePaused) {
|
||||||
resumeLazyMode(false);
|
resumeLazyMode(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -619,7 +616,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
@Override
|
@Override
|
||||||
public void onStop() {
|
public void onStop() {
|
||||||
super.onStop();
|
super.onStop();
|
||||||
if(isInLazyMode) {
|
if (isInLazyMode) {
|
||||||
pauseLazyMode(false);
|
pauseLazyMode(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -673,7 +670,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
|
|
||||||
int halfOffset = mItemOffset / 2;
|
int halfOffset = mItemOffset / 2;
|
||||||
|
|
||||||
if(spanIndex == 0) {
|
if (spanIndex == 0) {
|
||||||
outRect.set(0, 0, halfOffset, 0);
|
outRect.set(0, 0, halfOffset, 0);
|
||||||
} else {
|
} else {
|
||||||
outRect.set(halfOffset, 0, 0, 0);
|
outRect.set(halfOffset, 0, 0, 0);
|
||||||
|
@ -24,25 +24,22 @@ import ml.docilealligator.infinityforreddit.R;
|
|||||||
*/
|
*/
|
||||||
public class PostTypeBottomSheetFragment extends RoundedBottomSheetDialogFragment {
|
public class PostTypeBottomSheetFragment extends RoundedBottomSheetDialogFragment {
|
||||||
|
|
||||||
public interface PostTypeSelectionCallback {
|
|
||||||
void postTypeSelected(int postType);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static final int TYPE_TEXT = 0;
|
public static final int TYPE_TEXT = 0;
|
||||||
public static final int TYPE_LINK = 1;
|
public static final int TYPE_LINK = 1;
|
||||||
public static final int TYPE_IMAGE = 2;
|
public static final int TYPE_IMAGE = 2;
|
||||||
public static final int TYPE_VIDEO = 3;
|
public static final int TYPE_VIDEO = 3;
|
||||||
|
@BindView(R.id.text_type_linear_layout_post_type_bottom_sheet_fragment)
|
||||||
@BindView(R.id.text_type_linear_layout_post_type_bottom_sheet_fragment) LinearLayout textTypeLinearLayout;
|
LinearLayout textTypeLinearLayout;
|
||||||
@BindView(R.id.link_type_linear_layout_post_type_bottom_sheet_fragment) LinearLayout linkTypeLinearLayout;
|
@BindView(R.id.link_type_linear_layout_post_type_bottom_sheet_fragment)
|
||||||
@BindView(R.id.image_type_linear_layout_post_type_bottom_sheet_fragment) LinearLayout imageTypeLinearLayout;
|
LinearLayout linkTypeLinearLayout;
|
||||||
@BindView(R.id.video_type_linear_layout_post_type_bottom_sheet_fragment) LinearLayout videoTypeLinearLayout;
|
@BindView(R.id.image_type_linear_layout_post_type_bottom_sheet_fragment)
|
||||||
|
LinearLayout imageTypeLinearLayout;
|
||||||
|
@BindView(R.id.video_type_linear_layout_post_type_bottom_sheet_fragment)
|
||||||
|
LinearLayout videoTypeLinearLayout;
|
||||||
public PostTypeBottomSheetFragment() {
|
public PostTypeBottomSheetFragment() {
|
||||||
// Required empty public constructor
|
// Required empty public constructor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
@ -51,7 +48,7 @@ public class PostTypeBottomSheetFragment extends RoundedBottomSheetDialogFragmen
|
|||||||
|
|
||||||
Activity activity = getActivity();
|
Activity activity = getActivity();
|
||||||
|
|
||||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
|
||||||
&& (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
&& (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
rootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
rootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
@ -79,4 +76,9 @@ public class PostTypeBottomSheetFragment extends RoundedBottomSheetDialogFragmen
|
|||||||
return rootView;
|
return rootView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public interface PostTypeSelectionCallback {
|
||||||
|
void postTypeSelected(int postType);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -25,21 +25,20 @@ import ml.docilealligator.infinityforreddit.R;
|
|||||||
*/
|
*/
|
||||||
public class SearchPostSortTypeBottomSheetFragment extends RoundedBottomSheetDialogFragment {
|
public class SearchPostSortTypeBottomSheetFragment extends RoundedBottomSheetDialogFragment {
|
||||||
|
|
||||||
public interface SearchSortTypeSelectionCallback {
|
@BindView(R.id.relevance_type_text_view_search_sort_type_bottom_sheet_fragment)
|
||||||
void searchSortTypeSelected(String sortType);
|
TextView relevanceTypeTextView;
|
||||||
}
|
@BindView(R.id.hot_type_text_view_search_sort_type_bottom_sheet_fragment)
|
||||||
|
TextView hotTypeTextView;
|
||||||
@BindView(R.id.relevance_type_text_view_search_sort_type_bottom_sheet_fragment) TextView relevanceTypeTextView;
|
@BindView(R.id.top_type_text_view_search_sort_type_bottom_sheet_fragment)
|
||||||
@BindView(R.id.hot_type_text_view_search_sort_type_bottom_sheet_fragment) TextView hotTypeTextView;
|
TextView topTypeTextView;
|
||||||
@BindView(R.id.top_type_text_view_search_sort_type_bottom_sheet_fragment) TextView topTypeTextView;
|
@BindView(R.id.new_type_text_view_search_sort_type_bottom_sheet_fragment)
|
||||||
@BindView(R.id.new_type_text_view_search_sort_type_bottom_sheet_fragment) TextView newTypeTextView;
|
TextView newTypeTextView;
|
||||||
@BindView(R.id.comments_type_text_view_search_sort_type_bottom_sheet_fragment) TextView commentsTypeTextView;
|
@BindView(R.id.comments_type_text_view_search_sort_type_bottom_sheet_fragment)
|
||||||
|
TextView commentsTypeTextView;
|
||||||
public SearchPostSortTypeBottomSheetFragment() {
|
public SearchPostSortTypeBottomSheetFragment() {
|
||||||
// Required empty public constructor
|
// Required empty public constructor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
@ -48,7 +47,7 @@ public class SearchPostSortTypeBottomSheetFragment extends RoundedBottomSheetDia
|
|||||||
|
|
||||||
Activity activity = getActivity();
|
Activity activity = getActivity();
|
||||||
|
|
||||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
|
||||||
&& (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
&& (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
rootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
rootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
@ -81,4 +80,9 @@ public class SearchPostSortTypeBottomSheetFragment extends RoundedBottomSheetDia
|
|||||||
return rootView;
|
return rootView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public interface SearchSortTypeSelectionCallback {
|
||||||
|
void searchSortTypeSelected(String sortType);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -25,20 +25,15 @@ import ml.docilealligator.infinityforreddit.R;
|
|||||||
*/
|
*/
|
||||||
public class SearchUserAndSubredditSortTypeBottomSheetFragment extends RoundedBottomSheetDialogFragment {
|
public class SearchUserAndSubredditSortTypeBottomSheetFragment extends RoundedBottomSheetDialogFragment {
|
||||||
|
|
||||||
public interface SearchUserAndSubredditSortTypeSelectionCallback {
|
|
||||||
void searchUserAndSubredditSortTypeSelected(String sortType, int fragmentPosition);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static final String EXTRA_FRAGMENT_POSITION = "EFP";
|
public static final String EXTRA_FRAGMENT_POSITION = "EFP";
|
||||||
|
@BindView(R.id.relevance_type_text_view_search_user_and_subreddit_sort_type_bottom_sheet_fragment)
|
||||||
@BindView(R.id.relevance_type_text_view_search_user_and_subreddit_sort_type_bottom_sheet_fragment) TextView relevanceTypeTextView;
|
TextView relevanceTypeTextView;
|
||||||
@BindView(R.id.activity_type_text_view_search_user_and_subreddit_sort_type_bottom_sheet_fragment) TextView activityTypeTextView;
|
@BindView(R.id.activity_type_text_view_search_user_and_subreddit_sort_type_bottom_sheet_fragment)
|
||||||
|
TextView activityTypeTextView;
|
||||||
public SearchUserAndSubredditSortTypeBottomSheetFragment() {
|
public SearchUserAndSubredditSortTypeBottomSheetFragment() {
|
||||||
// Required empty public constructor
|
// Required empty public constructor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
@ -47,7 +42,7 @@ public class SearchUserAndSubredditSortTypeBottomSheetFragment extends RoundedBo
|
|||||||
|
|
||||||
Activity activity = getActivity();
|
Activity activity = getActivity();
|
||||||
|
|
||||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
|
||||||
&& (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
&& (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
rootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
rootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
@ -67,4 +62,9 @@ public class SearchUserAndSubredditSortTypeBottomSheetFragment extends RoundedBo
|
|||||||
return rootView;
|
return rootView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public interface SearchUserAndSubredditSortTypeSelectionCallback {
|
||||||
|
void searchUserAndSubredditSortTypeSelected(String sortType, int fragmentPosition);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -26,25 +26,25 @@ import ml.docilealligator.infinityforreddit.R;
|
|||||||
*/
|
*/
|
||||||
public class SortTypeBottomSheetFragment extends RoundedBottomSheetDialogFragment {
|
public class SortTypeBottomSheetFragment extends RoundedBottomSheetDialogFragment {
|
||||||
|
|
||||||
public interface SortTypeSelectionCallback {
|
|
||||||
void sortTypeSelected(String sortType);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static final String EXTRA_NO_BEST_TYPE = "ENBT";
|
public static final String EXTRA_NO_BEST_TYPE = "ENBT";
|
||||||
|
@BindView(R.id.best_type_text_view_sort_type_bottom_sheet_fragment)
|
||||||
@BindView(R.id.best_type_text_view_sort_type_bottom_sheet_fragment) TextView bestTypeTextView;
|
TextView bestTypeTextView;
|
||||||
@BindView(R.id.hot_type_text_view_sort_type_bottom_sheet_fragment) TextView hotTypeTextView;
|
@BindView(R.id.hot_type_text_view_sort_type_bottom_sheet_fragment)
|
||||||
@BindView(R.id.new_type_text_view_sort_type_bottom_sheet_fragment) TextView newTypeTextView;
|
TextView hotTypeTextView;
|
||||||
@BindView(R.id.random_type_text_view_sort_type_bottom_sheet_fragment) TextView randomTypeTextView;
|
@BindView(R.id.new_type_text_view_sort_type_bottom_sheet_fragment)
|
||||||
@BindView(R.id.rising_type_text_view_sort_type_bottom_sheet_fragment) TextView risingTypeTextView;
|
TextView newTypeTextView;
|
||||||
@BindView(R.id.top_type_text_view_sort_type_bottom_sheet_fragment) TextView topTypeTextView;
|
@BindView(R.id.random_type_text_view_sort_type_bottom_sheet_fragment)
|
||||||
@BindView(R.id.controversial_type_text_view_sort_type_bottom_sheet_fragment) TextView controversialTypeTextView;
|
TextView randomTypeTextView;
|
||||||
|
@BindView(R.id.rising_type_text_view_sort_type_bottom_sheet_fragment)
|
||||||
|
TextView risingTypeTextView;
|
||||||
|
@BindView(R.id.top_type_text_view_sort_type_bottom_sheet_fragment)
|
||||||
|
TextView topTypeTextView;
|
||||||
|
@BindView(R.id.controversial_type_text_view_sort_type_bottom_sheet_fragment)
|
||||||
|
TextView controversialTypeTextView;
|
||||||
public SortTypeBottomSheetFragment() {
|
public SortTypeBottomSheetFragment() {
|
||||||
// Required empty public constructor
|
// Required empty public constructor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
|
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
@ -53,12 +53,12 @@ public class SortTypeBottomSheetFragment extends RoundedBottomSheetDialogFragmen
|
|||||||
|
|
||||||
Activity activity = getActivity();
|
Activity activity = getActivity();
|
||||||
|
|
||||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
|
||||||
&& (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
&& (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
rootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
rootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(getArguments().getBoolean(EXTRA_NO_BEST_TYPE)) {
|
if (getArguments().getBoolean(EXTRA_NO_BEST_TYPE)) {
|
||||||
bestTypeTextView.setVisibility(View.GONE);
|
bestTypeTextView.setVisibility(View.GONE);
|
||||||
} else {
|
} else {
|
||||||
bestTypeTextView.setOnClickListener(view -> {
|
bestTypeTextView.setOnClickListener(view -> {
|
||||||
@ -100,4 +100,9 @@ public class SortTypeBottomSheetFragment extends RoundedBottomSheetDialogFragmen
|
|||||||
return rootView;
|
return rootView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public interface SortTypeSelectionCallback {
|
||||||
|
void sortTypeSelected(String sortType);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -31,13 +31,13 @@ import butterknife.BindView;
|
|||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import ml.docilealligator.infinityforreddit.Activity.SearchSubredditsResultActivity;
|
import ml.docilealligator.infinityforreddit.Activity.SearchSubredditsResultActivity;
|
||||||
import ml.docilealligator.infinityforreddit.Activity.ViewSubredditDetailActivity;
|
import ml.docilealligator.infinityforreddit.Activity.ViewSubredditDetailActivity;
|
||||||
|
import ml.docilealligator.infinityforreddit.Adapter.SubredditListingRecyclerViewAdapter;
|
||||||
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.NetworkState;
|
import ml.docilealligator.infinityforreddit.NetworkState;
|
||||||
import ml.docilealligator.infinityforreddit.PostDataSource;
|
import ml.docilealligator.infinityforreddit.PostDataSource;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
import ml.docilealligator.infinityforreddit.Adapter.SubredditListingRecyclerViewAdapter;
|
|
||||||
import ml.docilealligator.infinityforreddit.SubredditListingViewModel;
|
import ml.docilealligator.infinityforreddit.SubredditListingViewModel;
|
||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
@ -52,27 +52,29 @@ public class SubredditListingFragment extends Fragment implements FragmentCommun
|
|||||||
public static final String EXTRA_ACCESS_TOKEN = "EAT";
|
public static final String EXTRA_ACCESS_TOKEN = "EAT";
|
||||||
public static final String EXTRA_ACCOUNT_NAME = "EAN";
|
public static final String EXTRA_ACCOUNT_NAME = "EAN";
|
||||||
|
|
||||||
@BindView(R.id.coordinator_layout_subreddit_listing_fragment) CoordinatorLayout mCoordinatorLayout;
|
@BindView(R.id.coordinator_layout_subreddit_listing_fragment)
|
||||||
@BindView(R.id.recycler_view_subreddit_listing_fragment) RecyclerView mSubredditListingRecyclerView;
|
CoordinatorLayout mCoordinatorLayout;
|
||||||
@BindView(R.id.progress_bar_subreddit_listing_fragment) CircleProgressBar mProgressBar;
|
@BindView(R.id.recycler_view_subreddit_listing_fragment)
|
||||||
@BindView(R.id.fetch_subreddit_listing_info_linear_layout_subreddit_listing_fragment) LinearLayout mFetchSubredditListingInfoLinearLayout;
|
RecyclerView mSubredditListingRecyclerView;
|
||||||
@BindView(R.id.fetch_subreddit_listing_info_image_view_subreddit_listing_fragment) ImageView mFetchSubredditListingInfoImageView;
|
@BindView(R.id.progress_bar_subreddit_listing_fragment)
|
||||||
@BindView(R.id.fetch_subreddit_listing_info_text_view_subreddit_listing_fragment) TextView mFetchSubredditListingInfoTextView;
|
CircleProgressBar mProgressBar;
|
||||||
|
@BindView(R.id.fetch_subreddit_listing_info_linear_layout_subreddit_listing_fragment)
|
||||||
private LinearLayoutManager mLinearLayoutManager;
|
LinearLayout mFetchSubredditListingInfoLinearLayout;
|
||||||
|
@BindView(R.id.fetch_subreddit_listing_info_image_view_subreddit_listing_fragment)
|
||||||
private SubredditListingRecyclerViewAdapter mAdapter;
|
ImageView mFetchSubredditListingInfoImageView;
|
||||||
|
@BindView(R.id.fetch_subreddit_listing_info_text_view_subreddit_listing_fragment)
|
||||||
|
TextView mFetchSubredditListingInfoTextView;
|
||||||
SubredditListingViewModel mSubredditListingViewModel;
|
SubredditListingViewModel mSubredditListingViewModel;
|
||||||
|
@Inject
|
||||||
@Inject @Named("no_oauth")
|
@Named("no_oauth")
|
||||||
Retrofit mRetrofit;
|
Retrofit mRetrofit;
|
||||||
|
@Inject
|
||||||
@Inject @Named("oauth")
|
@Named("oauth")
|
||||||
Retrofit mOauthRetrofit;
|
Retrofit mOauthRetrofit;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
RedditDataRoomDatabase redditDataRoomDatabase;
|
RedditDataRoomDatabase redditDataRoomDatabase;
|
||||||
|
private LinearLayoutManager mLinearLayoutManager;
|
||||||
|
private SubredditListingRecyclerViewAdapter mAdapter;
|
||||||
|
|
||||||
public SubredditListingFragment() {
|
public SubredditListingFragment() {
|
||||||
// Required empty public constructor
|
// Required empty public constructor
|
||||||
@ -120,7 +122,7 @@ public class SubredditListingFragment extends Fragment implements FragmentCommun
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void subredditSelected(String subredditName, String iconUrl) {
|
public void subredditSelected(String subredditName, String iconUrl) {
|
||||||
if(isPosting) {
|
if (isPosting) {
|
||||||
((SearchSubredditsResultActivity) activity).getSelectedSubreddit(subredditName, iconUrl);
|
((SearchSubredditsResultActivity) activity).getSelectedSubreddit(subredditName, iconUrl);
|
||||||
} else {
|
} else {
|
||||||
Intent intent = new Intent(activity, ViewSubredditDetailActivity.class);
|
Intent intent = new Intent(activity, ViewSubredditDetailActivity.class);
|
||||||
@ -139,7 +141,7 @@ public class SubredditListingFragment extends Fragment implements FragmentCommun
|
|||||||
|
|
||||||
mSubredditListingViewModel.hasSubredditLiveData().observe(this, hasSubreddit -> {
|
mSubredditListingViewModel.hasSubredditLiveData().observe(this, hasSubreddit -> {
|
||||||
mProgressBar.setVisibility(View.GONE);
|
mProgressBar.setVisibility(View.GONE);
|
||||||
if(hasSubreddit) {
|
if (hasSubreddit) {
|
||||||
mFetchSubredditListingInfoLinearLayout.setVisibility(View.GONE);
|
mFetchSubredditListingInfoLinearLayout.setVisibility(View.GONE);
|
||||||
} else {
|
} else {
|
||||||
mFetchSubredditListingInfoLinearLayout.setOnClickListener(view -> {
|
mFetchSubredditListingInfoLinearLayout.setOnClickListener(view -> {
|
||||||
@ -150,9 +152,9 @@ public class SubredditListingFragment extends Fragment implements FragmentCommun
|
|||||||
});
|
});
|
||||||
|
|
||||||
mSubredditListingViewModel.getInitialLoadingState().observe(this, networkState -> {
|
mSubredditListingViewModel.getInitialLoadingState().observe(this, networkState -> {
|
||||||
if(networkState.getStatus().equals(NetworkState.Status.SUCCESS)) {
|
if (networkState.getStatus().equals(NetworkState.Status.SUCCESS)) {
|
||||||
mProgressBar.setVisibility(View.GONE);
|
mProgressBar.setVisibility(View.GONE);
|
||||||
} else if(networkState.getStatus().equals(NetworkState.Status.FAILED)) {
|
} else if (networkState.getStatus().equals(NetworkState.Status.FAILED)) {
|
||||||
mProgressBar.setVisibility(View.GONE);
|
mProgressBar.setVisibility(View.GONE);
|
||||||
mFetchSubredditListingInfoLinearLayout.setOnClickListener(view -> refresh());
|
mFetchSubredditListingInfoLinearLayout.setOnClickListener(view -> refresh());
|
||||||
showErrorView(R.string.search_subreddits_error);
|
showErrorView(R.string.search_subreddits_error);
|
||||||
@ -169,7 +171,7 @@ public class SubredditListingFragment extends Fragment implements FragmentCommun
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showErrorView(int stringResId) {
|
private void showErrorView(int stringResId) {
|
||||||
if(getActivity() != null && isAdded()) {
|
if (getActivity() != null && isAdded()) {
|
||||||
mProgressBar.setVisibility(View.GONE);
|
mProgressBar.setVisibility(View.GONE);
|
||||||
mFetchSubredditListingInfoLinearLayout.setVisibility(View.VISIBLE);
|
mFetchSubredditListingInfoLinearLayout.setVisibility(View.VISIBLE);
|
||||||
mFetchSubredditListingInfoTextView.setText(stringResId);
|
mFetchSubredditListingInfoTextView.setText(stringResId);
|
||||||
|
@ -43,18 +43,17 @@ public class SubscribedSubredditsListingFragment extends Fragment {
|
|||||||
public static final String EXTRA_IS_SUBREDDIT_SELECTION = "EISS";
|
public static final String EXTRA_IS_SUBREDDIT_SELECTION = "EISS";
|
||||||
public static final String EXTRA_EXTRA_CLEAR_SELECTION = "EECS";
|
public static final String EXTRA_EXTRA_CLEAR_SELECTION = "EECS";
|
||||||
|
|
||||||
@BindView(R.id.recycler_view_subscribed_subreddits_listing_fragment) RecyclerView mRecyclerView;
|
@BindView(R.id.recycler_view_subscribed_subreddits_listing_fragment)
|
||||||
@BindView(R.id.no_subscriptions_linear_layout_subreddits_listing_fragment) LinearLayout mLinearLayout;
|
RecyclerView mRecyclerView;
|
||||||
@BindView(R.id.no_subscriptions_image_view_subreddits_listing_fragment) ImageView mImageView;
|
@BindView(R.id.no_subscriptions_linear_layout_subreddits_listing_fragment)
|
||||||
|
LinearLayout mLinearLayout;
|
||||||
private Activity mActivity;
|
@BindView(R.id.no_subscriptions_image_view_subreddits_listing_fragment)
|
||||||
|
ImageView mImageView;
|
||||||
private RequestManager mGlide;
|
|
||||||
|
|
||||||
private SubscribedSubredditViewModel mSubscribedSubredditViewModel;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
|
private Activity mActivity;
|
||||||
|
private RequestManager mGlide;
|
||||||
|
private SubscribedSubredditViewModel mSubscribedSubredditViewModel;
|
||||||
|
|
||||||
public SubscribedSubredditsListingFragment() {
|
public SubscribedSubredditsListingFragment() {
|
||||||
// Required empty public constructor
|
// Required empty public constructor
|
||||||
@ -89,7 +88,7 @@ public class SubscribedSubredditsListingFragment extends Fragment {
|
|||||||
mRecyclerView.setLayoutManager(new LinearLayoutManager(mActivity));
|
mRecyclerView.setLayoutManager(new LinearLayoutManager(mActivity));
|
||||||
|
|
||||||
SubscribedSubredditsRecyclerViewAdapter adapter;
|
SubscribedSubredditsRecyclerViewAdapter adapter;
|
||||||
if(getArguments().getBoolean(EXTRA_IS_SUBREDDIT_SELECTION)) {
|
if (getArguments().getBoolean(EXTRA_IS_SUBREDDIT_SELECTION)) {
|
||||||
adapter = new SubscribedSubredditsRecyclerViewAdapter(mActivity, getArguments().getBoolean(EXTRA_EXTRA_CLEAR_SELECTION),
|
adapter = new SubscribedSubredditsRecyclerViewAdapter(mActivity, getArguments().getBoolean(EXTRA_EXTRA_CLEAR_SELECTION),
|
||||||
(name, iconUrl, subredditIsUser) -> ((SubredditSelectionActivity) mActivity).getSelectedSubreddit(name, iconUrl, subredditIsUser));
|
(name, iconUrl, subredditIsUser) -> ((SubredditSelectionActivity) mActivity).getSelectedSubreddit(name, iconUrl, subredditIsUser));
|
||||||
} else {
|
} else {
|
||||||
|
@ -26,13 +26,13 @@ import javax.inject.Named;
|
|||||||
|
|
||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
|
import ml.docilealligator.infinityforreddit.Adapter.UserListingRecyclerViewAdapter;
|
||||||
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
||||||
import ml.docilealligator.infinityforreddit.Infinity;
|
import ml.docilealligator.infinityforreddit.Infinity;
|
||||||
import ml.docilealligator.infinityforreddit.NetworkState;
|
import ml.docilealligator.infinityforreddit.NetworkState;
|
||||||
import ml.docilealligator.infinityforreddit.PostDataSource;
|
import ml.docilealligator.infinityforreddit.PostDataSource;
|
||||||
import ml.docilealligator.infinityforreddit.R;
|
import ml.docilealligator.infinityforreddit.R;
|
||||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||||
import ml.docilealligator.infinityforreddit.Adapter.UserListingRecyclerViewAdapter;
|
|
||||||
import ml.docilealligator.infinityforreddit.UserListingViewModel;
|
import ml.docilealligator.infinityforreddit.UserListingViewModel;
|
||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
@ -46,29 +46,30 @@ public class UserListingFragment extends Fragment implements FragmentCommunicato
|
|||||||
public static final String EXTRA_ACCESS_TOKEN = "EAT";
|
public static final String EXTRA_ACCESS_TOKEN = "EAT";
|
||||||
public static final String EXTRA_ACCOUNT_NAME = "EAN";
|
public static final String EXTRA_ACCOUNT_NAME = "EAN";
|
||||||
|
|
||||||
@BindView(R.id.coordinator_layout_user_listing_fragment) CoordinatorLayout mCoordinatorLayout;
|
@BindView(R.id.coordinator_layout_user_listing_fragment)
|
||||||
@BindView(R.id.recycler_view_user_listing_fragment) RecyclerView mUserListingRecyclerView;
|
CoordinatorLayout mCoordinatorLayout;
|
||||||
@BindView(R.id.progress_bar_user_listing_fragment) CircleProgressBar mProgressBar;
|
@BindView(R.id.recycler_view_user_listing_fragment)
|
||||||
@BindView(R.id.fetch_user_listing_info_linear_layout_user_listing_fragment) LinearLayout mFetchUserListingInfoLinearLayout;
|
RecyclerView mUserListingRecyclerView;
|
||||||
@BindView(R.id.fetch_user_listing_info_image_view_user_listing_fragment) ImageView mFetchUserListingInfoImageView;
|
@BindView(R.id.progress_bar_user_listing_fragment)
|
||||||
@BindView(R.id.fetch_user_listing_info_text_view_user_listing_fragment) TextView mFetchUserListingInfoTextView;
|
CircleProgressBar mProgressBar;
|
||||||
|
@BindView(R.id.fetch_user_listing_info_linear_layout_user_listing_fragment)
|
||||||
private LinearLayoutManager mLinearLayoutManager;
|
LinearLayout mFetchUserListingInfoLinearLayout;
|
||||||
|
@BindView(R.id.fetch_user_listing_info_image_view_user_listing_fragment)
|
||||||
private String mQuery;
|
ImageView mFetchUserListingInfoImageView;
|
||||||
|
@BindView(R.id.fetch_user_listing_info_text_view_user_listing_fragment)
|
||||||
private UserListingRecyclerViewAdapter mAdapter;
|
TextView mFetchUserListingInfoTextView;
|
||||||
|
|
||||||
UserListingViewModel mUserListingViewModel;
|
UserListingViewModel mUserListingViewModel;
|
||||||
|
@Inject
|
||||||
@Inject @Named("no_oauth")
|
@Named("no_oauth")
|
||||||
Retrofit mRetrofit;
|
Retrofit mRetrofit;
|
||||||
|
@Inject
|
||||||
@Inject @Named("oauth")
|
@Named("oauth")
|
||||||
Retrofit mOauthRetrofit;
|
Retrofit mOauthRetrofit;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
RedditDataRoomDatabase redditDataRoomDatabase;
|
RedditDataRoomDatabase redditDataRoomDatabase;
|
||||||
|
private LinearLayoutManager mLinearLayoutManager;
|
||||||
|
private String mQuery;
|
||||||
|
private UserListingRecyclerViewAdapter mAdapter;
|
||||||
|
|
||||||
public UserListingFragment() {
|
public UserListingFragment() {
|
||||||
// Required empty public constructor
|
// Required empty public constructor
|
||||||
@ -116,7 +117,7 @@ public class UserListingFragment extends Fragment implements FragmentCommunicato
|
|||||||
|
|
||||||
mUserListingViewModel.hasUser().observe(this, hasUser -> {
|
mUserListingViewModel.hasUser().observe(this, hasUser -> {
|
||||||
mProgressBar.setVisibility(View.GONE);
|
mProgressBar.setVisibility(View.GONE);
|
||||||
if(hasUser) {
|
if (hasUser) {
|
||||||
mFetchUserListingInfoLinearLayout.setVisibility(View.GONE);
|
mFetchUserListingInfoLinearLayout.setVisibility(View.GONE);
|
||||||
} else {
|
} else {
|
||||||
mFetchUserListingInfoLinearLayout.setOnClickListener(view -> {
|
mFetchUserListingInfoLinearLayout.setOnClickListener(view -> {
|
||||||
@ -127,9 +128,9 @@ public class UserListingFragment extends Fragment implements FragmentCommunicato
|
|||||||
});
|
});
|
||||||
|
|
||||||
mUserListingViewModel.getInitialLoadingState().observe(this, networkState -> {
|
mUserListingViewModel.getInitialLoadingState().observe(this, networkState -> {
|
||||||
if(networkState.getStatus().equals(NetworkState.Status.SUCCESS)) {
|
if (networkState.getStatus().equals(NetworkState.Status.SUCCESS)) {
|
||||||
mProgressBar.setVisibility(View.GONE);
|
mProgressBar.setVisibility(View.GONE);
|
||||||
} else if(networkState.getStatus().equals(NetworkState.Status.FAILED)) {
|
} else if (networkState.getStatus().equals(NetworkState.Status.FAILED)) {
|
||||||
mProgressBar.setVisibility(View.GONE);
|
mProgressBar.setVisibility(View.GONE);
|
||||||
mFetchUserListingInfoLinearLayout.setOnClickListener(view -> refresh());
|
mFetchUserListingInfoLinearLayout.setOnClickListener(view -> refresh());
|
||||||
showErrorView(R.string.search_users_error);
|
showErrorView(R.string.search_users_error);
|
||||||
@ -146,7 +147,7 @@ public class UserListingFragment extends Fragment implements FragmentCommunicato
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void showErrorView(int stringResId) {
|
private void showErrorView(int stringResId) {
|
||||||
if(getActivity() != null && isAdded()) {
|
if (getActivity() != null && isAdded()) {
|
||||||
mProgressBar.setVisibility(View.GONE);
|
mProgressBar.setVisibility(View.GONE);
|
||||||
mFetchUserListingInfoLinearLayout.setVisibility(View.VISIBLE);
|
mFetchUserListingInfoLinearLayout.setVisibility(View.VISIBLE);
|
||||||
mFetchUserListingInfoTextView.setText(stringResId);
|
mFetchUserListingInfoTextView.setText(stringResId);
|
||||||
|
@ -26,22 +26,19 @@ import ml.docilealligator.infinityforreddit.R;
|
|||||||
*/
|
*/
|
||||||
public class UserThingSortTypeBottomSheetFragment extends RoundedBottomSheetDialogFragment {
|
public class UserThingSortTypeBottomSheetFragment extends RoundedBottomSheetDialogFragment {
|
||||||
|
|
||||||
public interface UserThingSortTypeSelectionCallback {
|
|
||||||
void userThingSortTypeSelected(String sortType);
|
|
||||||
}
|
|
||||||
|
|
||||||
static final String EXTRA_NO_BEST_TYPE = "ENBT";
|
static final String EXTRA_NO_BEST_TYPE = "ENBT";
|
||||||
|
@BindView(R.id.new_type_text_view_user_thing_sort_type_bottom_sheet_fragment)
|
||||||
@BindView(R.id.new_type_text_view_user_thing_sort_type_bottom_sheet_fragment) TextView newTypeTextView;
|
TextView newTypeTextView;
|
||||||
@BindView(R.id.hot_type_text_view_user_thing_sort_type_bottom_sheet_fragment) TextView hotTypeTextView;
|
@BindView(R.id.hot_type_text_view_user_thing_sort_type_bottom_sheet_fragment)
|
||||||
@BindView(R.id.top_type_text_view_user_thing_sort_type_bottom_sheet_fragment) TextView topTypeTextView;
|
TextView hotTypeTextView;
|
||||||
@BindView(R.id.controversial_type_text_view_user_thing_sort_type_bottom_sheet_fragment) TextView controversialTypeTextView;
|
@BindView(R.id.top_type_text_view_user_thing_sort_type_bottom_sheet_fragment)
|
||||||
|
TextView topTypeTextView;
|
||||||
|
@BindView(R.id.controversial_type_text_view_user_thing_sort_type_bottom_sheet_fragment)
|
||||||
|
TextView controversialTypeTextView;
|
||||||
public UserThingSortTypeBottomSheetFragment() {
|
public UserThingSortTypeBottomSheetFragment() {
|
||||||
// Required empty public constructor
|
// Required empty public constructor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
|
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
@ -51,34 +48,34 @@ public class UserThingSortTypeBottomSheetFragment extends RoundedBottomSheetDial
|
|||||||
|
|
||||||
Activity activity = getActivity();
|
Activity activity = getActivity();
|
||||||
|
|
||||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
|
||||||
&& (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
&& (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||||
rootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
rootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||||
}
|
}
|
||||||
|
|
||||||
newTypeTextView.setOnClickListener(view -> {
|
newTypeTextView.setOnClickListener(view -> {
|
||||||
if(activity != null) {
|
if (activity != null) {
|
||||||
((UserThingSortTypeSelectionCallback) activity).userThingSortTypeSelected(PostDataSource.SORT_TYPE_NEW);
|
((UserThingSortTypeSelectionCallback) activity).userThingSortTypeSelected(PostDataSource.SORT_TYPE_NEW);
|
||||||
}
|
}
|
||||||
dismiss();
|
dismiss();
|
||||||
});
|
});
|
||||||
|
|
||||||
hotTypeTextView.setOnClickListener(view -> {
|
hotTypeTextView.setOnClickListener(view -> {
|
||||||
if(activity != null) {
|
if (activity != null) {
|
||||||
((UserThingSortTypeSelectionCallback) activity).userThingSortTypeSelected(PostDataSource.SORT_TYPE_HOT);
|
((UserThingSortTypeSelectionCallback) activity).userThingSortTypeSelected(PostDataSource.SORT_TYPE_HOT);
|
||||||
}
|
}
|
||||||
dismiss();
|
dismiss();
|
||||||
});
|
});
|
||||||
|
|
||||||
topTypeTextView.setOnClickListener(view -> {
|
topTypeTextView.setOnClickListener(view -> {
|
||||||
if(activity != null) {
|
if (activity != null) {
|
||||||
((UserThingSortTypeSelectionCallback) activity).userThingSortTypeSelected(PostDataSource.SORT_TYPE_TOP);
|
((UserThingSortTypeSelectionCallback) activity).userThingSortTypeSelected(PostDataSource.SORT_TYPE_TOP);
|
||||||
}
|
}
|
||||||
dismiss();
|
dismiss();
|
||||||
});
|
});
|
||||||
|
|
||||||
controversialTypeTextView.setOnClickListener(view -> {
|
controversialTypeTextView.setOnClickListener(view -> {
|
||||||
if(activity != null) {
|
if (activity != null) {
|
||||||
((UserThingSortTypeSelectionCallback) activity).userThingSortTypeSelected(PostDataSource.SORT_TYPE_CONTROVERSIAL);
|
((UserThingSortTypeSelectionCallback) activity).userThingSortTypeSelected(PostDataSource.SORT_TYPE_CONTROVERSIAL);
|
||||||
}
|
}
|
||||||
dismiss();
|
dismiss();
|
||||||
@ -87,4 +84,9 @@ public class UserThingSortTypeBottomSheetFragment extends RoundedBottomSheetDial
|
|||||||
return rootView;
|
return rootView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public interface UserThingSortTypeSelectionCallback {
|
||||||
|
void userThingSortTypeSelected(String sortType);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,13 +2,23 @@ package ml.docilealligator.infinityforreddit;
|
|||||||
|
|
||||||
public interface FragmentCommunicator {
|
public interface FragmentCommunicator {
|
||||||
void refresh();
|
void refresh();
|
||||||
default void changeNSFW(boolean nsfw) {};
|
|
||||||
|
default void changeNSFW(boolean nsfw) {
|
||||||
|
}
|
||||||
|
|
||||||
default boolean startLazyMode() {
|
default boolean startLazyMode() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
default void stopLazyMode() {}
|
|
||||||
default void resumeLazyMode(boolean resumeNow) {}
|
default void stopLazyMode() {
|
||||||
default void pauseLazyMode(boolean startTimer) {}
|
}
|
||||||
|
|
||||||
|
default void resumeLazyMode(boolean resumeNow) {
|
||||||
|
}
|
||||||
|
|
||||||
|
default void pauseLazyMode(boolean startTimer) {
|
||||||
|
}
|
||||||
|
|
||||||
default boolean isInLazyMode() {
|
default boolean isInLazyMode() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -11,11 +11,6 @@ import retrofit2.Response;
|
|||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
public class HidePost {
|
public class HidePost {
|
||||||
public interface HidePostListener {
|
|
||||||
void success();
|
|
||||||
void failed();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void hidePost(Retrofit oauthRetrofit, String accessToken, String fullname,
|
public static void hidePost(Retrofit oauthRetrofit, String accessToken, String fullname,
|
||||||
HidePostListener hidePostListener) {
|
HidePostListener hidePostListener) {
|
||||||
Map<String, String> params = new HashMap<>();
|
Map<String, String> params = new HashMap<>();
|
||||||
@ -23,7 +18,7 @@ public class HidePost {
|
|||||||
oauthRetrofit.create(RedditAPI.class).hide(RedditUtils.getOAuthHeader(accessToken), params).enqueue(new Callback<String>() {
|
oauthRetrofit.create(RedditAPI.class).hide(RedditUtils.getOAuthHeader(accessToken), params).enqueue(new Callback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
if(response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
hidePostListener.success();
|
hidePostListener.success();
|
||||||
} else {
|
} else {
|
||||||
hidePostListener.failed();
|
hidePostListener.failed();
|
||||||
@ -44,7 +39,7 @@ public class HidePost {
|
|||||||
oauthRetrofit.create(RedditAPI.class).unhide(RedditUtils.getOAuthHeader(accessToken), params).enqueue(new Callback<String>() {
|
oauthRetrofit.create(RedditAPI.class).unhide(RedditUtils.getOAuthHeader(accessToken), params).enqueue(new Callback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
if(response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
hidePostListener.success();
|
hidePostListener.success();
|
||||||
} else {
|
} else {
|
||||||
hidePostListener.failed();
|
hidePostListener.failed();
|
||||||
@ -57,4 +52,10 @@ public class HidePost {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface HidePostListener {
|
||||||
|
void success();
|
||||||
|
|
||||||
|
void failed();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package ml.docilealligator.infinityforreddit;
|
package ml.docilealligator.infinityforreddit;
|
||||||
|
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.lifecycle.MutableLiveData;
|
import androidx.lifecycle.MutableLiveData;
|
||||||
@ -58,13 +56,13 @@ class MessageDataSource extends PageKeyedDataSource<String, Message> {
|
|||||||
FetchMessages.fetchMessagesAsync(oauthRetrofit, locale, accessToken, where, null, new FetchMessages.FetchMessagesListener() {
|
FetchMessages.fetchMessagesAsync(oauthRetrofit, locale, accessToken, where, null, new FetchMessages.FetchMessagesListener() {
|
||||||
@Override
|
@Override
|
||||||
public void fetchSuccess(ArrayList<Message> messages, @Nullable String after) {
|
public void fetchSuccess(ArrayList<Message> messages, @Nullable String after) {
|
||||||
if(messages.size() == 0) {
|
if (messages.size() == 0) {
|
||||||
hasPostLiveData.postValue(false);
|
hasPostLiveData.postValue(false);
|
||||||
} else {
|
} else {
|
||||||
hasPostLiveData.postValue(true);
|
hasPostLiveData.postValue(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(after == null || after.equals("") || after.equals("null")) {
|
if (after == null || after.equals("") || after.equals("null")) {
|
||||||
callback.onResult(messages, null, null);
|
callback.onResult(messages, null, null);
|
||||||
} else {
|
} else {
|
||||||
callback.onResult(messages, null, after);
|
callback.onResult(messages, null, after);
|
||||||
@ -94,7 +92,7 @@ class MessageDataSource extends PageKeyedDataSource<String, Message> {
|
|||||||
FetchMessages.fetchMessagesAsync(oauthRetrofit, locale, accessToken, where, params.key, new FetchMessages.FetchMessagesListener() {
|
FetchMessages.fetchMessagesAsync(oauthRetrofit, locale, accessToken, where, params.key, new FetchMessages.FetchMessagesListener() {
|
||||||
@Override
|
@Override
|
||||||
public void fetchSuccess(ArrayList<Message> messages, @Nullable String after) {
|
public void fetchSuccess(ArrayList<Message> messages, @Nullable String after) {
|
||||||
if(after == null || after.equals("") || after.equals("null")) {
|
if (after == null || after.equals("") || after.equals("null")) {
|
||||||
callback.onResult(messages, null);
|
callback.onResult(messages, null);
|
||||||
} else {
|
} else {
|
||||||
callback.onResult(messages, after);
|
callback.onResult(messages, after);
|
||||||
|
@ -1,29 +1,22 @@
|
|||||||
package ml.docilealligator.infinityforreddit;
|
package ml.docilealligator.infinityforreddit;
|
||||||
|
|
||||||
public class NetworkState {
|
public class NetworkState {
|
||||||
public enum Status{
|
static final NetworkState LOADED;
|
||||||
LOADING,
|
static final NetworkState LOADING;
|
||||||
SUCCESS,
|
|
||||||
FAILED
|
|
||||||
}
|
|
||||||
|
|
||||||
|
static {
|
||||||
|
LOADED = new NetworkState(Status.SUCCESS, "Success");
|
||||||
|
LOADING = new NetworkState(Status.LOADING, "Loading");
|
||||||
|
}
|
||||||
|
|
||||||
private final Status status;
|
private final Status status;
|
||||||
private final String msg;
|
private final String msg;
|
||||||
|
|
||||||
static final NetworkState LOADED;
|
|
||||||
static final NetworkState LOADING;
|
|
||||||
|
|
||||||
NetworkState(Status status, String msg) {
|
NetworkState(Status status, String msg) {
|
||||||
this.status = status;
|
this.status = status;
|
||||||
this.msg = msg;
|
this.msg = msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
static {
|
|
||||||
LOADED=new NetworkState(Status.SUCCESS,"Success");
|
|
||||||
LOADING=new NetworkState(Status.LOADING,"Loading");
|
|
||||||
}
|
|
||||||
|
|
||||||
public Status getStatus() {
|
public Status getStatus() {
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
@ -31,4 +24,10 @@ public class NetworkState {
|
|||||||
public String getMsg() {
|
public String getMsg() {
|
||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum Status {
|
||||||
|
LOADING,
|
||||||
|
SUCCESS,
|
||||||
|
FAILED
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,16 +7,17 @@ import org.json.JSONException;
|
|||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
public class ParseAndSaveAccountInfo {
|
public class ParseAndSaveAccountInfo {
|
||||||
public interface ParseAndSaveAccountInfoListener {
|
|
||||||
void onParseMyInfoSuccess(String name, String profileImageUrl, String bannerImageUrl, int karma);
|
|
||||||
void onParseMyInfoFail();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void parseAndSaveAccountInfo(String response, RedditDataRoomDatabase redditDataRoomDatabase,
|
public static void parseAndSaveAccountInfo(String response, RedditDataRoomDatabase redditDataRoomDatabase,
|
||||||
ParseAndSaveAccountInfoListener parseAndSaveAccountInfoListener) {
|
ParseAndSaveAccountInfoListener parseAndSaveAccountInfoListener) {
|
||||||
new ParseAndSaveAccountInfoAsyncTask(response, redditDataRoomDatabase, parseAndSaveAccountInfoListener).execute();
|
new ParseAndSaveAccountInfoAsyncTask(response, redditDataRoomDatabase, parseAndSaveAccountInfoListener).execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface ParseAndSaveAccountInfoListener {
|
||||||
|
void onParseMyInfoSuccess(String name, String profileImageUrl, String bannerImageUrl, int karma);
|
||||||
|
|
||||||
|
void onParseMyInfoFail();
|
||||||
|
}
|
||||||
|
|
||||||
private static class ParseAndSaveAccountInfoAsyncTask extends AsyncTask<Void, Void, Void> {
|
private static class ParseAndSaveAccountInfoAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
private JSONObject jsonResponse;
|
private JSONObject jsonResponse;
|
||||||
private RedditDataRoomDatabase redditDataRoomDatabase;
|
private RedditDataRoomDatabase redditDataRoomDatabase;
|
||||||
@ -29,7 +30,7 @@ public class ParseAndSaveAccountInfo {
|
|||||||
private int karma;
|
private int karma;
|
||||||
|
|
||||||
ParseAndSaveAccountInfoAsyncTask(String response, RedditDataRoomDatabase redditDataRoomDatabase,
|
ParseAndSaveAccountInfoAsyncTask(String response, RedditDataRoomDatabase redditDataRoomDatabase,
|
||||||
ParseAndSaveAccountInfoListener parseAndSaveAccountInfoListener){
|
ParseAndSaveAccountInfoListener parseAndSaveAccountInfoListener) {
|
||||||
try {
|
try {
|
||||||
jsonResponse = new JSONObject(response);
|
jsonResponse = new JSONObject(response);
|
||||||
this.redditDataRoomDatabase = redditDataRoomDatabase;
|
this.redditDataRoomDatabase = redditDataRoomDatabase;
|
||||||
@ -45,7 +46,7 @@ public class ParseAndSaveAccountInfo {
|
|||||||
try {
|
try {
|
||||||
name = jsonResponse.getString(JSONUtils.NAME_KEY);
|
name = jsonResponse.getString(JSONUtils.NAME_KEY);
|
||||||
profileImageUrl = Html.fromHtml(jsonResponse.getString(JSONUtils.ICON_IMG_KEY)).toString();
|
profileImageUrl = Html.fromHtml(jsonResponse.getString(JSONUtils.ICON_IMG_KEY)).toString();
|
||||||
if(!jsonResponse.isNull(JSONUtils.SUBREDDIT_KEY)) {
|
if (!jsonResponse.isNull(JSONUtils.SUBREDDIT_KEY)) {
|
||||||
bannerImageUrl = Html.fromHtml(jsonResponse.getJSONObject(JSONUtils.SUBREDDIT_KEY).getString(JSONUtils.BANNER_IMG_KEY)).toString();
|
bannerImageUrl = Html.fromHtml(jsonResponse.getJSONObject(JSONUtils.SUBREDDIT_KEY).getString(JSONUtils.BANNER_IMG_KEY)).toString();
|
||||||
}
|
}
|
||||||
int linkKarma = jsonResponse.getInt(JSONUtils.LINK_KARMA_KEY);
|
int linkKarma = jsonResponse.getInt(JSONUtils.LINK_KARMA_KEY);
|
||||||
@ -61,7 +62,7 @@ public class ParseAndSaveAccountInfo {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(Void aVoid) {
|
protected void onPostExecute(Void aVoid) {
|
||||||
if(!parseFailed) {
|
if (!parseFailed) {
|
||||||
parseAndSaveAccountInfoListener.onParseMyInfoSuccess(name, profileImageUrl, bannerImageUrl, karma);
|
parseAndSaveAccountInfoListener.onParseMyInfoSuccess(name, profileImageUrl, bannerImageUrl, karma);
|
||||||
} else {
|
} else {
|
||||||
parseAndSaveAccountInfoListener.onParseMyInfoFail();
|
parseAndSaveAccountInfoListener.onParseMyInfoFail();
|
||||||
|
@ -19,17 +19,6 @@ import static ml.docilealligator.infinityforreddit.CommentData.VOTE_TYPE_NO_VOTE
|
|||||||
import static ml.docilealligator.infinityforreddit.CommentData.VOTE_TYPE_UPVOTE;
|
import static ml.docilealligator.infinityforreddit.CommentData.VOTE_TYPE_UPVOTE;
|
||||||
|
|
||||||
public class ParseComment {
|
public class ParseComment {
|
||||||
public interface ParseCommentListener {
|
|
||||||
void onParseCommentSuccess(ArrayList<CommentData> expandedComments, String parentId,
|
|
||||||
ArrayList<String> moreChildrenFullnames);
|
|
||||||
void onParseCommentFailed();
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ParseSentCommentListener {
|
|
||||||
void onParseSentCommentSuccess(CommentData commentData);
|
|
||||||
void onParseSentCommentFailed(@Nullable String errorMessage);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void parseComment(String response, ArrayList<CommentData> commentData, Locale locale,
|
public static void parseComment(String response, ArrayList<CommentData> commentData, Locale locale,
|
||||||
ParseCommentListener parseCommentListener) {
|
ParseCommentListener parseCommentListener) {
|
||||||
try {
|
try {
|
||||||
@ -61,6 +50,150 @@ public class ParseComment {
|
|||||||
new ParseSentCommentAsyncTask(response, depth, locale, parseSentCommentListener).execute();
|
new ParseSentCommentAsyncTask(response, depth, locale, parseSentCommentListener).execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void parseCommentRecursion(JSONArray comments, ArrayList<CommentData> newCommentData,
|
||||||
|
ArrayList<String> moreChildrenFullnames, int depth, Locale locale) throws JSONException {
|
||||||
|
int actualCommentLength;
|
||||||
|
|
||||||
|
if (comments.length() == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONObject more = comments.getJSONObject(comments.length() - 1).getJSONObject(JSONUtils.DATA_KEY);
|
||||||
|
|
||||||
|
//Maybe moreChildrenFullnames contain only commentsJSONArray and no more info
|
||||||
|
if (more.has(JSONUtils.COUNT_KEY)) {
|
||||||
|
JSONArray childrenArray = more.getJSONArray(JSONUtils.CHILDREN_KEY);
|
||||||
|
|
||||||
|
for (int i = 0; i < childrenArray.length(); i++) {
|
||||||
|
moreChildrenFullnames.add("t1_" + childrenArray.getString(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
actualCommentLength = comments.length() - 1;
|
||||||
|
} else {
|
||||||
|
actualCommentLength = comments.length();
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < actualCommentLength; i++) {
|
||||||
|
JSONObject data = comments.getJSONObject(i).getJSONObject(JSONUtils.DATA_KEY);
|
||||||
|
CommentData singleComment = parseSingleComment(data, depth, locale);
|
||||||
|
|
||||||
|
if (data.get(JSONUtils.REPLIES_KEY) instanceof JSONObject) {
|
||||||
|
JSONArray childrenArray = data.getJSONObject(JSONUtils.REPLIES_KEY)
|
||||||
|
.getJSONObject(JSONUtils.DATA_KEY).getJSONArray(JSONUtils.CHILDREN_KEY);
|
||||||
|
ArrayList<CommentData> children = new ArrayList<>();
|
||||||
|
ArrayList<String> nextMoreChildrenFullnames = new ArrayList<>();
|
||||||
|
parseCommentRecursion(childrenArray, children, nextMoreChildrenFullnames, singleComment.getDepth(),
|
||||||
|
locale);
|
||||||
|
singleComment.addChildren(children);
|
||||||
|
singleComment.setMoreChildrenFullnames(nextMoreChildrenFullnames);
|
||||||
|
}
|
||||||
|
|
||||||
|
newCommentData.add(singleComment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void expandChildren(ArrayList<CommentData> comments, ArrayList<CommentData> visibleComments) {
|
||||||
|
for (CommentData c : comments) {
|
||||||
|
visibleComments.add(c);
|
||||||
|
if (c.hasReply()) {
|
||||||
|
c.setExpanded(true);
|
||||||
|
expandChildren(c.getChildren(), visibleComments);
|
||||||
|
}
|
||||||
|
if (c.hasMoreChildrenFullnames() && c.getMoreChildrenFullnames().size() > c.getMoreChildrenStartingIndex()) {
|
||||||
|
//Add a load more placeholder
|
||||||
|
CommentData placeholder = new CommentData(c.getFullName(), c.getDepth() + 1);
|
||||||
|
visibleComments.add(placeholder);
|
||||||
|
c.addChild(placeholder, c.getChildren().size());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static CommentData parseSingleComment(JSONObject singleCommentData, int depth, Locale locale) throws JSONException {
|
||||||
|
String id = singleCommentData.getString(JSONUtils.ID_KEY);
|
||||||
|
String fullName = singleCommentData.getString(JSONUtils.NAME_KEY);
|
||||||
|
String author = singleCommentData.getString(JSONUtils.AUTHOR_KEY);
|
||||||
|
String linkAuthor = singleCommentData.has(JSONUtils.LINK_AUTHOR_KEY) ? singleCommentData.getString(JSONUtils.LINK_AUTHOR_KEY) : null;
|
||||||
|
String linkId = singleCommentData.getString(JSONUtils.LINK_ID_KEY).substring(3);
|
||||||
|
String subredditName = singleCommentData.getString(JSONUtils.SUBREDDIT_KEY);
|
||||||
|
String parentId = singleCommentData.getString(JSONUtils.PARENT_ID_KEY);
|
||||||
|
boolean isSubmitter = singleCommentData.getBoolean(JSONUtils.IS_SUBMITTER_KEY);
|
||||||
|
String distinguished = singleCommentData.getString(JSONUtils.DISTINGUISHED_KEY);
|
||||||
|
String commentContent = "";
|
||||||
|
if (!singleCommentData.isNull(JSONUtils.BODY_KEY)) {
|
||||||
|
commentContent = Utils.addSubredditAndUserLink(singleCommentData.getString(JSONUtils.BODY_KEY).trim());
|
||||||
|
}
|
||||||
|
String permalink = Html.fromHtml(singleCommentData.getString(JSONUtils.PERMALINK_KEY)).toString();
|
||||||
|
int score = singleCommentData.getInt(JSONUtils.SCORE_KEY);
|
||||||
|
int voteType;
|
||||||
|
if (singleCommentData.isNull(JSONUtils.LIKES_KEY)) {
|
||||||
|
voteType = VOTE_TYPE_NO_VOTE;
|
||||||
|
} else {
|
||||||
|
voteType = singleCommentData.getBoolean(JSONUtils.LIKES_KEY) ? VOTE_TYPE_UPVOTE : VOTE_TYPE_DOWNVOTE;
|
||||||
|
score -= voteType;
|
||||||
|
}
|
||||||
|
long submitTime = singleCommentData.getLong(JSONUtils.CREATED_UTC_KEY) * 1000;
|
||||||
|
boolean scoreHidden = singleCommentData.getBoolean(JSONUtils.SCORE_HIDDEN_KEY);
|
||||||
|
boolean saved = singleCommentData.getBoolean(JSONUtils.SAVED_KEY);
|
||||||
|
|
||||||
|
Calendar submitTimeCalendar = Calendar.getInstance();
|
||||||
|
submitTimeCalendar.setTimeInMillis(submitTime);
|
||||||
|
String formattedSubmitTime = new SimpleDateFormat("MMM d, yyyy, HH:mm",
|
||||||
|
locale).format(submitTimeCalendar.getTime());
|
||||||
|
|
||||||
|
if (singleCommentData.has(JSONUtils.DEPTH_KEY)) {
|
||||||
|
depth = singleCommentData.getInt(JSONUtils.DEPTH_KEY);
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean collapsed = singleCommentData.getBoolean(JSONUtils.COLLAPSED_KEY);
|
||||||
|
boolean hasReply = !(singleCommentData.get(JSONUtils.REPLIES_KEY) instanceof String);
|
||||||
|
|
||||||
|
return new CommentData(id, fullName, author, linkAuthor, formattedSubmitTime, commentContent,
|
||||||
|
linkId, subredditName, parentId, score, voteType, isSubmitter, distinguished,
|
||||||
|
permalink, depth, collapsed, hasReply, scoreHidden, saved);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
private static String parseSentCommentErrorMessage(String response) {
|
||||||
|
try {
|
||||||
|
JSONObject responseObject = new JSONObject(response).getJSONObject(JSONUtils.JSON_KEY);
|
||||||
|
|
||||||
|
if (responseObject.getJSONArray(JSONUtils.ERRORS_KEY).length() != 0) {
|
||||||
|
JSONArray error = responseObject.getJSONArray(JSONUtils.ERRORS_KEY)
|
||||||
|
.getJSONArray(responseObject.getJSONArray(JSONUtils.ERRORS_KEY).length() - 1);
|
||||||
|
if (error.length() != 0) {
|
||||||
|
String errorString;
|
||||||
|
if (error.length() >= 2) {
|
||||||
|
errorString = error.getString(1);
|
||||||
|
} else {
|
||||||
|
errorString = error.getString(0);
|
||||||
|
}
|
||||||
|
return errorString.substring(0, 1).toUpperCase() + errorString.substring(1);
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
} catch (JSONException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface ParseCommentListener {
|
||||||
|
void onParseCommentSuccess(ArrayList<CommentData> expandedComments, String parentId,
|
||||||
|
ArrayList<String> moreChildrenFullnames);
|
||||||
|
|
||||||
|
void onParseCommentFailed();
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ParseSentCommentListener {
|
||||||
|
void onParseSentCommentSuccess(CommentData commentData);
|
||||||
|
|
||||||
|
void onParseSentCommentFailed(@Nullable String errorMessage);
|
||||||
|
}
|
||||||
|
|
||||||
private static class ParseCommentAsyncTask extends AsyncTask<Void, Void, Void> {
|
private static class ParseCommentAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
private JSONArray commentsJSONArray;
|
private JSONArray commentsJSONArray;
|
||||||
private ArrayList<CommentData> comments;
|
private ArrayList<CommentData> comments;
|
||||||
@ -74,7 +207,7 @@ public class ParseComment {
|
|||||||
private boolean parseFailed;
|
private boolean parseFailed;
|
||||||
|
|
||||||
ParseCommentAsyncTask(JSONArray commentsJSONArray, ArrayList<CommentData> comments, Locale locale,
|
ParseCommentAsyncTask(JSONArray commentsJSONArray, ArrayList<CommentData> comments, Locale locale,
|
||||||
@Nullable String parentId, int depth, ParseCommentListener parseCommentListener){
|
@Nullable String parentId, int depth, ParseCommentListener parseCommentListener) {
|
||||||
this.commentsJSONArray = commentsJSONArray;
|
this.commentsJSONArray = commentsJSONArray;
|
||||||
this.comments = comments;
|
this.comments = comments;
|
||||||
newComments = new ArrayList<>();
|
newComments = new ArrayList<>();
|
||||||
@ -100,7 +233,7 @@ public class ParseComment {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(Void aVoid) {
|
protected void onPostExecute(Void aVoid) {
|
||||||
if(!parseFailed) {
|
if (!parseFailed) {
|
||||||
comments.addAll(expandedNewComments);
|
comments.addAll(expandedNewComments);
|
||||||
parseCommentListener.onParseCommentSuccess(comments, parentId, moreChildrenFullnames);
|
parseCommentListener.onParseCommentSuccess(comments, parentId, moreChildrenFullnames);
|
||||||
} else {
|
} else {
|
||||||
@ -109,64 +242,6 @@ public class ParseComment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void parseCommentRecursion(JSONArray comments, ArrayList<CommentData> newCommentData,
|
|
||||||
ArrayList<String> moreChildrenFullnames, int depth, Locale locale) throws JSONException {
|
|
||||||
int actualCommentLength;
|
|
||||||
|
|
||||||
if(comments.length() == 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
JSONObject more = comments.getJSONObject(comments.length() - 1).getJSONObject(JSONUtils.DATA_KEY);
|
|
||||||
|
|
||||||
//Maybe moreChildrenFullnames contain only commentsJSONArray and no more info
|
|
||||||
if(more.has(JSONUtils.COUNT_KEY)) {
|
|
||||||
JSONArray childrenArray = more.getJSONArray(JSONUtils.CHILDREN_KEY);
|
|
||||||
|
|
||||||
for(int i = 0; i < childrenArray.length(); i++) {
|
|
||||||
moreChildrenFullnames.add("t1_" + childrenArray.getString(i));
|
|
||||||
}
|
|
||||||
|
|
||||||
actualCommentLength = comments.length() - 1;
|
|
||||||
} else {
|
|
||||||
actualCommentLength = comments.length();
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < actualCommentLength; i++) {
|
|
||||||
JSONObject data = comments.getJSONObject(i).getJSONObject(JSONUtils.DATA_KEY);
|
|
||||||
CommentData singleComment = parseSingleComment(data, depth, locale);
|
|
||||||
|
|
||||||
if(data.get(JSONUtils.REPLIES_KEY) instanceof JSONObject) {
|
|
||||||
JSONArray childrenArray = data.getJSONObject(JSONUtils.REPLIES_KEY)
|
|
||||||
.getJSONObject(JSONUtils.DATA_KEY).getJSONArray(JSONUtils.CHILDREN_KEY);
|
|
||||||
ArrayList<CommentData> children = new ArrayList<>();
|
|
||||||
ArrayList<String> nextMoreChildrenFullnames = new ArrayList<>();
|
|
||||||
parseCommentRecursion(childrenArray, children, nextMoreChildrenFullnames, singleComment.getDepth(),
|
|
||||||
locale);
|
|
||||||
singleComment.addChildren(children);
|
|
||||||
singleComment.setMoreChildrenFullnames(nextMoreChildrenFullnames);
|
|
||||||
}
|
|
||||||
|
|
||||||
newCommentData.add(singleComment);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void expandChildren(ArrayList<CommentData> comments, ArrayList<CommentData> visibleComments) {
|
|
||||||
for(CommentData c : comments) {
|
|
||||||
visibleComments.add(c);
|
|
||||||
if(c.hasReply()) {
|
|
||||||
c.setExpanded(true);
|
|
||||||
expandChildren(c.getChildren(), visibleComments);
|
|
||||||
}
|
|
||||||
if(c.hasMoreChildrenFullnames() && c.getMoreChildrenFullnames().size() > c.getMoreChildrenStartingIndex()) {
|
|
||||||
//Add a load more placeholder
|
|
||||||
CommentData placeholder = new CommentData(c.getFullName(), c.getDepth() + 1);
|
|
||||||
visibleComments.add(placeholder);
|
|
||||||
c.addChild(placeholder, c.getChildren().size());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static class ParseSentCommentAsyncTask extends AsyncTask<Void, Void, Void> {
|
private static class ParseSentCommentAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
private String response;
|
private String response;
|
||||||
private int depth;
|
private int depth;
|
||||||
@ -200,84 +275,11 @@ public class ParseComment {
|
|||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(Void aVoid) {
|
protected void onPostExecute(Void aVoid) {
|
||||||
super.onPostExecute(aVoid);
|
super.onPostExecute(aVoid);
|
||||||
if(parseFailed) {
|
if (parseFailed) {
|
||||||
parseSentCommentListener.onParseSentCommentFailed(errorMessage);
|
parseSentCommentListener.onParseSentCommentFailed(errorMessage);
|
||||||
} else {
|
} else {
|
||||||
parseSentCommentListener.onParseSentCommentSuccess(commentData);
|
parseSentCommentListener.onParseSentCommentSuccess(commentData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static CommentData parseSingleComment(JSONObject singleCommentData, int depth, Locale locale) throws JSONException {
|
|
||||||
String id = singleCommentData.getString(JSONUtils.ID_KEY);
|
|
||||||
String fullName = singleCommentData.getString(JSONUtils.NAME_KEY);
|
|
||||||
String author = singleCommentData.getString(JSONUtils.AUTHOR_KEY);
|
|
||||||
String linkAuthor = singleCommentData.has(JSONUtils.LINK_AUTHOR_KEY) ? singleCommentData.getString(JSONUtils.LINK_AUTHOR_KEY) : null;
|
|
||||||
String linkId = singleCommentData.getString(JSONUtils.LINK_ID_KEY).substring(3);
|
|
||||||
String subredditName = singleCommentData.getString(JSONUtils.SUBREDDIT_KEY);
|
|
||||||
String parentId = singleCommentData.getString(JSONUtils.PARENT_ID_KEY);
|
|
||||||
boolean isSubmitter = singleCommentData.getBoolean(JSONUtils.IS_SUBMITTER_KEY);
|
|
||||||
String distinguished = singleCommentData.getString(JSONUtils.DISTINGUISHED_KEY);
|
|
||||||
String commentContent = "";
|
|
||||||
if(!singleCommentData.isNull(JSONUtils.BODY_KEY)) {
|
|
||||||
commentContent = Utils.addSubredditAndUserLink(singleCommentData.getString(JSONUtils.BODY_KEY).trim());
|
|
||||||
}
|
|
||||||
String permalink = Html.fromHtml(singleCommentData.getString(JSONUtils.PERMALINK_KEY)).toString();
|
|
||||||
int score = singleCommentData.getInt(JSONUtils.SCORE_KEY);
|
|
||||||
int voteType;
|
|
||||||
if(singleCommentData.isNull(JSONUtils.LIKES_KEY)) {
|
|
||||||
voteType = VOTE_TYPE_NO_VOTE;
|
|
||||||
} else {
|
|
||||||
voteType = singleCommentData.getBoolean(JSONUtils.LIKES_KEY) ? VOTE_TYPE_UPVOTE : VOTE_TYPE_DOWNVOTE;
|
|
||||||
score -= voteType;
|
|
||||||
}
|
|
||||||
long submitTime = singleCommentData.getLong(JSONUtils.CREATED_UTC_KEY) * 1000;
|
|
||||||
boolean scoreHidden = singleCommentData.getBoolean(JSONUtils.SCORE_HIDDEN_KEY);
|
|
||||||
boolean saved = singleCommentData.getBoolean(JSONUtils.SAVED_KEY);
|
|
||||||
|
|
||||||
Calendar submitTimeCalendar = Calendar.getInstance();
|
|
||||||
submitTimeCalendar.setTimeInMillis(submitTime);
|
|
||||||
String formattedSubmitTime = new SimpleDateFormat("MMM d, yyyy, HH:mm",
|
|
||||||
locale).format(submitTimeCalendar.getTime());
|
|
||||||
|
|
||||||
if(singleCommentData.has(JSONUtils.DEPTH_KEY)) {
|
|
||||||
depth = singleCommentData.getInt(JSONUtils.DEPTH_KEY);
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean collapsed = singleCommentData.getBoolean(JSONUtils.COLLAPSED_KEY);
|
|
||||||
boolean hasReply = !(singleCommentData.get(JSONUtils.REPLIES_KEY) instanceof String);
|
|
||||||
|
|
||||||
return new CommentData(id, fullName, author, linkAuthor, formattedSubmitTime, commentContent,
|
|
||||||
linkId, subredditName, parentId, score, voteType, isSubmitter, distinguished,
|
|
||||||
permalink, depth, collapsed, hasReply, scoreHidden, saved);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
private static String parseSentCommentErrorMessage(String response) {
|
|
||||||
try {
|
|
||||||
JSONObject responseObject = new JSONObject(response).getJSONObject(JSONUtils.JSON_KEY);
|
|
||||||
|
|
||||||
if(responseObject.getJSONArray(JSONUtils.ERRORS_KEY).length() != 0) {
|
|
||||||
JSONArray error = responseObject.getJSONArray(JSONUtils.ERRORS_KEY)
|
|
||||||
.getJSONArray(responseObject.getJSONArray(JSONUtils.ERRORS_KEY).length() - 1);
|
|
||||||
if(error.length() != 0) {
|
|
||||||
String errorString;
|
|
||||||
if(error.length() >= 2) {
|
|
||||||
errorString = error.getString(1);
|
|
||||||
} else {
|
|
||||||
errorString = error.getString(0);
|
|
||||||
}
|
|
||||||
return errorString.substring(0, 1).toUpperCase() + errorString.substring(1);
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
} catch (JSONException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -19,16 +19,6 @@ import ml.docilealligator.infinityforreddit.Fragment.PostFragment;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
public class ParsePost {
|
public class ParsePost {
|
||||||
interface ParsePostsListingListener {
|
|
||||||
void onParsePostsListingSuccess(ArrayList<Post> newPostData, String lastItem);
|
|
||||||
void onParsePostsListingFail();
|
|
||||||
}
|
|
||||||
|
|
||||||
public interface ParsePostListener {
|
|
||||||
void onParsePostSuccess(Post post);
|
|
||||||
void onParsePostFail();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void parsePosts(String response, Locale locale, int nPosts, int filter, boolean nsfw,
|
static void parsePosts(String response, Locale locale, int nPosts, int filter, boolean nsfw,
|
||||||
ParsePostsListingListener parsePostsListingListener) {
|
ParsePostsListingListener parsePostsListingListener) {
|
||||||
new ParsePostDataAsyncTask(response, locale, nPosts, filter, nsfw, parsePostsListingListener).execute();
|
new ParsePostDataAsyncTask(response, locale, nPosts, filter, nsfw, parsePostsListingListener).execute();
|
||||||
@ -38,6 +28,227 @@ public class ParsePost {
|
|||||||
new ParsePostDataAsyncTask(response, locale, true, parsePostListener).execute();
|
new ParsePostDataAsyncTask(response, locale, true, parsePostListener).execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static Post parseBasicData(JSONObject data, Locale locale) throws JSONException {
|
||||||
|
String id = data.getString(JSONUtils.ID_KEY);
|
||||||
|
String fullName = data.getString(JSONUtils.NAME_KEY);
|
||||||
|
String subredditName = data.getString(JSONUtils.SUBREDDIT_KEY);
|
||||||
|
String subredditNamePrefixed = data.getString(JSONUtils.SUBREDDIT_NAME_PREFIX_KEY);
|
||||||
|
String author = data.getString(JSONUtils.AUTHOR_KEY);
|
||||||
|
long postTime = data.getLong(JSONUtils.CREATED_UTC_KEY) * 1000;
|
||||||
|
String title = data.getString(JSONUtils.TITLE_KEY);
|
||||||
|
int score = data.getInt(JSONUtils.SCORE_KEY);
|
||||||
|
int voteType;
|
||||||
|
int gilded = data.getInt(JSONUtils.GILDED_KEY);
|
||||||
|
int nComments = data.getInt(JSONUtils.NUM_COMMENTS_KEY);
|
||||||
|
boolean hidden = data.getBoolean(JSONUtils.HIDDEN_KEY);
|
||||||
|
boolean spoiler = data.getBoolean(JSONUtils.SPOILER_KEY);
|
||||||
|
boolean nsfw = data.getBoolean(JSONUtils.NSFW_KEY);
|
||||||
|
boolean stickied = data.getBoolean(JSONUtils.STICKIED_KEY);
|
||||||
|
boolean archived = data.getBoolean(JSONUtils.ARCHIVED_KEY);
|
||||||
|
boolean locked = data.getBoolean(JSONUtils.LOCKEC_KEY);
|
||||||
|
boolean saved = data.getBoolean(JSONUtils.SAVED_KEY);
|
||||||
|
String flair = null;
|
||||||
|
if (!data.isNull(JSONUtils.LINK_FLAIR_TEXT_KEY)) {
|
||||||
|
flair = data.getString(JSONUtils.LINK_FLAIR_TEXT_KEY);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data.isNull(JSONUtils.LIKES_KEY)) {
|
||||||
|
voteType = 0;
|
||||||
|
} else {
|
||||||
|
voteType = data.getBoolean(JSONUtils.LIKES_KEY) ? 1 : -1;
|
||||||
|
score -= voteType;
|
||||||
|
}
|
||||||
|
|
||||||
|
Calendar postTimeCalendar = Calendar.getInstance();
|
||||||
|
postTimeCalendar.setTimeInMillis(postTime);
|
||||||
|
String formattedPostTime = new SimpleDateFormat("MMM d, yyyy, HH:mm",
|
||||||
|
locale).format(postTimeCalendar.getTime());
|
||||||
|
String permalink = Html.fromHtml(data.getString(JSONUtils.PERMALINK_KEY)).toString();
|
||||||
|
|
||||||
|
String previewUrl = "";
|
||||||
|
int previewWidth = -1;
|
||||||
|
int previewHeight = -1;
|
||||||
|
if (data.has(JSONUtils.PREVIEW_KEY)) {
|
||||||
|
previewUrl = data.getJSONObject(JSONUtils.PREVIEW_KEY).getJSONArray(JSONUtils.IMAGES_KEY).getJSONObject(0)
|
||||||
|
.getJSONObject(JSONUtils.SOURCE_KEY).getString(JSONUtils.URL_KEY);
|
||||||
|
previewWidth = data.getJSONObject(JSONUtils.PREVIEW_KEY).getJSONArray(JSONUtils.IMAGES_KEY).getJSONObject(0)
|
||||||
|
.getJSONObject(JSONUtils.SOURCE_KEY).getInt(JSONUtils.WIDTH_KEY);
|
||||||
|
previewHeight = data.getJSONObject(JSONUtils.PREVIEW_KEY).getJSONArray(JSONUtils.IMAGES_KEY).getJSONObject(0)
|
||||||
|
.getJSONObject(JSONUtils.SOURCE_KEY).getInt(JSONUtils.HEIGHT_KEY);
|
||||||
|
}
|
||||||
|
if (data.has(JSONUtils.CROSSPOST_PARENT_LIST)) {
|
||||||
|
//Cross post
|
||||||
|
data = data.getJSONArray(JSONUtils.CROSSPOST_PARENT_LIST).getJSONObject(0);
|
||||||
|
Post crosspostParent = parseBasicData(data, locale);
|
||||||
|
Post post = parseData(data, permalink, id, fullName, subredditName, subredditNamePrefixed,
|
||||||
|
author, formattedPostTime, title, previewUrl, previewWidth, previewHeight,
|
||||||
|
score, voteType, gilded, nComments, flair, hidden, spoiler, nsfw, stickied,
|
||||||
|
archived, locked, saved, true);
|
||||||
|
post.setCrosspostParentId(crosspostParent.getId());
|
||||||
|
return post;
|
||||||
|
} else {
|
||||||
|
return parseData(data, permalink, id, fullName, subredditName, subredditNamePrefixed,
|
||||||
|
author, formattedPostTime, title, previewUrl, previewWidth, previewHeight,
|
||||||
|
score, voteType, gilded, nComments, flair, hidden, spoiler, nsfw, stickied,
|
||||||
|
archived, locked, saved, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Post parseData(JSONObject data, String permalink, String id, String fullName,
|
||||||
|
String subredditName, String subredditNamePrefixed, String author,
|
||||||
|
String formattedPostTime, String title, String previewUrl, int previewWidth,
|
||||||
|
int previewHeight, int score, int voteType, int gilded, int nComments,
|
||||||
|
String flair, boolean hidden, boolean spoiler, boolean nsfw, boolean stickied,
|
||||||
|
boolean archived, boolean locked, boolean saved, boolean isCrosspost) throws JSONException {
|
||||||
|
Post post;
|
||||||
|
|
||||||
|
boolean isVideo = data.getBoolean(JSONUtils.IS_VIDEO_KEY);
|
||||||
|
String url = Html.fromHtml(data.getString(JSONUtils.URL_KEY)).toString();
|
||||||
|
|
||||||
|
if (!data.has(JSONUtils.PREVIEW_KEY) && previewUrl.equals("")) {
|
||||||
|
if (url.contains(permalink)) {
|
||||||
|
//Text post
|
||||||
|
int postType = Post.TEXT_TYPE;
|
||||||
|
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime,
|
||||||
|
title, permalink, score, postType, voteType, gilded, nComments, flair, hidden,
|
||||||
|
spoiler, nsfw, stickied, archived, locked, saved, isCrosspost);
|
||||||
|
if (data.isNull(JSONUtils.SELFTEXT_KEY)) {
|
||||||
|
post.setSelfText("");
|
||||||
|
} else {
|
||||||
|
post.setSelfText(Utils.addSubredditAndUserLink(data.getString(JSONUtils.SELFTEXT_KEY).trim()));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//No preview link post
|
||||||
|
int postType = Post.NO_PREVIEW_LINK_TYPE;
|
||||||
|
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime,
|
||||||
|
title, previewUrl, url, permalink, score, postType, voteType, gilded, nComments,
|
||||||
|
flair, hidden, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost);
|
||||||
|
if (data.isNull(JSONUtils.SELFTEXT_KEY)) {
|
||||||
|
post.setSelfText("");
|
||||||
|
} else {
|
||||||
|
post.setSelfText(Utils.addSubredditAndUserLink(data.getString(JSONUtils.SELFTEXT_KEY).trim()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (previewUrl.equals("")) {
|
||||||
|
previewUrl = Html.fromHtml(data.getJSONObject(JSONUtils.PREVIEW_KEY).getJSONArray(JSONUtils.IMAGES_KEY).getJSONObject(0)
|
||||||
|
.getJSONObject(JSONUtils.SOURCE_KEY).getString(JSONUtils.URL_KEY)).toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isVideo) {
|
||||||
|
//Video post
|
||||||
|
JSONObject redditVideoObject = data.getJSONObject(JSONUtils.MEDIA_KEY).getJSONObject(JSONUtils.REDDIT_VIDEO_KEY);
|
||||||
|
int postType = Post.VIDEO_TYPE;
|
||||||
|
String videoUrl = Html.fromHtml(redditVideoObject.getString(JSONUtils.HLS_URL_KEY)).toString();
|
||||||
|
|
||||||
|
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime,
|
||||||
|
title, previewUrl, permalink, score, postType, voteType, gilded, nComments,
|
||||||
|
flair, hidden, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost);
|
||||||
|
|
||||||
|
post.setPreviewWidth(previewWidth);
|
||||||
|
post.setPreviewHeight(previewHeight);
|
||||||
|
post.setVideoUrl(videoUrl);
|
||||||
|
} else if (data.has(JSONUtils.PREVIEW_KEY)) {
|
||||||
|
if (data.getJSONObject(JSONUtils.PREVIEW_KEY).has(JSONUtils.REDDIT_VIDEO_PREVIEW_KEY)) {
|
||||||
|
//Gif video post (HLS)
|
||||||
|
int postType = Post.GIF_VIDEO_TYPE;
|
||||||
|
String videoUrl = Html.fromHtml(data.getJSONObject(JSONUtils.PREVIEW_KEY)
|
||||||
|
.getJSONObject(JSONUtils.REDDIT_VIDEO_PREVIEW_KEY).getString(JSONUtils.HLS_URL_KEY)).toString();
|
||||||
|
|
||||||
|
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author,
|
||||||
|
formattedPostTime, title, previewUrl, permalink, score, postType, voteType,
|
||||||
|
gilded, nComments, flair, hidden, spoiler, nsfw, stickied, archived,
|
||||||
|
locked, saved, isCrosspost);
|
||||||
|
post.setPreviewWidth(previewWidth);
|
||||||
|
post.setPreviewHeight(previewHeight);
|
||||||
|
post.setVideoUrl(videoUrl);
|
||||||
|
} else {
|
||||||
|
if (url.endsWith("jpg") || url.endsWith("png")) {
|
||||||
|
//Image post
|
||||||
|
int postType = Post.IMAGE_TYPE;
|
||||||
|
|
||||||
|
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author,
|
||||||
|
formattedPostTime, title, url, url, permalink, score, postType,
|
||||||
|
voteType, gilded, nComments, flair, hidden, spoiler, nsfw, stickied,
|
||||||
|
archived, locked, saved, isCrosspost);
|
||||||
|
|
||||||
|
post.setPreviewWidth(previewWidth);
|
||||||
|
post.setPreviewHeight(previewHeight);
|
||||||
|
} else {
|
||||||
|
if (url.contains(permalink)) {
|
||||||
|
//Text post but with a preview
|
||||||
|
int postType = Post.TEXT_TYPE;
|
||||||
|
|
||||||
|
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author,
|
||||||
|
formattedPostTime, title, permalink, score, postType, voteType,
|
||||||
|
gilded, nComments, flair, hidden, spoiler, nsfw, stickied, archived,
|
||||||
|
locked, saved, isCrosspost);
|
||||||
|
|
||||||
|
post.setPreviewWidth(previewWidth);
|
||||||
|
post.setPreviewHeight(previewHeight);
|
||||||
|
|
||||||
|
if (data.isNull(JSONUtils.SELFTEXT_KEY)) {
|
||||||
|
post.setSelfText("");
|
||||||
|
} else {
|
||||||
|
post.setSelfText(Utils.addSubredditAndUserLink(data.getString(JSONUtils.SELFTEXT_KEY).trim()));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//Link post
|
||||||
|
int postType = Post.LINK_TYPE;
|
||||||
|
|
||||||
|
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author,
|
||||||
|
formattedPostTime, title, previewUrl, url, permalink, score, postType,
|
||||||
|
voteType, gilded, nComments, flair, hidden, spoiler, nsfw, stickied,
|
||||||
|
archived, locked, saved, isCrosspost);
|
||||||
|
if (data.isNull(JSONUtils.SELFTEXT_KEY)) {
|
||||||
|
post.setSelfText("");
|
||||||
|
} else {
|
||||||
|
post.setSelfText(Utils.addSubredditAndUserLink(data.getString(JSONUtils.SELFTEXT_KEY).trim()));
|
||||||
|
}
|
||||||
|
|
||||||
|
post.setPreviewWidth(previewWidth);
|
||||||
|
post.setPreviewHeight(previewHeight);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (url.endsWith("jpg") || url.endsWith("png")) {
|
||||||
|
//Image post
|
||||||
|
int postType = Post.IMAGE_TYPE;
|
||||||
|
|
||||||
|
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author,
|
||||||
|
formattedPostTime, title, previewUrl, url, permalink, score, postType,
|
||||||
|
voteType, gilded, nComments, flair, hidden, spoiler, nsfw, stickied,
|
||||||
|
archived, locked, saved, isCrosspost);
|
||||||
|
post.setPreviewWidth(previewWidth);
|
||||||
|
post.setPreviewHeight(previewHeight);
|
||||||
|
} else {
|
||||||
|
//CP No Preview Link post
|
||||||
|
int postType = Post.NO_PREVIEW_LINK_TYPE;
|
||||||
|
|
||||||
|
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author,
|
||||||
|
formattedPostTime, title, url, url, permalink, score, postType, voteType,
|
||||||
|
gilded, nComments, flair, hidden, spoiler, nsfw, stickied, archived, locked,
|
||||||
|
saved, isCrosspost);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return post;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ParsePostsListingListener {
|
||||||
|
void onParsePostsListingSuccess(ArrayList<Post> newPostData, String lastItem);
|
||||||
|
|
||||||
|
void onParsePostsListingFail();
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface ParsePostListener {
|
||||||
|
void onParsePostSuccess(Post post);
|
||||||
|
|
||||||
|
void onParsePostFail();
|
||||||
|
}
|
||||||
|
|
||||||
private static class ParsePostDataAsyncTask extends AsyncTask<Void, Void, Void> {
|
private static class ParsePostDataAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
private JSONArray allData;
|
private JSONArray allData;
|
||||||
private Locale locale;
|
private Locale locale;
|
||||||
@ -86,7 +297,7 @@ public class ParsePost {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Void doInBackground(Void... voids) {
|
protected Void doInBackground(Void... voids) {
|
||||||
if(parseFailed) {
|
if (parseFailed) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,17 +326,17 @@ public class ParsePost {
|
|||||||
|
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < size; i++) {
|
||||||
try {
|
try {
|
||||||
if(allData.getJSONObject(i).getString(JSONUtils.KIND_KEY).equals("t3")) {
|
if (allData.getJSONObject(i).getString(JSONUtils.KIND_KEY).equals("t3")) {
|
||||||
JSONObject data = allData.getJSONObject(i).getJSONObject(JSONUtils.DATA_KEY);
|
JSONObject data = allData.getJSONObject(i).getJSONObject(JSONUtils.DATA_KEY);
|
||||||
Post post = parseBasicData(data, locale);
|
Post post = parseBasicData(data, locale);
|
||||||
if(post != null && !(!nsfw && post.isNSFW())) {
|
if (post != null && !(!nsfw && post.isNSFW())) {
|
||||||
if (filter == PostFragment.EXTRA_NO_FILTER) {
|
if (filter == PostFragment.EXTRA_NO_FILTER) {
|
||||||
newPosts.add(post);
|
newPosts.add(post);
|
||||||
} else if (filter == post.getPostType()) {
|
} else if (filter == post.getPostType()) {
|
||||||
newPosts.add(post);
|
newPosts.add(post);
|
||||||
} else if (filter == Post.LINK_TYPE && post.getPostType() == Post.NO_PREVIEW_LINK_TYPE) {
|
} else if (filter == Post.LINK_TYPE && post.getPostType() == Post.NO_PREVIEW_LINK_TYPE) {
|
||||||
newPosts.add(post);
|
newPosts.add(post);
|
||||||
} else if(filter == Post.NSFW_TYPE && post.isNSFW()) {
|
} else if (filter == Post.NSFW_TYPE && post.isNSFW()) {
|
||||||
newPosts.add(post);
|
newPosts.add(post);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -140,14 +351,14 @@ public class ParsePost {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(Void aVoid) {
|
protected void onPostExecute(Void aVoid) {
|
||||||
if(!parseFailed) {
|
if (!parseFailed) {
|
||||||
if(newPosts != null) {
|
if (newPosts != null) {
|
||||||
parsePostsListingListener.onParsePostsListingSuccess(newPosts, lastItem);
|
parsePostsListingListener.onParsePostsListingSuccess(newPosts, lastItem);
|
||||||
} else {
|
} else {
|
||||||
parsePostListener.onParsePostSuccess(post);
|
parsePostListener.onParsePostSuccess(post);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(parsePostsListingListener != null) {
|
if (parsePostsListingListener != null) {
|
||||||
parsePostsListingListener.onParsePostsListingFail();
|
parsePostsListingListener.onParsePostsListingFail();
|
||||||
} else {
|
} else {
|
||||||
parsePostListener.onParsePostFail();
|
parsePostListener.onParsePostFail();
|
||||||
@ -155,213 +366,4 @@ public class ParsePost {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Post parseBasicData(JSONObject data, Locale locale) throws JSONException {
|
|
||||||
String id = data.getString(JSONUtils.ID_KEY);
|
|
||||||
String fullName = data.getString(JSONUtils.NAME_KEY);
|
|
||||||
String subredditName = data.getString(JSONUtils.SUBREDDIT_KEY);
|
|
||||||
String subredditNamePrefixed = data.getString(JSONUtils.SUBREDDIT_NAME_PREFIX_KEY);
|
|
||||||
String author = data.getString(JSONUtils.AUTHOR_KEY);
|
|
||||||
long postTime = data.getLong(JSONUtils.CREATED_UTC_KEY) * 1000;
|
|
||||||
String title = data.getString(JSONUtils.TITLE_KEY);
|
|
||||||
int score = data.getInt(JSONUtils.SCORE_KEY);
|
|
||||||
int voteType;
|
|
||||||
int gilded = data.getInt(JSONUtils.GILDED_KEY);
|
|
||||||
int nComments = data.getInt(JSONUtils.NUM_COMMENTS_KEY);
|
|
||||||
boolean hidden = data.getBoolean(JSONUtils.HIDDEN_KEY);
|
|
||||||
boolean spoiler = data.getBoolean(JSONUtils.SPOILER_KEY);
|
|
||||||
boolean nsfw = data.getBoolean(JSONUtils.NSFW_KEY);
|
|
||||||
boolean stickied = data.getBoolean(JSONUtils.STICKIED_KEY);
|
|
||||||
boolean archived = data.getBoolean(JSONUtils.ARCHIVED_KEY);
|
|
||||||
boolean locked = data.getBoolean(JSONUtils.LOCKEC_KEY);
|
|
||||||
boolean saved = data.getBoolean(JSONUtils.SAVED_KEY);
|
|
||||||
String flair = null;
|
|
||||||
if(!data.isNull(JSONUtils.LINK_FLAIR_TEXT_KEY)) {
|
|
||||||
flair = data.getString(JSONUtils.LINK_FLAIR_TEXT_KEY);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(data.isNull(JSONUtils.LIKES_KEY)) {
|
|
||||||
voteType = 0;
|
|
||||||
} else {
|
|
||||||
voteType = data.getBoolean(JSONUtils.LIKES_KEY) ? 1 : -1;
|
|
||||||
score -= voteType;
|
|
||||||
}
|
|
||||||
|
|
||||||
Calendar postTimeCalendar = Calendar.getInstance();
|
|
||||||
postTimeCalendar.setTimeInMillis(postTime);
|
|
||||||
String formattedPostTime = new SimpleDateFormat("MMM d, yyyy, HH:mm",
|
|
||||||
locale).format(postTimeCalendar.getTime());
|
|
||||||
String permalink = Html.fromHtml(data.getString(JSONUtils.PERMALINK_KEY)).toString();
|
|
||||||
|
|
||||||
String previewUrl = "";
|
|
||||||
int previewWidth = -1;
|
|
||||||
int previewHeight = -1;
|
|
||||||
if(data.has(JSONUtils.PREVIEW_KEY)) {
|
|
||||||
previewUrl = data.getJSONObject(JSONUtils.PREVIEW_KEY).getJSONArray(JSONUtils.IMAGES_KEY).getJSONObject(0)
|
|
||||||
.getJSONObject(JSONUtils.SOURCE_KEY).getString(JSONUtils.URL_KEY);
|
|
||||||
previewWidth = data.getJSONObject(JSONUtils.PREVIEW_KEY).getJSONArray(JSONUtils.IMAGES_KEY).getJSONObject(0)
|
|
||||||
.getJSONObject(JSONUtils.SOURCE_KEY).getInt(JSONUtils.WIDTH_KEY);
|
|
||||||
previewHeight = data.getJSONObject(JSONUtils.PREVIEW_KEY).getJSONArray(JSONUtils.IMAGES_KEY).getJSONObject(0)
|
|
||||||
.getJSONObject(JSONUtils.SOURCE_KEY).getInt(JSONUtils.HEIGHT_KEY);
|
|
||||||
}
|
|
||||||
if(data.has(JSONUtils.CROSSPOST_PARENT_LIST)) {
|
|
||||||
//Cross post
|
|
||||||
data = data.getJSONArray(JSONUtils.CROSSPOST_PARENT_LIST).getJSONObject(0);
|
|
||||||
Post crosspostParent = parseBasicData(data, locale);
|
|
||||||
Post post = parseData(data, permalink, id, fullName, subredditName, subredditNamePrefixed,
|
|
||||||
author, formattedPostTime, title, previewUrl, previewWidth, previewHeight,
|
|
||||||
score, voteType, gilded, nComments, flair, hidden, spoiler, nsfw, stickied,
|
|
||||||
archived, locked, saved, true);
|
|
||||||
post.setCrosspostParentId(crosspostParent.getId());
|
|
||||||
return post;
|
|
||||||
} else {
|
|
||||||
return parseData(data, permalink, id, fullName, subredditName, subredditNamePrefixed,
|
|
||||||
author, formattedPostTime, title, previewUrl, previewWidth, previewHeight,
|
|
||||||
score, voteType, gilded, nComments, flair, hidden, spoiler, nsfw, stickied,
|
|
||||||
archived, locked, saved, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Post parseData(JSONObject data, String permalink, String id, String fullName,
|
|
||||||
String subredditName, String subredditNamePrefixed, String author,
|
|
||||||
String formattedPostTime, String title, String previewUrl, int previewWidth,
|
|
||||||
int previewHeight, int score, int voteType, int gilded, int nComments,
|
|
||||||
String flair, boolean hidden, boolean spoiler, boolean nsfw, boolean stickied,
|
|
||||||
boolean archived, boolean locked, boolean saved, boolean isCrosspost) throws JSONException {
|
|
||||||
Post post;
|
|
||||||
|
|
||||||
boolean isVideo = data.getBoolean(JSONUtils.IS_VIDEO_KEY);
|
|
||||||
String url = Html.fromHtml(data.getString(JSONUtils.URL_KEY)).toString();
|
|
||||||
|
|
||||||
if(!data.has(JSONUtils.PREVIEW_KEY) && previewUrl.equals("")) {
|
|
||||||
if(url.contains(permalink)) {
|
|
||||||
//Text post
|
|
||||||
int postType = Post.TEXT_TYPE;
|
|
||||||
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime,
|
|
||||||
title, permalink, score, postType, voteType, gilded, nComments, flair, hidden,
|
|
||||||
spoiler, nsfw, stickied, archived, locked, saved, isCrosspost);
|
|
||||||
if(data.isNull(JSONUtils.SELFTEXT_KEY)) {
|
|
||||||
post.setSelfText("");
|
|
||||||
} else {
|
|
||||||
post.setSelfText(Utils.addSubredditAndUserLink(data.getString(JSONUtils.SELFTEXT_KEY).trim()));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//No preview link post
|
|
||||||
int postType = Post.NO_PREVIEW_LINK_TYPE;
|
|
||||||
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime,
|
|
||||||
title, previewUrl, url, permalink, score, postType, voteType, gilded, nComments,
|
|
||||||
flair, hidden, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost);
|
|
||||||
if(data.isNull(JSONUtils.SELFTEXT_KEY)) {
|
|
||||||
post.setSelfText("");
|
|
||||||
} else {
|
|
||||||
post.setSelfText(Utils.addSubredditAndUserLink(data.getString(JSONUtils.SELFTEXT_KEY).trim()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if(previewUrl.equals("")) {
|
|
||||||
previewUrl = Html.fromHtml(data.getJSONObject(JSONUtils.PREVIEW_KEY).getJSONArray(JSONUtils.IMAGES_KEY).getJSONObject(0)
|
|
||||||
.getJSONObject(JSONUtils.SOURCE_KEY).getString(JSONUtils.URL_KEY)).toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
if(isVideo) {
|
|
||||||
//Video post
|
|
||||||
JSONObject redditVideoObject = data.getJSONObject(JSONUtils.MEDIA_KEY).getJSONObject(JSONUtils.REDDIT_VIDEO_KEY);
|
|
||||||
int postType = Post.VIDEO_TYPE;
|
|
||||||
String videoUrl = Html.fromHtml(redditVideoObject.getString(JSONUtils.HLS_URL_KEY)).toString();
|
|
||||||
|
|
||||||
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime,
|
|
||||||
title, previewUrl, permalink, score, postType, voteType, gilded, nComments,
|
|
||||||
flair, hidden, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost);
|
|
||||||
|
|
||||||
post.setPreviewWidth(previewWidth);
|
|
||||||
post.setPreviewHeight(previewHeight);
|
|
||||||
post.setVideoUrl(videoUrl);
|
|
||||||
} else if(data.has(JSONUtils.PREVIEW_KEY)){
|
|
||||||
if(data.getJSONObject(JSONUtils.PREVIEW_KEY).has(JSONUtils.REDDIT_VIDEO_PREVIEW_KEY)) {
|
|
||||||
//Gif video post (HLS)
|
|
||||||
int postType = Post.GIF_VIDEO_TYPE;
|
|
||||||
String videoUrl = Html.fromHtml(data.getJSONObject(JSONUtils.PREVIEW_KEY)
|
|
||||||
.getJSONObject(JSONUtils.REDDIT_VIDEO_PREVIEW_KEY).getString(JSONUtils.HLS_URL_KEY)).toString();
|
|
||||||
|
|
||||||
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author,
|
|
||||||
formattedPostTime, title, previewUrl, permalink, score, postType, voteType,
|
|
||||||
gilded, nComments, flair, hidden, spoiler, nsfw, stickied, archived,
|
|
||||||
locked, saved, isCrosspost);
|
|
||||||
post.setPreviewWidth(previewWidth);
|
|
||||||
post.setPreviewHeight(previewHeight);
|
|
||||||
post.setVideoUrl(videoUrl);
|
|
||||||
} else {
|
|
||||||
if (url.endsWith("jpg") || url.endsWith("png")) {
|
|
||||||
//Image post
|
|
||||||
int postType = Post.IMAGE_TYPE;
|
|
||||||
|
|
||||||
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author,
|
|
||||||
formattedPostTime, title, url, url, permalink, score, postType,
|
|
||||||
voteType, gilded, nComments, flair, hidden, spoiler, nsfw, stickied,
|
|
||||||
archived, locked, saved, isCrosspost);
|
|
||||||
|
|
||||||
post.setPreviewWidth(previewWidth);
|
|
||||||
post.setPreviewHeight(previewHeight);
|
|
||||||
} else {
|
|
||||||
if (url.contains(permalink)) {
|
|
||||||
//Text post but with a preview
|
|
||||||
int postType = Post.TEXT_TYPE;
|
|
||||||
|
|
||||||
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author,
|
|
||||||
formattedPostTime, title, permalink, score, postType, voteType,
|
|
||||||
gilded, nComments, flair, hidden, spoiler, nsfw, stickied, archived,
|
|
||||||
locked, saved, isCrosspost);
|
|
||||||
|
|
||||||
post.setPreviewWidth(previewWidth);
|
|
||||||
post.setPreviewHeight(previewHeight);
|
|
||||||
|
|
||||||
if(data.isNull(JSONUtils.SELFTEXT_KEY)) {
|
|
||||||
post.setSelfText("");
|
|
||||||
} else {
|
|
||||||
post.setSelfText(Utils.addSubredditAndUserLink(data.getString(JSONUtils.SELFTEXT_KEY).trim()));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//Link post
|
|
||||||
int postType = Post.LINK_TYPE;
|
|
||||||
|
|
||||||
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author,
|
|
||||||
formattedPostTime, title, previewUrl, url, permalink, score, postType,
|
|
||||||
voteType, gilded, nComments, flair, hidden, spoiler, nsfw, stickied,
|
|
||||||
archived, locked, saved, isCrosspost);
|
|
||||||
if(data.isNull(JSONUtils.SELFTEXT_KEY)) {
|
|
||||||
post.setSelfText("");
|
|
||||||
} else {
|
|
||||||
post.setSelfText(Utils.addSubredditAndUserLink(data.getString(JSONUtils.SELFTEXT_KEY).trim()));
|
|
||||||
}
|
|
||||||
|
|
||||||
post.setPreviewWidth(previewWidth);
|
|
||||||
post.setPreviewHeight(previewHeight);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (url.endsWith("jpg") || url.endsWith("png")) {
|
|
||||||
//Image post
|
|
||||||
int postType = Post.IMAGE_TYPE;
|
|
||||||
|
|
||||||
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author,
|
|
||||||
formattedPostTime, title, previewUrl, url, permalink, score, postType,
|
|
||||||
voteType, gilded, nComments, flair, hidden, spoiler, nsfw, stickied,
|
|
||||||
archived, locked, saved, isCrosspost);
|
|
||||||
post.setPreviewWidth(previewWidth);
|
|
||||||
post.setPreviewHeight(previewHeight);
|
|
||||||
} else {
|
|
||||||
//CP No Preview Link post
|
|
||||||
int postType = Post.NO_PREVIEW_LINK_TYPE;
|
|
||||||
|
|
||||||
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author,
|
|
||||||
formattedPostTime, title, url, url, permalink, score, postType, voteType,
|
|
||||||
gilded, nComments, flair, hidden, spoiler, nsfw, stickied, archived, locked,
|
|
||||||
saved, isCrosspost);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return post;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -11,16 +11,6 @@ import java.util.ArrayList;
|
|||||||
import ml.docilealligator.infinityforreddit.SubredditDatabase.SubredditData;
|
import ml.docilealligator.infinityforreddit.SubredditDatabase.SubredditData;
|
||||||
|
|
||||||
class ParseSubredditData {
|
class ParseSubredditData {
|
||||||
interface ParseSubredditDataListener {
|
|
||||||
void onParseSubredditDataSuccess(SubredditData subredditData, int nCurrentOnlineSubscribers);
|
|
||||||
void onParseSubredditDataFail();
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ParseSubredditListingDataListener {
|
|
||||||
void onParseSubredditListingDataSuccess(ArrayList<SubredditData> subredditData, String after);
|
|
||||||
void onParseSubredditListingDataFail();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void parseSubredditData(String response, ParseSubredditDataListener parseSubredditDataListener) {
|
static void parseSubredditData(String response, ParseSubredditDataListener parseSubredditDataListener) {
|
||||||
new ParseSubredditDataAsyncTask(response, parseSubredditDataListener).execute();
|
new ParseSubredditDataAsyncTask(response, parseSubredditDataListener).execute();
|
||||||
}
|
}
|
||||||
@ -29,6 +19,51 @@ class ParseSubredditData {
|
|||||||
new ParseSubredditListingDataAsyncTask(response, parseSubredditListingDataListener).execute();
|
new ParseSubredditListingDataAsyncTask(response, parseSubredditListingDataListener).execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static SubredditData parseSubredditData(JSONObject subredditDataJsonObject) throws JSONException {
|
||||||
|
String id = subredditDataJsonObject.getString(JSONUtils.NAME_KEY);
|
||||||
|
String subredditFullName = subredditDataJsonObject.getString(JSONUtils.DISPLAY_NAME);
|
||||||
|
String description = subredditDataJsonObject.getString(JSONUtils.PUBLIC_DESCRIPTION_KEY).trim();
|
||||||
|
|
||||||
|
String bannerImageUrl;
|
||||||
|
if (subredditDataJsonObject.isNull(JSONUtils.BANNER_BACKGROUND_IMAGE_KEY)) {
|
||||||
|
bannerImageUrl = "";
|
||||||
|
} else {
|
||||||
|
bannerImageUrl = subredditDataJsonObject.getString(JSONUtils.BANNER_BACKGROUND_IMAGE_KEY);
|
||||||
|
}
|
||||||
|
if (bannerImageUrl.equals("") && !subredditDataJsonObject.isNull(JSONUtils.BANNER_IMG_KEY)) {
|
||||||
|
bannerImageUrl = subredditDataJsonObject.getString(JSONUtils.BANNER_IMG_KEY);
|
||||||
|
}
|
||||||
|
|
||||||
|
String iconUrl;
|
||||||
|
if (subredditDataJsonObject.isNull(JSONUtils.COMMUNITY_ICON_KEY)) {
|
||||||
|
iconUrl = "";
|
||||||
|
} else {
|
||||||
|
iconUrl = subredditDataJsonObject.getString(JSONUtils.COMMUNITY_ICON_KEY);
|
||||||
|
}
|
||||||
|
if (iconUrl.equals("") && !subredditDataJsonObject.isNull(JSONUtils.ICON_IMG_KEY)) {
|
||||||
|
iconUrl = subredditDataJsonObject.getString(JSONUtils.ICON_IMG_KEY);
|
||||||
|
}
|
||||||
|
|
||||||
|
int nSubscribers = 0;
|
||||||
|
if (!subredditDataJsonObject.isNull(JSONUtils.SUBSCRIBERS_KEY)) {
|
||||||
|
nSubscribers = subredditDataJsonObject.getInt(JSONUtils.SUBSCRIBERS_KEY);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new SubredditData(id, subredditFullName, iconUrl, bannerImageUrl, description, nSubscribers);
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ParseSubredditDataListener {
|
||||||
|
void onParseSubredditDataSuccess(SubredditData subredditData, int nCurrentOnlineSubscribers);
|
||||||
|
|
||||||
|
void onParseSubredditDataFail();
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ParseSubredditListingDataListener {
|
||||||
|
void onParseSubredditListingDataSuccess(ArrayList<SubredditData> subredditData, String after);
|
||||||
|
|
||||||
|
void onParseSubredditListingDataFail();
|
||||||
|
}
|
||||||
|
|
||||||
private static class ParseSubredditDataAsyncTask extends AsyncTask<Void, Void, Void> {
|
private static class ParseSubredditDataAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
private JSONObject jsonResponse;
|
private JSONObject jsonResponse;
|
||||||
private boolean parseFailed;
|
private boolean parseFailed;
|
||||||
@ -36,7 +71,7 @@ class ParseSubredditData {
|
|||||||
private SubredditData subredditData;
|
private SubredditData subredditData;
|
||||||
private int mNCurrentOnlineSubscribers;
|
private int mNCurrentOnlineSubscribers;
|
||||||
|
|
||||||
ParseSubredditDataAsyncTask(String response, ParseSubredditDataListener parseSubredditDataListener){
|
ParseSubredditDataAsyncTask(String response, ParseSubredditDataListener parseSubredditDataListener) {
|
||||||
this.parseSubredditDataListener = parseSubredditDataListener;
|
this.parseSubredditDataListener = parseSubredditDataListener;
|
||||||
try {
|
try {
|
||||||
jsonResponse = new JSONObject(response);
|
jsonResponse = new JSONObject(response);
|
||||||
@ -62,7 +97,7 @@ class ParseSubredditData {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(Void aVoid) {
|
protected void onPostExecute(Void aVoid) {
|
||||||
if(!parseFailed) {
|
if (!parseFailed) {
|
||||||
parseSubredditDataListener.onParseSubredditDataSuccess(subredditData, mNCurrentOnlineSubscribers);
|
parseSubredditDataListener.onParseSubredditDataSuccess(subredditData, mNCurrentOnlineSubscribers);
|
||||||
} else {
|
} else {
|
||||||
parseSubredditDataListener.onParseSubredditDataFail();
|
parseSubredditDataListener.onParseSubredditDataFail();
|
||||||
@ -77,7 +112,7 @@ class ParseSubredditData {
|
|||||||
private ArrayList<SubredditData> subredditListingData;
|
private ArrayList<SubredditData> subredditListingData;
|
||||||
private String after;
|
private String after;
|
||||||
|
|
||||||
ParseSubredditListingDataAsyncTask(String response, ParseSubredditListingDataListener parseSubredditListingDataListener){
|
ParseSubredditListingDataAsyncTask(String response, ParseSubredditListingDataListener parseSubredditListingDataListener) {
|
||||||
this.parseSubredditListingDataListener = parseSubredditListingDataListener;
|
this.parseSubredditListingDataListener = parseSubredditListingDataListener;
|
||||||
try {
|
try {
|
||||||
jsonResponse = new JSONObject(response);
|
jsonResponse = new JSONObject(response);
|
||||||
@ -92,10 +127,10 @@ class ParseSubredditData {
|
|||||||
@Override
|
@Override
|
||||||
protected Void doInBackground(Void... voids) {
|
protected Void doInBackground(Void... voids) {
|
||||||
try {
|
try {
|
||||||
if(!parseFailed) {
|
if (!parseFailed) {
|
||||||
JSONArray children = jsonResponse.getJSONObject(JSONUtils.DATA_KEY)
|
JSONArray children = jsonResponse.getJSONObject(JSONUtils.DATA_KEY)
|
||||||
.getJSONArray(JSONUtils.CHILDREN_KEY);
|
.getJSONArray(JSONUtils.CHILDREN_KEY);
|
||||||
for(int i = 0; i < children.length(); i++) {
|
for (int i = 0; i < children.length(); i++) {
|
||||||
JSONObject data = children.getJSONObject(i).getJSONObject(JSONUtils.DATA_KEY);
|
JSONObject data = children.getJSONObject(i).getJSONObject(JSONUtils.DATA_KEY);
|
||||||
SubredditData subredditData = parseSubredditData(data);
|
SubredditData subredditData = parseSubredditData(data);
|
||||||
subredditListingData.add(subredditData);
|
subredditListingData.add(subredditData);
|
||||||
@ -112,44 +147,11 @@ class ParseSubredditData {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(Void aVoid) {
|
protected void onPostExecute(Void aVoid) {
|
||||||
if(!parseFailed) {
|
if (!parseFailed) {
|
||||||
parseSubredditListingDataListener.onParseSubredditListingDataSuccess(subredditListingData, after);
|
parseSubredditListingDataListener.onParseSubredditListingDataSuccess(subredditListingData, after);
|
||||||
} else {
|
} else {
|
||||||
parseSubredditListingDataListener.onParseSubredditListingDataFail();
|
parseSubredditListingDataListener.onParseSubredditListingDataFail();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static SubredditData parseSubredditData(JSONObject subredditDataJsonObject) throws JSONException {
|
|
||||||
String id = subredditDataJsonObject.getString(JSONUtils.NAME_KEY);
|
|
||||||
String subredditFullName = subredditDataJsonObject.getString(JSONUtils.DISPLAY_NAME);
|
|
||||||
String description = subredditDataJsonObject.getString(JSONUtils.PUBLIC_DESCRIPTION_KEY).trim();
|
|
||||||
|
|
||||||
String bannerImageUrl;
|
|
||||||
if(subredditDataJsonObject.isNull(JSONUtils.BANNER_BACKGROUND_IMAGE_KEY)) {
|
|
||||||
bannerImageUrl = "";
|
|
||||||
} else {
|
|
||||||
bannerImageUrl = subredditDataJsonObject.getString(JSONUtils.BANNER_BACKGROUND_IMAGE_KEY);
|
|
||||||
}
|
|
||||||
if(bannerImageUrl.equals("") && !subredditDataJsonObject.isNull(JSONUtils.BANNER_IMG_KEY)) {
|
|
||||||
bannerImageUrl= subredditDataJsonObject.getString(JSONUtils.BANNER_IMG_KEY);
|
|
||||||
}
|
|
||||||
|
|
||||||
String iconUrl;
|
|
||||||
if(subredditDataJsonObject.isNull(JSONUtils.COMMUNITY_ICON_KEY)) {
|
|
||||||
iconUrl = "";
|
|
||||||
} else {
|
|
||||||
iconUrl = subredditDataJsonObject.getString(JSONUtils.COMMUNITY_ICON_KEY);
|
|
||||||
}
|
|
||||||
if(iconUrl.equals("") && !subredditDataJsonObject.isNull(JSONUtils.ICON_IMG_KEY)) {
|
|
||||||
iconUrl = subredditDataJsonObject.getString(JSONUtils.ICON_IMG_KEY);
|
|
||||||
}
|
|
||||||
|
|
||||||
int nSubscribers = 0;
|
|
||||||
if(!subredditDataJsonObject.isNull(JSONUtils.SUBSCRIBERS_KEY)) {
|
|
||||||
nSubscribers = subredditDataJsonObject.getInt(JSONUtils.SUBSCRIBERS_KEY);
|
|
||||||
}
|
|
||||||
|
|
||||||
return new SubredditData(id, subredditFullName, iconUrl, bannerImageUrl, description, nSubscribers);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -13,14 +13,6 @@ import ml.docilealligator.infinityforreddit.SubscribedSubredditDatabase.Subscrib
|
|||||||
import ml.docilealligator.infinityforreddit.SubscribedUserDatabase.SubscribedUserData;
|
import ml.docilealligator.infinityforreddit.SubscribedUserDatabase.SubscribedUserData;
|
||||||
|
|
||||||
class ParseSubscribedThing {
|
class ParseSubscribedThing {
|
||||||
interface ParseSubscribedSubredditsListener {
|
|
||||||
void onParseSubscribedSubredditsSuccess(ArrayList<SubscribedSubredditData> subscribedSubredditData,
|
|
||||||
ArrayList<SubscribedUserData> subscribedUserData,
|
|
||||||
ArrayList<SubredditData> subredditData,
|
|
||||||
String lastItem);
|
|
||||||
void onParseSubscribedSubredditsFail();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void parseSubscribedSubreddits(String response, String accountName,
|
static void parseSubscribedSubreddits(String response, String accountName,
|
||||||
ArrayList<SubscribedSubredditData> subscribedSubredditData,
|
ArrayList<SubscribedSubredditData> subscribedSubredditData,
|
||||||
ArrayList<SubscribedUserData> subscribedUserData,
|
ArrayList<SubscribedUserData> subscribedUserData,
|
||||||
@ -30,6 +22,15 @@ class ParseSubscribedThing {
|
|||||||
parseSubscribedSubredditsListener).execute();
|
parseSubscribedSubredditsListener).execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface ParseSubscribedSubredditsListener {
|
||||||
|
void onParseSubscribedSubredditsSuccess(ArrayList<SubscribedSubredditData> subscribedSubredditData,
|
||||||
|
ArrayList<SubscribedUserData> subscribedUserData,
|
||||||
|
ArrayList<SubredditData> subredditData,
|
||||||
|
String lastItem);
|
||||||
|
|
||||||
|
void onParseSubscribedSubredditsFail();
|
||||||
|
}
|
||||||
|
|
||||||
private static class ParseSubscribedSubredditsAsyncTask extends AsyncTask<Void, Void, Void> {
|
private static class ParseSubscribedSubredditsAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
private JSONObject jsonResponse;
|
private JSONObject jsonResponse;
|
||||||
private String accountName;
|
private String accountName;
|
||||||
@ -46,7 +47,7 @@ class ParseSubscribedThing {
|
|||||||
ParseSubscribedSubredditsAsyncTask(String response, String accountName, ArrayList<SubscribedSubredditData> subscribedSubredditData,
|
ParseSubscribedSubredditsAsyncTask(String response, String accountName, ArrayList<SubscribedSubredditData> subscribedSubredditData,
|
||||||
ArrayList<SubscribedUserData> subscribedUserData,
|
ArrayList<SubscribedUserData> subscribedUserData,
|
||||||
ArrayList<SubredditData> subredditData,
|
ArrayList<SubredditData> subredditData,
|
||||||
ParseSubscribedSubredditsListener parseSubscribedSubredditsListener){
|
ParseSubscribedSubredditsListener parseSubscribedSubredditsListener) {
|
||||||
try {
|
try {
|
||||||
jsonResponse = new JSONObject(response);
|
jsonResponse = new JSONObject(response);
|
||||||
this.accountName = accountName;
|
this.accountName = accountName;
|
||||||
@ -68,32 +69,32 @@ class ParseSubscribedThing {
|
|||||||
protected Void doInBackground(Void... voids) {
|
protected Void doInBackground(Void... voids) {
|
||||||
try {
|
try {
|
||||||
JSONArray children = jsonResponse.getJSONObject(JSONUtils.DATA_KEY).getJSONArray(JSONUtils.CHILDREN_KEY);
|
JSONArray children = jsonResponse.getJSONObject(JSONUtils.DATA_KEY).getJSONArray(JSONUtils.CHILDREN_KEY);
|
||||||
for(int i = 0; i < children.length(); i++) {
|
for (int i = 0; i < children.length(); i++) {
|
||||||
JSONObject data = children.getJSONObject(i).getJSONObject(JSONUtils.DATA_KEY);
|
JSONObject data = children.getJSONObject(i).getJSONObject(JSONUtils.DATA_KEY);
|
||||||
String name = data.getString(JSONUtils.DISPLAY_NAME);
|
String name = data.getString(JSONUtils.DISPLAY_NAME);
|
||||||
String bannerImageUrl = data.getString(JSONUtils.BANNER_BACKGROUND_IMAGE_KEY);
|
String bannerImageUrl = data.getString(JSONUtils.BANNER_BACKGROUND_IMAGE_KEY);
|
||||||
if(bannerImageUrl.equals("") || bannerImageUrl.equals("null")) {
|
if (bannerImageUrl.equals("") || bannerImageUrl.equals("null")) {
|
||||||
bannerImageUrl= data.getString(JSONUtils.BANNER_IMG_KEY);
|
bannerImageUrl = data.getString(JSONUtils.BANNER_IMG_KEY);
|
||||||
if(bannerImageUrl.equals("null")) {
|
if (bannerImageUrl.equals("null")) {
|
||||||
bannerImageUrl = "";
|
bannerImageUrl = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
String iconUrl = data.getString(JSONUtils.COMMUNITY_ICON_KEY);
|
String iconUrl = data.getString(JSONUtils.COMMUNITY_ICON_KEY);
|
||||||
if(iconUrl.equals("") || iconUrl.equals("null")) {
|
if (iconUrl.equals("") || iconUrl.equals("null")) {
|
||||||
iconUrl = data.getString(JSONUtils.ICON_IMG_KEY);
|
iconUrl = data.getString(JSONUtils.ICON_IMG_KEY);
|
||||||
if(iconUrl.equals("null")) {
|
if (iconUrl.equals("null")) {
|
||||||
iconUrl = "";
|
iconUrl = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
String id = data.getString(JSONUtils.NAME_KEY);
|
String id = data.getString(JSONUtils.NAME_KEY);
|
||||||
if(iconUrl.equals("") || iconUrl.equals("null")) {
|
if (iconUrl.equals("") || iconUrl.equals("null")) {
|
||||||
iconUrl = data.getString(JSONUtils.COMMUNITY_ICON_KEY);
|
iconUrl = data.getString(JSONUtils.COMMUNITY_ICON_KEY);
|
||||||
if(iconUrl.equals("null")) {
|
if (iconUrl.equals("null")) {
|
||||||
iconUrl = "";
|
iconUrl = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(data.getString(JSONUtils.SUBREDDIT_TYPE_KEY)
|
if (data.getString(JSONUtils.SUBREDDIT_TYPE_KEY)
|
||||||
.equals(JSONUtils.SUBREDDIT_TYPE_VALUE_USER)) {
|
.equals(JSONUtils.SUBREDDIT_TYPE_VALUE_USER)) {
|
||||||
//It's a user
|
//It's a user
|
||||||
newSubscribedUserData.add(new SubscribedUserData(name.substring(2), iconUrl, accountName));
|
newSubscribedUserData.add(new SubscribedUserData(name.substring(2), iconUrl, accountName));
|
||||||
@ -115,7 +116,7 @@ class ParseSubscribedThing {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(Void aVoid) {
|
protected void onPostExecute(Void aVoid) {
|
||||||
if(!parseFailed) {
|
if (!parseFailed) {
|
||||||
subscribedSubredditData.addAll(newSubscribedSubredditData);
|
subscribedSubredditData.addAll(newSubscribedSubredditData);
|
||||||
subscribedUserData.addAll(newSubscribedUserData);
|
subscribedUserData.addAll(newSubscribedUserData);
|
||||||
subredditData.addAll(newSubredditData);
|
subredditData.addAll(newSubredditData);
|
||||||
|
@ -11,16 +11,6 @@ import java.util.ArrayList;
|
|||||||
import ml.docilealligator.infinityforreddit.User.UserData;
|
import ml.docilealligator.infinityforreddit.User.UserData;
|
||||||
|
|
||||||
public class ParseUserData {
|
public class ParseUserData {
|
||||||
interface ParseUserDataListener {
|
|
||||||
void onParseUserDataSuccess(UserData userData);
|
|
||||||
void onParseUserDataFailed();
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ParseUserListingDataListener {
|
|
||||||
void onParseUserListingDataSuccess(ArrayList<UserData> userData, String after);
|
|
||||||
void onParseUserListingDataFailed();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void parseUserData(String response, ParseUserDataListener parseUserDataListener) {
|
static void parseUserData(String response, ParseUserDataListener parseUserDataListener) {
|
||||||
new ParseUserDataAsyncTask(response, parseUserDataListener).execute();
|
new ParseUserDataAsyncTask(response, parseUserDataListener).execute();
|
||||||
}
|
}
|
||||||
@ -29,6 +19,39 @@ public class ParseUserData {
|
|||||||
new ParseUserListingDataAsyncTask(response, parseUserListingDataListener).execute();
|
new ParseUserListingDataAsyncTask(response, parseUserListingDataListener).execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static UserData parseUserDataBase(JSONObject userDataJson) throws JSONException {
|
||||||
|
userDataJson = userDataJson.getJSONObject(JSONUtils.DATA_KEY);
|
||||||
|
String userName = userDataJson.getString(JSONUtils.NAME_KEY);
|
||||||
|
String iconImageUrl = userDataJson.getString(JSONUtils.ICON_IMG_KEY);
|
||||||
|
String bannerImageUrl = "";
|
||||||
|
boolean canBeFollowed;
|
||||||
|
if (userDataJson.has(JSONUtils.SUBREDDIT_KEY) && !userDataJson.isNull(JSONUtils.SUBREDDIT_KEY)) {
|
||||||
|
bannerImageUrl = userDataJson.getJSONObject(JSONUtils.SUBREDDIT_KEY).getString(JSONUtils.BANNER_IMG_KEY);
|
||||||
|
canBeFollowed = true;
|
||||||
|
} else {
|
||||||
|
canBeFollowed = false;
|
||||||
|
}
|
||||||
|
int linkKarma = userDataJson.getInt(JSONUtils.LINK_KARMA_KEY);
|
||||||
|
int commentKarma = userDataJson.getInt(JSONUtils.COMMENT_KARMA_KEY);
|
||||||
|
int karma = linkKarma + commentKarma;
|
||||||
|
boolean isGold = userDataJson.getBoolean(JSONUtils.IS_GOLD_KEY);
|
||||||
|
boolean isFriend = userDataJson.getBoolean(JSONUtils.IS_FRIEND_KEY);
|
||||||
|
|
||||||
|
return new UserData(userName, iconImageUrl, bannerImageUrl, karma, isGold, isFriend, canBeFollowed);
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ParseUserDataListener {
|
||||||
|
void onParseUserDataSuccess(UserData userData);
|
||||||
|
|
||||||
|
void onParseUserDataFailed();
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ParseUserListingDataListener {
|
||||||
|
void onParseUserListingDataSuccess(ArrayList<UserData> userData, String after);
|
||||||
|
|
||||||
|
void onParseUserListingDataFailed();
|
||||||
|
}
|
||||||
|
|
||||||
private static class ParseUserDataAsyncTask extends AsyncTask<Void, Void, Void> {
|
private static class ParseUserDataAsyncTask extends AsyncTask<Void, Void, Void> {
|
||||||
private JSONObject jsonResponse;
|
private JSONObject jsonResponse;
|
||||||
private ParseUserDataListener parseUserDataListener;
|
private ParseUserDataListener parseUserDataListener;
|
||||||
@ -36,7 +59,7 @@ public class ParseUserData {
|
|||||||
|
|
||||||
private UserData userData;
|
private UserData userData;
|
||||||
|
|
||||||
ParseUserDataAsyncTask(String response, ParseUserDataListener parseUserDataListener){
|
ParseUserDataAsyncTask(String response, ParseUserDataListener parseUserDataListener) {
|
||||||
try {
|
try {
|
||||||
jsonResponse = new JSONObject(response);
|
jsonResponse = new JSONObject(response);
|
||||||
this.parseUserDataListener = parseUserDataListener;
|
this.parseUserDataListener = parseUserDataListener;
|
||||||
@ -60,7 +83,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);
|
||||||
} else {
|
} else {
|
||||||
parseUserDataListener.onParseUserDataFailed();
|
parseUserDataListener.onParseUserDataFailed();
|
||||||
@ -77,7 +100,7 @@ public class ParseUserData {
|
|||||||
|
|
||||||
private ArrayList<UserData> userDataArrayList;
|
private ArrayList<UserData> userDataArrayList;
|
||||||
|
|
||||||
ParseUserListingDataAsyncTask(String response, ParseUserListingDataListener parseUserListingDataListener){
|
ParseUserListingDataAsyncTask(String response, ParseUserListingDataListener parseUserListingDataListener) {
|
||||||
this.parseUserListingDataListener = parseUserListingDataListener;
|
this.parseUserListingDataListener = parseUserListingDataListener;
|
||||||
this.response = response;
|
this.response = response;
|
||||||
try {
|
try {
|
||||||
@ -93,10 +116,10 @@ public class ParseUserData {
|
|||||||
@Override
|
@Override
|
||||||
protected Void doInBackground(Void... voids) {
|
protected Void doInBackground(Void... voids) {
|
||||||
try {
|
try {
|
||||||
if(!parseFailed) {
|
if (!parseFailed) {
|
||||||
after = jsonResponse.getJSONObject(JSONUtils.DATA_KEY).getString(JSONUtils.AFTER_KEY);
|
after = jsonResponse.getJSONObject(JSONUtils.DATA_KEY).getString(JSONUtils.AFTER_KEY);
|
||||||
JSONArray children = jsonResponse.getJSONObject(JSONUtils.DATA_KEY).getJSONArray(JSONUtils.CHILDREN_KEY);
|
JSONArray children = jsonResponse.getJSONObject(JSONUtils.DATA_KEY).getJSONArray(JSONUtils.CHILDREN_KEY);
|
||||||
for(int i = 0; i < children.length(); i++) {
|
for (int i = 0; i < children.length(); i++) {
|
||||||
userDataArrayList.add(parseUserDataBase(children.getJSONObject(i)));
|
userDataArrayList.add(parseUserDataBase(children.getJSONObject(i)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -109,10 +132,10 @@ public class ParseUserData {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onPostExecute(Void aVoid) {
|
protected void onPostExecute(Void aVoid) {
|
||||||
if(!parseFailed) {
|
if (!parseFailed) {
|
||||||
parseUserListingDataListener.onParseUserListingDataSuccess(userDataArrayList, after);
|
parseUserListingDataListener.onParseUserListingDataSuccess(userDataArrayList, after);
|
||||||
} else {
|
} else {
|
||||||
if(response.equals("\"{}\"")) {
|
if (response.equals("\"{}\"")) {
|
||||||
parseUserListingDataListener.onParseUserListingDataSuccess(new ArrayList<>(), null);
|
parseUserListingDataListener.onParseUserListingDataSuccess(new ArrayList<>(), null);
|
||||||
} else {
|
} else {
|
||||||
parseUserListingDataListener.onParseUserListingDataFailed();
|
parseUserListingDataListener.onParseUserListingDataFailed();
|
||||||
@ -120,25 +143,4 @@ public class ParseUserData {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static UserData parseUserDataBase(JSONObject userDataJson) throws JSONException {
|
|
||||||
userDataJson = userDataJson.getJSONObject(JSONUtils.DATA_KEY);
|
|
||||||
String userName = userDataJson.getString(JSONUtils.NAME_KEY);
|
|
||||||
String iconImageUrl = userDataJson.getString(JSONUtils.ICON_IMG_KEY);
|
|
||||||
String bannerImageUrl = "";
|
|
||||||
boolean canBeFollowed;
|
|
||||||
if(userDataJson.has(JSONUtils.SUBREDDIT_KEY) && !userDataJson.isNull(JSONUtils.SUBREDDIT_KEY)) {
|
|
||||||
bannerImageUrl = userDataJson.getJSONObject(JSONUtils.SUBREDDIT_KEY).getString(JSONUtils.BANNER_IMG_KEY);
|
|
||||||
canBeFollowed = true;
|
|
||||||
} else {
|
|
||||||
canBeFollowed = false;
|
|
||||||
}
|
|
||||||
int linkKarma = userDataJson.getInt(JSONUtils.LINK_KARMA_KEY);
|
|
||||||
int commentKarma = userDataJson.getInt(JSONUtils.COMMENT_KARMA_KEY);
|
|
||||||
int karma = linkKarma + commentKarma;
|
|
||||||
boolean isGold = userDataJson.getBoolean(JSONUtils.IS_GOLD_KEY);
|
|
||||||
boolean isFriend = userDataJson.getBoolean(JSONUtils.IS_FRIEND_KEY);
|
|
||||||
|
|
||||||
return new UserData(userName, iconImageUrl, bannerImageUrl, karma, isGold, isFriend, canBeFollowed);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,17 @@ public class Post implements Parcelable {
|
|||||||
public static final int VIDEO_TYPE = 3;
|
public static final int VIDEO_TYPE = 3;
|
||||||
public static final int GIF_VIDEO_TYPE = 4;
|
public static final int GIF_VIDEO_TYPE = 4;
|
||||||
public static final int NO_PREVIEW_LINK_TYPE = 5;
|
public static final int NO_PREVIEW_LINK_TYPE = 5;
|
||||||
|
public static final Creator<Post> CREATOR = new Creator<Post>() {
|
||||||
|
@Override
|
||||||
|
public Post createFromParcel(Parcel in) {
|
||||||
|
return new Post(in);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Post[] newArray(int size) {
|
||||||
|
return new Post[size];
|
||||||
|
}
|
||||||
|
};
|
||||||
private String id;
|
private String id;
|
||||||
private String fullName;
|
private String fullName;
|
||||||
private String subredditName;
|
private String subredditName;
|
||||||
@ -137,7 +147,7 @@ public class Post implements Parcelable {
|
|||||||
this.archived = archived;
|
this.archived = archived;
|
||||||
this.locked = locked;
|
this.locked = locked;
|
||||||
this.saved = saved;
|
this.saved = saved;
|
||||||
this.isCrosspost= isCrosspost;
|
this.isCrosspost = isCrosspost;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Post(Parcel in) {
|
protected Post(Parcel in) {
|
||||||
@ -175,18 +185,6 @@ public class Post implements Parcelable {
|
|||||||
crosspostParentId = in.readString();
|
crosspostParentId = in.readString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final Creator<Post> CREATOR = new Creator<Post>() {
|
|
||||||
@Override
|
|
||||||
public Post createFromParcel(Parcel in) {
|
|
||||||
return new Post(in);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Post[] newArray(int size) {
|
|
||||||
return new Post[size];
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
public String getId() {
|
public String getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
@ -231,22 +229,22 @@ public class Post implements Parcelable {
|
|||||||
return postTime;
|
return postTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTitle(String title) {
|
|
||||||
this.title = title;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTitle() {
|
public String getTitle() {
|
||||||
return title;
|
return title;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSelfText(String selfText) {
|
public void setTitle(String title) {
|
||||||
this.selfText = selfText;
|
this.title = title;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getSelfText() {
|
public String getSelfText() {
|
||||||
return selfText;
|
return selfText;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setSelfText(String selfText) {
|
||||||
|
this.selfText = selfText;
|
||||||
|
}
|
||||||
|
|
||||||
public String getPreviewUrl() {
|
public String getPreviewUrl() {
|
||||||
return previewUrl;
|
return previewUrl;
|
||||||
}
|
}
|
||||||
@ -255,14 +253,14 @@ public class Post implements Parcelable {
|
|||||||
return url;
|
return url;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setVideoUrl(String videoUrl) {
|
|
||||||
this.videoUrl = videoUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getVideoUrl() {
|
public String getVideoUrl() {
|
||||||
return videoUrl;
|
return videoUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setVideoUrl(String videoUrl) {
|
||||||
|
this.videoUrl = videoUrl;
|
||||||
|
}
|
||||||
|
|
||||||
public String getPermalink() {
|
public String getPermalink() {
|
||||||
return permalink;
|
return permalink;
|
||||||
}
|
}
|
||||||
@ -275,46 +273,46 @@ public class Post implements Parcelable {
|
|||||||
this.flair = flair;
|
this.flair = flair;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setScore(int score) {
|
|
||||||
this.score = score;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getScore() {
|
public int getScore() {
|
||||||
return score;
|
return score;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setScore(int score) {
|
||||||
|
this.score = score;
|
||||||
|
}
|
||||||
|
|
||||||
public int getPostType() {
|
public int getPostType() {
|
||||||
return postType;
|
return postType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setVoteType(int voteType) {
|
|
||||||
this.voteType = voteType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getVoteType() {
|
public int getVoteType() {
|
||||||
return voteType;
|
return voteType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setVoteType(int voteType) {
|
||||||
|
this.voteType = voteType;
|
||||||
|
}
|
||||||
|
|
||||||
public int getGilded() {
|
public int getGilded() {
|
||||||
return gilded;
|
return gilded;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPreviewWidth(int previewWidth) {
|
|
||||||
this.previewWidth = previewWidth;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getPreviewWidth() {
|
public int getPreviewWidth() {
|
||||||
return previewWidth;
|
return previewWidth;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPreviewHeight(int previewHeight) {
|
public void setPreviewWidth(int previewWidth) {
|
||||||
this.previewHeight = previewHeight;
|
this.previewWidth = previewWidth;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getPreviewHeight() {
|
public int getPreviewHeight() {
|
||||||
return previewHeight;
|
return previewHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setPreviewHeight(int previewHeight) {
|
||||||
|
this.previewHeight = previewHeight;
|
||||||
|
}
|
||||||
|
|
||||||
public int getnComments() {
|
public int getnComments() {
|
||||||
return nComments;
|
return nComments;
|
||||||
}
|
}
|
||||||
|
@ -77,8 +77,8 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
initialLoadStateLiveData = new MutableLiveData<>();
|
initialLoadStateLiveData = new MutableLiveData<>();
|
||||||
hasPostLiveData = new MutableLiveData<>();
|
hasPostLiveData = new MutableLiveData<>();
|
||||||
this.postType = postType;
|
this.postType = postType;
|
||||||
if(sortType == null) {
|
if (sortType == null) {
|
||||||
if(subredditOrUserName.equals("popular") || subredditOrUserName.equals("all")) {
|
if (subredditOrUserName.equals("popular") || subredditOrUserName.equals("all")) {
|
||||||
this.sortType = PostDataSource.SORT_TYPE_HOT;
|
this.sortType = PostDataSource.SORT_TYPE_HOT;
|
||||||
} else {
|
} else {
|
||||||
this.sortType = PostDataSource.SORT_TYPE_BEST;
|
this.sortType = PostDataSource.SORT_TYPE_BEST;
|
||||||
@ -164,7 +164,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
this.params = params;
|
this.params = params;
|
||||||
this.callback = callback;
|
this.callback = callback;
|
||||||
|
|
||||||
if(params.key.equals("") || params.key.equals("null")) {
|
if (params.key.equals("") || params.key.equals("null")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -194,7 +194,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
@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()) {
|
||||||
if(sortType.equals(SORT_TYPE_RANDOM)) {
|
if (sortType.equals(SORT_TYPE_RANDOM)) {
|
||||||
ParsePost.parsePost(response.body(), locale, new ParsePost.ParsePostListener() {
|
ParsePost.parsePost(response.body(), locale, new ParsePost.ParsePostListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParsePostSuccess(Post post) {
|
public void onParsePostSuccess(Post post) {
|
||||||
@ -216,15 +216,15 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
@Override
|
@Override
|
||||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
||||||
String nextPageKey;
|
String nextPageKey;
|
||||||
if(lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
if (lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
||||||
nextPageKey = null;
|
nextPageKey = null;
|
||||||
} else {
|
} else {
|
||||||
nextPageKey = lastItem;
|
nextPageKey = lastItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newPosts.size() != 0) {
|
if (newPosts.size() != 0) {
|
||||||
hasPostLiveData.postValue(true);
|
hasPostLiveData.postValue(true);
|
||||||
} else if(nextPageKey != null) {
|
} else if (nextPageKey != null) {
|
||||||
loadBestPostsInitial(callback, nextPageKey);
|
loadBestPostsInitial(callback, nextPageKey);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
@ -265,12 +265,12 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
bestPost.enqueue(new Callback<String>() {
|
bestPost.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()) {
|
||||||
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
||||||
new ParsePost.ParsePostsListingListener() {
|
new ParsePost.ParsePostsListingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
||||||
if(newPosts.size() == 0 && lastItem != null && !lastItem.equals("") && !lastItem.equals("null")) {
|
if (newPosts.size() == 0 && lastItem != null && !lastItem.equals("") && !lastItem.equals("null")) {
|
||||||
loadBestPostsAfter(params, callback, lastItem);
|
loadBestPostsAfter(params, callback, lastItem);
|
||||||
} else {
|
} else {
|
||||||
paginationNetworkStateLiveData.postValue(NetworkState.LOADED);
|
paginationNetworkStateLiveData.postValue(NetworkState.LOADED);
|
||||||
@ -300,7 +300,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||||
|
|
||||||
Call<String> getPost;
|
Call<String> getPost;
|
||||||
if(accessToken == null) {
|
if (accessToken == null) {
|
||||||
getPost = api.getSubredditBestPosts(subredditOrUserName, sortType, lastItem);
|
getPost = api.getSubredditBestPosts(subredditOrUserName, sortType, lastItem);
|
||||||
} else {
|
} else {
|
||||||
getPost = api.getSubredditBestPostsOauth(subredditOrUserName, sortType, lastItem, RedditUtils.getOAuthHeader(accessToken));
|
getPost = api.getSubredditBestPostsOauth(subredditOrUserName, sortType, lastItem, RedditUtils.getOAuthHeader(accessToken));
|
||||||
@ -308,8 +308,8 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
getPost.enqueue(new Callback<String>() {
|
getPost.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()) {
|
||||||
if(sortType.equals(SORT_TYPE_RANDOM)) {
|
if (sortType.equals(SORT_TYPE_RANDOM)) {
|
||||||
ParsePost.parsePost(response.body(), locale, new ParsePost.ParsePostListener() {
|
ParsePost.parsePost(response.body(), locale, new ParsePost.ParsePostListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParsePostSuccess(Post post) {
|
public void onParsePostSuccess(Post post) {
|
||||||
@ -331,15 +331,15 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
@Override
|
@Override
|
||||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
||||||
String nextPageKey;
|
String nextPageKey;
|
||||||
if(lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
if (lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
||||||
nextPageKey = null;
|
nextPageKey = null;
|
||||||
} else {
|
} else {
|
||||||
nextPageKey = lastItem;
|
nextPageKey = lastItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newPosts.size() != 0) {
|
if (newPosts.size() != 0) {
|
||||||
hasPostLiveData.postValue(true);
|
hasPostLiveData.postValue(true);
|
||||||
} else if(nextPageKey != null) {
|
} else if (nextPageKey != null) {
|
||||||
loadSubredditPostsInitial(callback, nextPageKey);
|
loadSubredditPostsInitial(callback, nextPageKey);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
@ -377,7 +377,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||||
|
|
||||||
Call<String> getPost;
|
Call<String> getPost;
|
||||||
if(accessToken == null) {
|
if (accessToken == null) {
|
||||||
getPost = api.getSubredditBestPosts(subredditOrUserName, sortType, after);
|
getPost = api.getSubredditBestPosts(subredditOrUserName, sortType, after);
|
||||||
} else {
|
} else {
|
||||||
getPost = api.getSubredditBestPostsOauth(subredditOrUserName, sortType, after, RedditUtils.getOAuthHeader(accessToken));
|
getPost = api.getSubredditBestPostsOauth(subredditOrUserName, sortType, after, RedditUtils.getOAuthHeader(accessToken));
|
||||||
@ -386,12 +386,12 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
getPost.enqueue(new Callback<String>() {
|
getPost.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()) {
|
||||||
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
||||||
new ParsePost.ParsePostsListingListener() {
|
new ParsePost.ParsePostsListingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
||||||
if(newPosts.size() == 0 && lastItem != null && !lastItem.equals("") && !lastItem.equals("null")) {
|
if (newPosts.size() == 0 && lastItem != null && !lastItem.equals("") && !lastItem.equals("null")) {
|
||||||
loadSubredditPostsAfter(params, callback, lastItem);
|
loadSubredditPostsAfter(params, callback, lastItem);
|
||||||
} else {
|
} else {
|
||||||
paginationNetworkStateLiveData.postValue(NetworkState.LOADED);
|
paginationNetworkStateLiveData.postValue(NetworkState.LOADED);
|
||||||
@ -421,7 +421,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||||
|
|
||||||
Call<String> getPost;
|
Call<String> getPost;
|
||||||
if(accessToken == null) {
|
if (accessToken == null) {
|
||||||
getPost = api.getUserPosts(subredditOrUserName, lastItem, sortType);
|
getPost = api.getUserPosts(subredditOrUserName, lastItem, sortType);
|
||||||
} else {
|
} else {
|
||||||
getPost = api.getUserPostsOauth(subredditOrUserName, userWhere, lastItem, sortType,
|
getPost = api.getUserPostsOauth(subredditOrUserName, userWhere, lastItem, sortType,
|
||||||
@ -430,21 +430,21 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
getPost.enqueue(new Callback<String>() {
|
getPost.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()) {
|
||||||
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
||||||
new ParsePost.ParsePostsListingListener() {
|
new ParsePost.ParsePostsListingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
||||||
String nextPageKey;
|
String nextPageKey;
|
||||||
if(lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
if (lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
||||||
nextPageKey = null;
|
nextPageKey = null;
|
||||||
} else {
|
} else {
|
||||||
nextPageKey = lastItem;
|
nextPageKey = lastItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newPosts.size() != 0) {
|
if (newPosts.size() != 0) {
|
||||||
hasPostLiveData.postValue(true);
|
hasPostLiveData.postValue(true);
|
||||||
} else if(nextPageKey != null) {
|
} else if (nextPageKey != null) {
|
||||||
loadUserPostsInitial(callback, nextPageKey);
|
loadUserPostsInitial(callback, nextPageKey);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
@ -479,7 +479,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||||
|
|
||||||
Call<String> getPost;
|
Call<String> getPost;
|
||||||
if(accessToken == null) {
|
if (accessToken == null) {
|
||||||
getPost = api.getUserPosts(subredditOrUserName, after, sortType);
|
getPost = api.getUserPosts(subredditOrUserName, after, sortType);
|
||||||
} else {
|
} else {
|
||||||
getPost = api.getUserPostsOauth(subredditOrUserName, userWhere, after, sortType,
|
getPost = api.getUserPostsOauth(subredditOrUserName, userWhere, after, sortType,
|
||||||
@ -488,12 +488,12 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
getPost.enqueue(new Callback<String>() {
|
getPost.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()) {
|
||||||
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
||||||
new ParsePost.ParsePostsListingListener() {
|
new ParsePost.ParsePostsListingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
||||||
if(newPosts.size() == 0 && lastItem != null && !lastItem.equals("") && !lastItem.equals("null")) {
|
if (newPosts.size() == 0 && lastItem != null && !lastItem.equals("") && !lastItem.equals("null")) {
|
||||||
loadUserPostsAfter(params, callback, lastItem);
|
loadUserPostsAfter(params, callback, lastItem);
|
||||||
} else {
|
} else {
|
||||||
paginationNetworkStateLiveData.postValue(NetworkState.LOADED);
|
paginationNetworkStateLiveData.postValue(NetworkState.LOADED);
|
||||||
@ -523,14 +523,14 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||||
Call<String> getPost;
|
Call<String> getPost;
|
||||||
|
|
||||||
if(subredditOrUserName == null) {
|
if (subredditOrUserName == null) {
|
||||||
if(accessToken == null) {
|
if (accessToken == null) {
|
||||||
getPost = api.searchPosts(query, lastItem, sortType);
|
getPost = api.searchPosts(query, lastItem, sortType);
|
||||||
} else {
|
} else {
|
||||||
getPost = api.searchPostsOauth(query, lastItem, sortType, RedditUtils.getOAuthHeader(accessToken));
|
getPost = api.searchPostsOauth(query, lastItem, sortType, RedditUtils.getOAuthHeader(accessToken));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(accessToken == null) {
|
if (accessToken == null) {
|
||||||
getPost = api.searchPostsInSpecificSubreddit(subredditOrUserName, query, lastItem);
|
getPost = api.searchPostsInSpecificSubreddit(subredditOrUserName, query, lastItem);
|
||||||
} else {
|
} else {
|
||||||
getPost = api.searchPostsInSpecificSubredditOauth(subredditOrUserName, query, lastItem,
|
getPost = api.searchPostsInSpecificSubredditOauth(subredditOrUserName, query, lastItem,
|
||||||
@ -541,21 +541,21 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
getPost.enqueue(new Callback<String>() {
|
getPost.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()) {
|
||||||
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
||||||
new ParsePost.ParsePostsListingListener() {
|
new ParsePost.ParsePostsListingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
||||||
String nextPageKey;
|
String nextPageKey;
|
||||||
if(lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
if (lastItem == null || lastItem.equals("") || lastItem.equals("null")) {
|
||||||
nextPageKey = null;
|
nextPageKey = null;
|
||||||
} else {
|
} else {
|
||||||
nextPageKey = lastItem;
|
nextPageKey = lastItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(newPosts.size() != 0) {
|
if (newPosts.size() != 0) {
|
||||||
hasPostLiveData.postValue(true);
|
hasPostLiveData.postValue(true);
|
||||||
} else if(nextPageKey != null) {
|
} else if (nextPageKey != null) {
|
||||||
loadSearchPostsInitial(callback, nextPageKey);
|
loadSearchPostsInitial(callback, nextPageKey);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
@ -590,14 +590,14 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||||
Call<String> getPost;
|
Call<String> getPost;
|
||||||
|
|
||||||
if(subredditOrUserName == null) {
|
if (subredditOrUserName == null) {
|
||||||
if(accessToken == null) {
|
if (accessToken == null) {
|
||||||
getPost = api.searchPosts(query, after, sortType);
|
getPost = api.searchPosts(query, after, sortType);
|
||||||
} else {
|
} else {
|
||||||
getPost = api.searchPostsOauth(query, after, sortType, RedditUtils.getOAuthHeader(accessToken));
|
getPost = api.searchPostsOauth(query, after, sortType, RedditUtils.getOAuthHeader(accessToken));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(accessToken == null) {
|
if (accessToken == null) {
|
||||||
getPost = api.searchPostsInSpecificSubreddit(subredditOrUserName, query, after);
|
getPost = api.searchPostsInSpecificSubreddit(subredditOrUserName, query, after);
|
||||||
} else {
|
} else {
|
||||||
getPost = api.searchPostsInSpecificSubredditOauth(subredditOrUserName, query, after,
|
getPost = api.searchPostsInSpecificSubredditOauth(subredditOrUserName, query, after,
|
||||||
@ -608,12 +608,12 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
|||||||
getPost.enqueue(new Callback<String>() {
|
getPost.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()) {
|
||||||
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
ParsePost.parsePosts(response.body(), locale, -1, filter, nsfw,
|
||||||
new ParsePost.ParsePostsListingListener() {
|
new ParsePost.ParsePostsListingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
public void onParsePostsListingSuccess(ArrayList<Post> newPosts, String lastItem) {
|
||||||
if(newPosts.size() == 0 && lastItem != null && !lastItem.equals("") && !lastItem.equals("null")) {
|
if (newPosts.size() == 0 && lastItem != null && !lastItem.equals("") && !lastItem.equals("null")) {
|
||||||
loadSearchPostsAfter(params, callback, lastItem);
|
loadSearchPostsAfter(params, callback, lastItem);
|
||||||
} else {
|
} else {
|
||||||
paginationNetworkStateLiveData.postValue(NetworkState.LOADED);
|
paginationNetworkStateLiveData.postValue(NetworkState.LOADED);
|
||||||
|
@ -79,13 +79,13 @@ class PostDataSourceFactory extends DataSource.Factory {
|
|||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public DataSource<String, Post> create() {
|
public DataSource<String, Post> create() {
|
||||||
if(postType == PostDataSource.TYPE_FRONT_PAGE) {
|
if (postType == PostDataSource.TYPE_FRONT_PAGE) {
|
||||||
postDataSource = new PostDataSource(retrofit, accessToken, locale, postType, sortType,
|
postDataSource = new PostDataSource(retrofit, accessToken, locale, postType, sortType,
|
||||||
filter, nsfw);
|
filter, nsfw);
|
||||||
} else if(postType == PostDataSource.TYPE_SEARCH) {
|
} else if (postType == PostDataSource.TYPE_SEARCH) {
|
||||||
postDataSource = new PostDataSource(retrofit, accessToken, locale, subredditName, query,
|
postDataSource = new PostDataSource(retrofit, accessToken, locale, subredditName, query,
|
||||||
postType, sortType, filter, nsfw);
|
postType, sortType, filter, nsfw);
|
||||||
} else if(postType == PostDataSource.TYPE_SUBREDDIT) {
|
} else if (postType == PostDataSource.TYPE_SUBREDDIT) {
|
||||||
postDataSource = new PostDataSource(retrofit, accessToken, locale, subredditName, postType,
|
postDataSource = new PostDataSource(retrofit, accessToken, locale, subredditName, postType,
|
||||||
sortType, filter, nsfw);
|
sortType, filter, nsfw);
|
||||||
} else {
|
} else {
|
||||||
|
@ -245,13 +245,13 @@ public class PostViewModel extends ViewModel {
|
|||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
|
public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
|
||||||
if(postType == PostDataSource.TYPE_FRONT_PAGE) {
|
if (postType == PostDataSource.TYPE_FRONT_PAGE) {
|
||||||
return (T) new PostViewModel(retrofit, accessToken, locale, postType, sortType, filter,
|
return (T) new PostViewModel(retrofit, accessToken, locale, postType, sortType, filter,
|
||||||
nsfw);
|
nsfw);
|
||||||
} else if(postType == PostDataSource.TYPE_SEARCH){
|
} else if (postType == PostDataSource.TYPE_SEARCH) {
|
||||||
return (T) new PostViewModel(retrofit, accessToken, locale, subredditName, query,
|
return (T) new PostViewModel(retrofit, accessToken, locale, subredditName, query,
|
||||||
postType, sortType, filter, nsfw);
|
postType, sortType, filter, nsfw);
|
||||||
} else if(postType == PostDataSource.TYPE_SUBREDDIT) {
|
} else if (postType == PostDataSource.TYPE_SUBREDDIT) {
|
||||||
return (T) new PostViewModel(retrofit, accessToken, locale, subredditName, postType,
|
return (T) new PostViewModel(retrofit, accessToken, locale, subredditName, postType,
|
||||||
sortType, filter, nsfw);
|
sortType, filter, nsfw);
|
||||||
} else {
|
} else {
|
||||||
|
@ -34,22 +34,17 @@ import retrofit2.Retrofit;
|
|||||||
|
|
||||||
public class PullNotificationWorker extends Worker {
|
public class PullNotificationWorker extends Worker {
|
||||||
public static final String WORKER_TAG = "PNWT";
|
public static final String WORKER_TAG = "PNWT";
|
||||||
|
|
||||||
private Context context;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@Named("oauth_without_authenticator")
|
@Named("oauth_without_authenticator")
|
||||||
Retrofit mOauthWithoutAuthenticatorRetrofit;
|
Retrofit mOauthWithoutAuthenticatorRetrofit;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@Named("no_oauth")
|
@Named("no_oauth")
|
||||||
Retrofit mRetrofit;
|
Retrofit mRetrofit;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
SharedPreferences mSharedPreferences;
|
SharedPreferences mSharedPreferences;
|
||||||
|
private Context context;
|
||||||
|
|
||||||
public PullNotificationWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
|
public PullNotificationWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
|
||||||
super(context, workerParams);
|
super(context, workerParams);
|
||||||
@ -62,18 +57,18 @@ public class PullNotificationWorker extends Worker {
|
|||||||
public Result doWork() {
|
public Result doWork() {
|
||||||
try {
|
try {
|
||||||
List<Account> accounts = mRedditDataRoomDatabase.accountDao().getAllAccounts();
|
List<Account> accounts = mRedditDataRoomDatabase.accountDao().getAllAccounts();
|
||||||
for(int accountIndex = 0; accountIndex < accounts.size(); accountIndex++) {
|
for (int accountIndex = 0; accountIndex < accounts.size(); accountIndex++) {
|
||||||
Account account = accounts.get(accountIndex);
|
Account account = accounts.get(accountIndex);
|
||||||
|
|
||||||
String accountName = account.getUsername();
|
String accountName = account.getUsername();
|
||||||
|
|
||||||
Response<String> response = fetchMessages(account, 1);
|
Response<String> response = fetchMessages(account, 1);
|
||||||
|
|
||||||
if(response != null && response.isSuccessful()) {
|
if (response != null && response.isSuccessful()) {
|
||||||
String responseBody = response.body();
|
String responseBody = response.body();
|
||||||
ArrayList<Message> messages = FetchMessages.parseMessage(responseBody, context.getResources().getConfiguration().locale);
|
ArrayList<Message> messages = FetchMessages.parseMessage(responseBody, context.getResources().getConfiguration().locale);
|
||||||
|
|
||||||
if(messages != null && !messages.isEmpty()) {
|
if (messages != null && !messages.isEmpty()) {
|
||||||
NotificationManagerCompat notificationManager = NotificationUtils.getNotificationManager(context);
|
NotificationManagerCompat notificationManager = NotificationUtils.getNotificationManager(context);
|
||||||
|
|
||||||
NotificationCompat.Builder summaryBuilder = NotificationUtils.buildSummaryNotification(context,
|
NotificationCompat.Builder summaryBuilder = NotificationUtils.buildSummaryNotification(context,
|
||||||
@ -91,9 +86,9 @@ public class PullNotificationWorker extends Worker {
|
|||||||
* 1000 * 60 * 60;
|
* 1000 * 60 * 60;
|
||||||
boolean hasValidMessage = false;
|
boolean hasValidMessage = false;
|
||||||
|
|
||||||
for(int messageIndex = messageSize - 1; messageIndex >= 0; messageIndex--) {
|
for (int messageIndex = messageSize - 1; messageIndex >= 0; messageIndex--) {
|
||||||
Message message = messages.get(messageIndex);
|
Message message = messages.get(messageIndex);
|
||||||
if(currentTime - message.getTimeUTC() > notificationInterval) {
|
if (currentTime - message.getTimeUTC() > notificationInterval) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,16 +99,16 @@ public class PullNotificationWorker extends Worker {
|
|||||||
String kind = message.getKind();
|
String kind = message.getKind();
|
||||||
String title;
|
String title;
|
||||||
String summary;
|
String summary;
|
||||||
if(kind.equals(Message.TYPE_COMMENT) || kind.equals(Message.TYPE_LINK)) {
|
if (kind.equals(Message.TYPE_COMMENT) || kind.equals(Message.TYPE_LINK)) {
|
||||||
title = message.getAuthor();
|
title = message.getAuthor();
|
||||||
summary = message.getSubject().substring(0, 1).toUpperCase() + message.getSubject().substring(1);
|
summary = message.getSubject().substring(0, 1).toUpperCase() + message.getSubject().substring(1);
|
||||||
} else {
|
} else {
|
||||||
title = message.getTitle() == null || message.getTitle().equals("") ? message.getSubject() : message.getTitle();
|
title = message.getTitle() == null || message.getTitle().equals("") ? message.getSubject() : message.getTitle();
|
||||||
if(kind.equals(Message.TYPE_ACCOUNT)) {
|
if (kind.equals(Message.TYPE_ACCOUNT)) {
|
||||||
summary = context.getString(R.string.notification_summary_account);
|
summary = context.getString(R.string.notification_summary_account);
|
||||||
} else if(kind.equals(Message.TYPE_MESSAGE)) {
|
} else if (kind.equals(Message.TYPE_MESSAGE)) {
|
||||||
summary = context.getString(R.string.notification_summary_message);
|
summary = context.getString(R.string.notification_summary_message);
|
||||||
} else if(kind.equals(Message.TYPE_SUBREDDIT)) {
|
} else if (kind.equals(Message.TYPE_SUBREDDIT)) {
|
||||||
summary = context.getString(R.string.notification_summary_subreddit);
|
summary = context.getString(R.string.notification_summary_subreddit);
|
||||||
} else {
|
} else {
|
||||||
summary = context.getString(R.string.notification_summary_award);
|
summary = context.getString(R.string.notification_summary_award);
|
||||||
@ -126,7 +121,7 @@ public class PullNotificationWorker extends Worker {
|
|||||||
NotificationUtils.CHANNEL_NEW_MESSAGES,
|
NotificationUtils.CHANNEL_NEW_MESSAGES,
|
||||||
NotificationUtils.getAccountGroupName(accountName));
|
NotificationUtils.getAccountGroupName(accountName));
|
||||||
|
|
||||||
if(kind.equals(Message.TYPE_COMMENT)) {
|
if (kind.equals(Message.TYPE_COMMENT)) {
|
||||||
Intent intent = new Intent(context, LinkResolverActivity.class);
|
Intent intent = new Intent(context, LinkResolverActivity.class);
|
||||||
Uri uri = LinkResolverActivity.getRedditUriByPath(message.getContext());
|
Uri uri = LinkResolverActivity.getRedditUriByPath(message.getContext());
|
||||||
intent.setData(uri);
|
intent.setData(uri);
|
||||||
@ -134,12 +129,12 @@ public class PullNotificationWorker extends Worker {
|
|||||||
intent.putExtra(LinkResolverActivity.EXTRA_MESSAGE_FULLNAME, message.getFullname());
|
intent.putExtra(LinkResolverActivity.EXTRA_MESSAGE_FULLNAME, message.getFullname());
|
||||||
PendingIntent pendingIntent = PendingIntent.getActivity(context, accountIndex * 6, intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
PendingIntent pendingIntent = PendingIntent.getActivity(context, accountIndex * 6, intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||||
builder.setContentIntent(pendingIntent);
|
builder.setContentIntent(pendingIntent);
|
||||||
} else if(kind.equals(Message.TYPE_ACCOUNT)) {
|
} else if (kind.equals(Message.TYPE_ACCOUNT)) {
|
||||||
Intent intent = new Intent(context, ViewMessageActivity.class);
|
Intent intent = new Intent(context, ViewMessageActivity.class);
|
||||||
intent.putExtra(ViewMessageActivity.EXTRA_NEW_ACCOUNT_NAME, accountName);
|
intent.putExtra(ViewMessageActivity.EXTRA_NEW_ACCOUNT_NAME, accountName);
|
||||||
PendingIntent summaryPendingIntent = PendingIntent.getActivity(context, accountIndex * 6 + 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
PendingIntent summaryPendingIntent = PendingIntent.getActivity(context, accountIndex * 6 + 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||||
builder.setContentIntent(summaryPendingIntent);
|
builder.setContentIntent(summaryPendingIntent);
|
||||||
} else if(kind.equals(Message.TYPE_LINK)) {
|
} else if (kind.equals(Message.TYPE_LINK)) {
|
||||||
Intent intent = new Intent(context, LinkResolverActivity.class);
|
Intent intent = new Intent(context, LinkResolverActivity.class);
|
||||||
Uri uri = LinkResolverActivity.getRedditUriByPath(message.getContext());
|
Uri uri = LinkResolverActivity.getRedditUriByPath(message.getContext());
|
||||||
intent.setData(uri);
|
intent.setData(uri);
|
||||||
@ -147,12 +142,12 @@ public class PullNotificationWorker extends Worker {
|
|||||||
intent.putExtra(LinkResolverActivity.EXTRA_MESSAGE_FULLNAME, message.getFullname());
|
intent.putExtra(LinkResolverActivity.EXTRA_MESSAGE_FULLNAME, message.getFullname());
|
||||||
PendingIntent pendingIntent = PendingIntent.getActivity(context, accountIndex * 6 + 2, intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
PendingIntent pendingIntent = PendingIntent.getActivity(context, accountIndex * 6 + 2, intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||||
builder.setContentIntent(pendingIntent);
|
builder.setContentIntent(pendingIntent);
|
||||||
} else if(kind.equals(Message.TYPE_MESSAGE)) {
|
} else if (kind.equals(Message.TYPE_MESSAGE)) {
|
||||||
Intent intent = new Intent(context, ViewMessageActivity.class);
|
Intent intent = new Intent(context, ViewMessageActivity.class);
|
||||||
intent.putExtra(ViewMessageActivity.EXTRA_NEW_ACCOUNT_NAME, accountName);
|
intent.putExtra(ViewMessageActivity.EXTRA_NEW_ACCOUNT_NAME, accountName);
|
||||||
PendingIntent summaryPendingIntent = PendingIntent.getActivity(context, accountIndex * 6 + 3, intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
PendingIntent summaryPendingIntent = PendingIntent.getActivity(context, accountIndex * 6 + 3, intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||||
builder.setContentIntent(summaryPendingIntent);
|
builder.setContentIntent(summaryPendingIntent);
|
||||||
} else if(kind.equals(Message.TYPE_SUBREDDIT)) {
|
} else if (kind.equals(Message.TYPE_SUBREDDIT)) {
|
||||||
Intent intent = new Intent(context, ViewMessageActivity.class);
|
Intent intent = new Intent(context, ViewMessageActivity.class);
|
||||||
intent.putExtra(ViewMessageActivity.EXTRA_NEW_ACCOUNT_NAME, accountName);
|
intent.putExtra(ViewMessageActivity.EXTRA_NEW_ACCOUNT_NAME, accountName);
|
||||||
PendingIntent summaryPendingIntent = PendingIntent.getActivity(context, accountIndex * 6 + 4, intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
PendingIntent summaryPendingIntent = PendingIntent.getActivity(context, accountIndex * 6 + 4, intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||||
@ -166,7 +161,7 @@ public class PullNotificationWorker extends Worker {
|
|||||||
notificationManager.notify(NotificationUtils.getNotificationIdUnreadMessage(accountIndex, messageIndex), builder.build());
|
notificationManager.notify(NotificationUtils.getNotificationIdUnreadMessage(accountIndex, messageIndex), builder.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
if(hasValidMessage) {
|
if (hasValidMessage) {
|
||||||
inboxStyle.setBigContentTitle(context.getString(R.string.notification_new_messages, messages.size()))
|
inboxStyle.setBigContentTitle(context.getString(R.string.notification_new_messages, messages.size()))
|
||||||
.setSummaryText(accountName);
|
.setSummaryText(accountName);
|
||||||
|
|
||||||
@ -197,7 +192,7 @@ public class PullNotificationWorker extends Worker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Response<String> fetchMessages(Account account, int retryCount) throws IOException, JSONException {
|
private Response<String> fetchMessages(Account account, int retryCount) throws IOException, JSONException {
|
||||||
if(retryCount < 0) {
|
if (retryCount < 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -206,12 +201,12 @@ public class PullNotificationWorker extends Worker {
|
|||||||
FetchMessages.WHERE_UNREAD, null);
|
FetchMessages.WHERE_UNREAD, null);
|
||||||
Response<String> response = call.execute();
|
Response<String> response = call.execute();
|
||||||
|
|
||||||
if(response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
return response;
|
return response;
|
||||||
} else {
|
} else {
|
||||||
if(response.code() == 401) {
|
if (response.code() == 401) {
|
||||||
String accessToken = refreshAccessToken(account);
|
String accessToken = refreshAccessToken(account);
|
||||||
if(!accessToken.equals("")) {
|
if (!accessToken.equals("")) {
|
||||||
return fetchMessages(account, retryCount - 1);
|
return fetchMessages(account, retryCount - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -234,7 +229,7 @@ public class PullNotificationWorker extends Worker {
|
|||||||
Call<String> accessTokenCall = api.getAccessToken(RedditUtils.getHttpBasicAuthHeader(), params);
|
Call<String> accessTokenCall = api.getAccessToken(RedditUtils.getHttpBasicAuthHeader(), params);
|
||||||
try {
|
try {
|
||||||
Response response = accessTokenCall.execute();
|
Response response = accessTokenCall.execute();
|
||||||
if(response.isSuccessful() && response.body() != null) {
|
if (response.isSuccessful() && response.body() != null) {
|
||||||
JSONObject jsonObject = new JSONObject(response.body().toString());
|
JSONObject jsonObject = new JSONObject(response.body().toString());
|
||||||
String newAccessToken = jsonObject.getString(RedditUtils.ACCESS_TOKEN_KEY);
|
String newAccessToken = jsonObject.getString(RedditUtils.ACCESS_TOKEN_KEY);
|
||||||
mRedditDataRoomDatabase.accountDao().changeAccessToken(account.getUsername(), newAccessToken);
|
mRedditDataRoomDatabase.accountDao().changeAccessToken(account.getUsername(), newAccessToken);
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user