mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-11-10 04:37:25 +01:00
Add a time option to some sort types. Remember the last sort type.
This commit is contained in:
parent
d82b1e6305
commit
fdca23fa14
@ -31,15 +31,16 @@ import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask
|
||||
import ml.docilealligator.infinityforreddit.Event.ChangeNSFWEvent;
|
||||
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
||||
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.PostDataSource;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||
import ml.docilealligator.infinityforreddit.SortType;
|
||||
import ml.docilealligator.infinityforreddit.SortTypeSelectionCallback;
|
||||
|
||||
public class AccountPostsActivity extends BaseActivity implements UserThingSortTypeBottomSheetFragment.UserThingSortTypeSelectionCallback {
|
||||
public class AccountPostsActivity extends BaseActivity implements SortTypeSelectionCallback {
|
||||
|
||||
static final String EXTRA_USER_WHERE = "EUW";
|
||||
|
||||
@ -177,7 +178,6 @@ public class AccountPostsActivity extends BaseActivity implements UserThingSortT
|
||||
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_USER);
|
||||
bundle.putString(PostFragment.EXTRA_USER_NAME, mAccountName);
|
||||
bundle.putString(PostFragment.EXTRA_USER_WHERE, mUserWhere);
|
||||
bundle.putString(PostFragment.EXTRA_SORT_TYPE, PostDataSource.SORT_TYPE_NEW);
|
||||
bundle.putInt(PostFragment.EXTRA_FILTER, PostFragment.EXTRA_NO_FILTER);
|
||||
bundle.putString(PostFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
|
||||
mFragment.setArguments(bundle);
|
||||
@ -255,12 +255,17 @@ public class AccountPostsActivity extends BaseActivity implements UserThingSortT
|
||||
}
|
||||
|
||||
@Override
|
||||
public void userThingSortTypeSelected(String sortType) {
|
||||
public void sortTypeSelected(SortType sortType) {
|
||||
if (mFragment != null) {
|
||||
((PostFragment) mFragment).changeSortType(sortType);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sortTypeSelected(String sortType) {
|
||||
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onAccountSwitchEvent(SwitchAccountEvent event) {
|
||||
finish();
|
||||
|
@ -294,7 +294,6 @@ public class AccountSavedThingActivity extends BaseActivity {
|
||||
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_USER);
|
||||
bundle.putString(PostFragment.EXTRA_USER_NAME, mAccountName);
|
||||
bundle.putString(PostFragment.EXTRA_USER_WHERE, PostDataSource.USER_WHERE_SAVED);
|
||||
bundle.putString(PostFragment.EXTRA_SORT_TYPE, PostDataSource.SORT_TYPE_NEW);
|
||||
bundle.putInt(PostFragment.EXTRA_FILTER, PostFragment.EXTRA_NO_FILTER);
|
||||
bundle.putString(PostFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
|
||||
fragment.setArguments(bundle);
|
||||
|
@ -31,6 +31,7 @@ import ml.docilealligator.infinityforreddit.AsyncTask.GetCurrentAccountAsyncTask
|
||||
import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.PostFragment;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.SearchPostSortTypeBottomSheetFragment;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.SortTimeBottomSheetFragment;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.SortTypeBottomSheetFragment;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.UserThingSortTypeBottomSheetFragment;
|
||||
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
||||
@ -40,15 +41,15 @@ import ml.docilealligator.infinityforreddit.PostDataSource;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||
import ml.docilealligator.infinityforreddit.SortType;
|
||||
import ml.docilealligator.infinityforreddit.SortTypeSelectionCallback;
|
||||
|
||||
public class FilteredThingActivity extends BaseActivity implements SortTypeBottomSheetFragment.SortTypeSelectionCallback,
|
||||
SearchPostSortTypeBottomSheetFragment.SearchSortTypeSelectionCallback, UserThingSortTypeBottomSheetFragment.UserThingSortTypeSelectionCallback {
|
||||
public class FilteredThingActivity extends BaseActivity implements SortTypeSelectionCallback {
|
||||
|
||||
public static final String EXTRA_NAME = "ESN";
|
||||
public static final String EXTRA_QUERY = "EQ";
|
||||
public static final String EXTRA_FILTER = "EF";
|
||||
public static final String EXTRA_POST_TYPE = "EPT";
|
||||
public static final String EXTRA_SORT_TYPE = "EST";
|
||||
public static final String EXTRA_USER_WHERE = "EUW";
|
||||
|
||||
private static final String IS_IN_LAZY_MODE_STATE = "IILMS";
|
||||
@ -79,6 +80,7 @@ public class FilteredThingActivity extends BaseActivity implements SortTypeBotto
|
||||
private SortTypeBottomSheetFragment subredditSortTypeBottomSheetFragment;
|
||||
private UserThingSortTypeBottomSheetFragment userThingSortTypeBottomSheetFragment;
|
||||
private SearchPostSortTypeBottomSheetFragment searchPostSortTypeBottomSheetFragment;
|
||||
private SortTimeBottomSheetFragment sortTimeBottomSheetFragment;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
@ -142,7 +144,6 @@ public class FilteredThingActivity extends BaseActivity implements SortTypeBotto
|
||||
name = getIntent().getStringExtra(EXTRA_NAME);
|
||||
postType = getIntent().getIntExtra(EXTRA_POST_TYPE, PostDataSource.TYPE_FRONT_PAGE);
|
||||
int filter = getIntent().getIntExtra(EXTRA_FILTER, Post.TEXT_TYPE);
|
||||
String sortType = getIntent().getStringExtra(EXTRA_SORT_TYPE);
|
||||
|
||||
if (savedInstanceState != null) {
|
||||
isInLazyMode = savedInstanceState.getBoolean(IS_IN_LAZY_MODE_STATE);
|
||||
@ -153,14 +154,12 @@ public class FilteredThingActivity extends BaseActivity implements SortTypeBotto
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout_filtered_posts_activity, mFragment).commit();
|
||||
|
||||
if (!mNullAccessToken && mAccessToken == null) {
|
||||
getCurrentAccountAndBindView(filter, sortType);
|
||||
getCurrentAccountAndBindView(filter);
|
||||
} else {
|
||||
/*mFragment = getSupportFragmentManager().getFragment(savedInstanceState, FRAGMENT_OUT_STATE);
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout_filtered_posts_activity, mFragment).commit();*/
|
||||
bindView(filter, sortType, false);
|
||||
bindView(filter, false);
|
||||
}
|
||||
} else {
|
||||
getCurrentAccountAndBindView(filter, sortType);
|
||||
getCurrentAccountAndBindView(filter);
|
||||
}
|
||||
}
|
||||
|
||||
@ -169,18 +168,18 @@ public class FilteredThingActivity extends BaseActivity implements SortTypeBotto
|
||||
return mSharedPreferences;
|
||||
}
|
||||
|
||||
private void getCurrentAccountAndBindView(int filter, String sortType) {
|
||||
private void getCurrentAccountAndBindView(int filter) {
|
||||
new GetCurrentAccountAsyncTask(mRedditDataRoomDatabase.accountDao(), account -> {
|
||||
if (account == null) {
|
||||
mNullAccessToken = true;
|
||||
} else {
|
||||
mAccessToken = account.getAccessToken();
|
||||
}
|
||||
bindView(filter, sortType, true);
|
||||
bindView(filter, true);
|
||||
}).execute();
|
||||
}
|
||||
|
||||
private void bindView(int filter, String sortType, boolean initializeFragment) {
|
||||
private void bindView(int filter, boolean initializeFragment) {
|
||||
switch (postType) {
|
||||
case PostDataSource.TYPE_FRONT_PAGE:
|
||||
getSupportActionBar().setTitle(name);
|
||||
@ -223,6 +222,8 @@ public class FilteredThingActivity extends BaseActivity implements SortTypeBotto
|
||||
break;
|
||||
}
|
||||
|
||||
sortTimeBottomSheetFragment = new SortTimeBottomSheetFragment();
|
||||
|
||||
switch (filter) {
|
||||
case Post.NSFW_TYPE:
|
||||
toolbar.setSubtitle(R.string.nsfw);
|
||||
@ -249,7 +250,6 @@ public class FilteredThingActivity extends BaseActivity implements SortTypeBotto
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(PostFragment.EXTRA_NAME, name);
|
||||
bundle.putInt(PostFragment.EXTRA_POST_TYPE, postType);
|
||||
bundle.putString(PostFragment.EXTRA_SORT_TYPE, sortType);
|
||||
bundle.putInt(PostFragment.EXTRA_FILTER, filter);
|
||||
bundle.putString(PostFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
|
||||
if (postType == PostDataSource.TYPE_USER) {
|
||||
@ -350,18 +350,16 @@ public class FilteredThingActivity extends BaseActivity implements SortTypeBotto
|
||||
}
|
||||
|
||||
@Override
|
||||
public void searchSortTypeSelected(String sortType) {
|
||||
public void sortTypeSelected(SortType sortType) {
|
||||
((PostFragment) mFragment).changeSortType(sortType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sortTypeSelected(String sortType) {
|
||||
((PostFragment) mFragment).changeSortType(sortType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void userThingSortTypeSelected(String sortType) {
|
||||
((PostFragment) mFragment).changeSortType(sortType);
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(SortTimeBottomSheetFragment.EXTRA_SORT_TYPE, sortType);
|
||||
sortTimeBottomSheetFragment.setArguments(bundle);
|
||||
sortTimeBottomSheetFragment.show(getSupportFragmentManager(), sortTimeBottomSheetFragment.getTag());
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
|
@ -74,6 +74,7 @@ import ml.docilealligator.infinityforreddit.FetchMyInfo;
|
||||
import ml.docilealligator.infinityforreddit.FetchSubscribedThing;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.PostFragment;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.PostTypeBottomSheetFragment;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.SortTimeBottomSheetFragment;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.SortTypeBottomSheetFragment;
|
||||
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
||||
import ml.docilealligator.infinityforreddit.Infinity;
|
||||
@ -84,13 +85,15 @@ import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.ReadMessage;
|
||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||
import ml.docilealligator.infinityforreddit.SortType;
|
||||
import ml.docilealligator.infinityforreddit.SortTypeSelectionCallback;
|
||||
import ml.docilealligator.infinityforreddit.SubredditDatabase.SubredditData;
|
||||
import ml.docilealligator.infinityforreddit.SubscribedSubredditDatabase.SubscribedSubredditData;
|
||||
import ml.docilealligator.infinityforreddit.SubscribedUserDatabase.SubscribedUserData;
|
||||
import pl.droidsonroids.gif.GifImageView;
|
||||
import retrofit2.Retrofit;
|
||||
|
||||
public class MainActivity extends BaseActivity implements SortTypeBottomSheetFragment.SortTypeSelectionCallback,
|
||||
public class MainActivity extends BaseActivity implements SortTypeSelectionCallback,
|
||||
PostTypeBottomSheetFragment.PostTypeSelectionCallback {
|
||||
|
||||
static final String EXTRA_POST_TYPE = "EPT";
|
||||
@ -177,6 +180,7 @@ public class MainActivity extends BaseActivity implements SortTypeBottomSheetFra
|
||||
private PostTypeBottomSheetFragment postTypeBottomSheetFragment;
|
||||
private SortTypeBottomSheetFragment bestSortTypeBottomSheetFragment;
|
||||
private SortTypeBottomSheetFragment popularAndAllSortTypeBottomSheetFragment;
|
||||
private SortTimeBottomSheetFragment sortTimeBottomSheetFragment;
|
||||
private boolean mNullAccessToken = false;
|
||||
private String mAccessToken;
|
||||
private String mAccountName;
|
||||
@ -278,6 +282,8 @@ public class MainActivity extends BaseActivity implements SortTypeBottomSheetFra
|
||||
popularBundle.putBoolean(SortTypeBottomSheetFragment.EXTRA_NO_BEST_TYPE, true);
|
||||
popularAndAllSortTypeBottomSheetFragment.setArguments(popularBundle);
|
||||
|
||||
sortTimeBottomSheetFragment = new SortTimeBottomSheetFragment();
|
||||
|
||||
setSupportActionBar(toolbar);
|
||||
|
||||
drawer = findViewById(R.id.drawer_layout);
|
||||
@ -877,10 +883,18 @@ public class MainActivity extends BaseActivity implements SortTypeBottomSheetFra
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sortTypeSelected(String sortType) {
|
||||
public void sortTypeSelected(SortType sortType) {
|
||||
sectionsPagerAdapter.changeSortType(sortType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sortTypeSelected(String sortType) {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(SortTimeBottomSheetFragment.EXTRA_SORT_TYPE, sortType);
|
||||
sortTimeBottomSheetFragment.setArguments(bundle);
|
||||
sortTimeBottomSheetFragment.show(getSupportFragmentManager(), sortTimeBottomSheetFragment.getTag());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postTypeSelected(int postType) {
|
||||
Intent intent;
|
||||
@ -946,7 +960,6 @@ public class MainActivity extends BaseActivity implements SortTypeBottomSheetFra
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
|
||||
bundle.putString(PostFragment.EXTRA_NAME, "popular");
|
||||
bundle.putString(PostFragment.EXTRA_SORT_TYPE, PostDataSource.SORT_TYPE_HOT);
|
||||
bundle.putInt(PostFragment.EXTRA_FILTER, PostFragment.EXTRA_NO_FILTER);
|
||||
bundle.putString(PostFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
|
||||
fragment.setArguments(bundle);
|
||||
@ -956,7 +969,6 @@ public class MainActivity extends BaseActivity implements SortTypeBottomSheetFra
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
|
||||
bundle.putString(PostFragment.EXTRA_NAME, "all");
|
||||
bundle.putString(PostFragment.EXTRA_SORT_TYPE, PostDataSource.SORT_TYPE_HOT);
|
||||
bundle.putInt(PostFragment.EXTRA_FILTER, PostFragment.EXTRA_NO_FILTER);
|
||||
bundle.putString(PostFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
|
||||
fragment.setArguments(bundle);
|
||||
@ -968,7 +980,6 @@ public class MainActivity extends BaseActivity implements SortTypeBottomSheetFra
|
||||
PostFragment fragment = new PostFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_FRONT_PAGE);
|
||||
bundle.putString(PostFragment.EXTRA_SORT_TYPE, PostDataSource.SORT_TYPE_BEST);
|
||||
bundle.putInt(PostFragment.EXTRA_FILTER, PostFragment.EXTRA_NO_FILTER);
|
||||
bundle.putString(PostFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
|
||||
fragment.setArguments(bundle);
|
||||
@ -978,7 +989,6 @@ public class MainActivity extends BaseActivity implements SortTypeBottomSheetFra
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
|
||||
bundle.putString(PostFragment.EXTRA_NAME, "popular");
|
||||
bundle.putString(PostFragment.EXTRA_SORT_TYPE, PostDataSource.SORT_TYPE_HOT);
|
||||
bundle.putInt(PostFragment.EXTRA_FILTER, PostFragment.EXTRA_NO_FILTER);
|
||||
bundle.putString(PostFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
|
||||
fragment.setArguments(bundle);
|
||||
@ -988,7 +998,6 @@ public class MainActivity extends BaseActivity implements SortTypeBottomSheetFra
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
|
||||
bundle.putString(PostFragment.EXTRA_NAME, "all");
|
||||
bundle.putString(PostFragment.EXTRA_SORT_TYPE, PostDataSource.SORT_TYPE_HOT);
|
||||
bundle.putInt(PostFragment.EXTRA_FILTER, PostFragment.EXTRA_NO_FILTER);
|
||||
bundle.putString(PostFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
|
||||
fragment.setArguments(bundle);
|
||||
@ -1174,7 +1183,7 @@ public class MainActivity extends BaseActivity implements SortTypeBottomSheetFra
|
||||
}
|
||||
}
|
||||
|
||||
void changeSortType(String sortType) {
|
||||
void changeSortType(SortType sortType) {
|
||||
if (mAccessToken == null) {
|
||||
if (viewPager.getCurrentItem() == 0) {
|
||||
popularPostFragment.changeSortType(sortType);
|
||||
@ -1184,12 +1193,27 @@ public class MainActivity extends BaseActivity implements SortTypeBottomSheetFra
|
||||
} else {
|
||||
switch (viewPager.getCurrentItem()) {
|
||||
case 0:
|
||||
mSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TYPE_BEST_POST, sortType.getType().name()).apply();
|
||||
if(sortType.getTime() != null) {
|
||||
mSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TIME_BEST_POST, sortType.getTime().name()).apply();
|
||||
}
|
||||
|
||||
frontPagePostFragment.changeSortType(sortType);
|
||||
break;
|
||||
case 1:
|
||||
mSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TYPE_POPULAR_POST, sortType.getType().name()).apply();
|
||||
if(sortType.getTime() != null) {
|
||||
mSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TIME_POPULAR_POST, sortType.getTime().name()).apply();
|
||||
}
|
||||
|
||||
popularPostFragment.changeSortType(sortType);
|
||||
break;
|
||||
case 2:
|
||||
mSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TYPE_ALL_POST, sortType.getType().name()).apply();
|
||||
if(sortType.getTime() != null) {
|
||||
mSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TIME_ALL_POST, sortType.getTime().name()).apply();
|
||||
}
|
||||
|
||||
allPostFragment.changeSortType(sortType);
|
||||
}
|
||||
}
|
||||
|
@ -37,6 +37,7 @@ import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.PostFragment;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.SearchPostSortTypeBottomSheetFragment;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.SearchUserAndSubredditSortTypeBottomSheetFragment;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.SortTimeBottomSheetFragment;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.SubredditListingFragment;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.UserListingFragment;
|
||||
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
||||
@ -45,9 +46,10 @@ import ml.docilealligator.infinityforreddit.PostDataSource;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||
import ml.docilealligator.infinityforreddit.SortType;
|
||||
import ml.docilealligator.infinityforreddit.SortTypeSelectionCallback;
|
||||
|
||||
public class SearchResultActivity extends BaseActivity implements SearchPostSortTypeBottomSheetFragment.SearchSortTypeSelectionCallback,
|
||||
SearchUserAndSubredditSortTypeBottomSheetFragment.SearchUserAndSubredditSortTypeSelectionCallback {
|
||||
public class SearchResultActivity extends BaseActivity implements SortTypeSelectionCallback {
|
||||
static final String EXTRA_QUERY = "QK";
|
||||
static final String EXTRA_SUBREDDIT_NAME = "ESN";
|
||||
|
||||
@ -73,6 +75,7 @@ public class SearchResultActivity extends BaseActivity implements SearchPostSort
|
||||
private String mSubredditName;
|
||||
private SectionsPagerAdapter sectionsPagerAdapter;
|
||||
private SearchPostSortTypeBottomSheetFragment searchPostSortTypeBottomSheetFragment;
|
||||
private SortTimeBottomSheetFragment sortTimeBottomSheetFragment;
|
||||
private SearchUserAndSubredditSortTypeBottomSheetFragment searchUserAndSubredditSortTypeBottomSheetFragment;
|
||||
|
||||
@Override
|
||||
@ -146,6 +149,8 @@ public class SearchResultActivity extends BaseActivity implements SearchPostSort
|
||||
Bundle bundle = new Bundle();
|
||||
searchPostSortTypeBottomSheetFragment.setArguments(bundle);
|
||||
|
||||
sortTimeBottomSheetFragment = new SortTimeBottomSheetFragment();
|
||||
|
||||
searchUserAndSubredditSortTypeBottomSheetFragment = new SearchUserAndSubredditSortTypeBottomSheetFragment();
|
||||
|
||||
// Get the intent, verify the action and get the query
|
||||
@ -240,12 +245,20 @@ public class SearchResultActivity extends BaseActivity implements SearchPostSort
|
||||
}
|
||||
|
||||
@Override
|
||||
public void searchSortTypeSelected(String sortType) {
|
||||
sectionsPagerAdapter.changeSortType(sortType, 0);
|
||||
public void sortTypeSelected(SortType sortType) {
|
||||
sectionsPagerAdapter.changeSortType(sortType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void searchUserAndSubredditSortTypeSelected(String sortType, int fragmentPosition) {
|
||||
public void sortTypeSelected(String sortType) {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(SortTimeBottomSheetFragment.EXTRA_SORT_TYPE, sortType);
|
||||
sortTimeBottomSheetFragment.setArguments(bundle);
|
||||
sortTimeBottomSheetFragment.show(getSupportFragmentManager(), sortTimeBottomSheetFragment.getTag());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void searchUserAndSubredditSortTypeSelected(SortType sortType, int fragmentPosition) {
|
||||
sectionsPagerAdapter.changeSortType(sortType, fragmentPosition);
|
||||
}
|
||||
|
||||
@ -277,7 +290,6 @@ public class SearchResultActivity extends BaseActivity implements SearchPostSort
|
||||
PostFragment mFragment = new PostFragment();
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_SEARCH);
|
||||
bundle.putString(PostFragment.EXTRA_SORT_TYPE, PostDataSource.SORT_TYPE_RELEVANCE);
|
||||
bundle.putString(PostFragment.EXTRA_NAME, mSubredditName);
|
||||
bundle.putString(PostFragment.EXTRA_QUERY, mQuery);
|
||||
bundle.putInt(PostFragment.EXTRA_FILTER, PostFragment.EXTRA_NO_FILTER);
|
||||
@ -343,15 +355,23 @@ public class SearchResultActivity extends BaseActivity implements SearchPostSort
|
||||
return fragment;
|
||||
}
|
||||
|
||||
void changeSortType(String sortType, int fragmentPosition) {
|
||||
void changeSortType(SortType sortType) {
|
||||
mSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TYPE_SEARCH_POST, sortType.getType().name()).apply();
|
||||
if(sortType.getTime() != null) {
|
||||
mSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TIME_SEARCH_POST, sortType.getTime().name()).apply();
|
||||
}
|
||||
|
||||
postFragment.changeSortType(sortType);
|
||||
}
|
||||
|
||||
void changeSortType(SortType sortType, int fragmentPosition) {
|
||||
switch (fragmentPosition) {
|
||||
case 0:
|
||||
postFragment.changeSortType(sortType);
|
||||
break;
|
||||
case 1:
|
||||
mSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TYPE_SEARCH_SUBREDDIT, sortType.getType().name()).apply();
|
||||
subredditListingFragment.changeSortType(sortType);
|
||||
break;
|
||||
case 2:
|
||||
mSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TYPE_SEARCH_USER, sortType.getType().name()).apply();
|
||||
userListingFragment.changeSortType(sortType);
|
||||
}
|
||||
}
|
||||
|
@ -49,6 +49,7 @@ import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
||||
import ml.docilealligator.infinityforreddit.FetchSubredditData;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.PostFragment;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.PostTypeBottomSheetFragment;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.SortTimeBottomSheetFragment;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.SortTypeBottomSheetFragment;
|
||||
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
||||
import ml.docilealligator.infinityforreddit.Infinity;
|
||||
@ -57,6 +58,8 @@ import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.ReadMessage;
|
||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||
import ml.docilealligator.infinityforreddit.SortType;
|
||||
import ml.docilealligator.infinityforreddit.SortTypeSelectionCallback;
|
||||
import ml.docilealligator.infinityforreddit.SubredditDatabase.SubredditDao;
|
||||
import ml.docilealligator.infinityforreddit.SubredditDatabase.SubredditData;
|
||||
import ml.docilealligator.infinityforreddit.SubredditDatabase.SubredditViewModel;
|
||||
@ -64,7 +67,7 @@ import ml.docilealligator.infinityforreddit.SubredditSubscription;
|
||||
import pl.droidsonroids.gif.GifImageView;
|
||||
import retrofit2.Retrofit;
|
||||
|
||||
public class ViewSubredditDetailActivity extends BaseActivity implements SortTypeBottomSheetFragment.SortTypeSelectionCallback,
|
||||
public class ViewSubredditDetailActivity extends BaseActivity implements SortTypeSelectionCallback,
|
||||
PostTypeBottomSheetFragment.PostTypeSelectionCallback {
|
||||
|
||||
public static final String EXTRA_SUBREDDIT_NAME_KEY = "ESN";
|
||||
@ -132,6 +135,7 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp
|
||||
private AppBarLayout.LayoutParams params;
|
||||
private PostTypeBottomSheetFragment postTypeBottomSheetFragment;
|
||||
private SortTypeBottomSheetFragment sortTypeBottomSheetFragment;
|
||||
private SortTimeBottomSheetFragment sortTimeBottomSheetFragment;
|
||||
private SubredditViewModel mSubredditViewModel;
|
||||
|
||||
@Override
|
||||
@ -210,8 +214,6 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp
|
||||
getCurrentAccountAndBindView();
|
||||
} else {
|
||||
bindView(false);
|
||||
/*mFragment = getSupportFragmentManager().getFragment(savedInstanceState, FRAGMENT_OUT_STATE_KEY);
|
||||
getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout_view_subreddit_detail_activity, mFragment).commit();*/
|
||||
}
|
||||
|
||||
if (mFetchSubredditInfoSuccess) {
|
||||
@ -228,6 +230,8 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp
|
||||
bottomSheetBundle.putBoolean(SortTypeBottomSheetFragment.EXTRA_NO_BEST_TYPE, true);
|
||||
sortTypeBottomSheetFragment.setArguments(bottomSheetBundle);
|
||||
|
||||
sortTimeBottomSheetFragment = new SortTimeBottomSheetFragment();
|
||||
|
||||
params = (AppBarLayout.LayoutParams) collapsingToolbarLayout.getLayoutParams();
|
||||
|
||||
//Get status bar height
|
||||
@ -459,7 +463,6 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(PostFragment.EXTRA_NAME, subredditName);
|
||||
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
|
||||
bundle.putString(PostFragment.EXTRA_SORT_TYPE, PostDataSource.SORT_TYPE_BEST);
|
||||
bundle.putInt(PostFragment.EXTRA_FILTER, PostFragment.EXTRA_NO_FILTER);
|
||||
bundle.putString(PostFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
|
||||
mFragment.setArguments(bundle);
|
||||
@ -569,10 +572,23 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sortTypeSelected(String sortType) {
|
||||
public void sortTypeSelected(SortType sortType) {
|
||||
mSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TYPE_SUBREDDIT_POST, sortType.getType().name()).apply();
|
||||
if(sortType.getTime() != null) {
|
||||
mSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TIME_SUBREDDIT_POST, sortType.getTime().name()).apply();
|
||||
}
|
||||
|
||||
((PostFragment) mFragment).changeSortType(sortType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sortTypeSelected(String sortType) {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString(SortTimeBottomSheetFragment.EXTRA_SORT_TYPE, sortType);
|
||||
sortTimeBottomSheetFragment.setArguments(bundle);
|
||||
sortTimeBottomSheetFragment.show(getSupportFragmentManager(), sortTimeBottomSheetFragment.getTag());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postTypeSelected(int postType) {
|
||||
Intent intent;
|
||||
|
@ -55,6 +55,7 @@ import ml.docilealligator.infinityforreddit.Event.SwitchAccountEvent;
|
||||
import ml.docilealligator.infinityforreddit.FetchUserData;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.CommentsListingFragment;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.PostFragment;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.SortTimeBottomSheetFragment;
|
||||
import ml.docilealligator.infinityforreddit.Fragment.UserThingSortTypeBottomSheetFragment;
|
||||
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
||||
import ml.docilealligator.infinityforreddit.Infinity;
|
||||
@ -63,6 +64,8 @@ import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.ReadMessage;
|
||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||
import ml.docilealligator.infinityforreddit.SortType;
|
||||
import ml.docilealligator.infinityforreddit.SortTypeSelectionCallback;
|
||||
import ml.docilealligator.infinityforreddit.SubscribedUserDatabase.SubscribedUserDao;
|
||||
import ml.docilealligator.infinityforreddit.User.UserDao;
|
||||
import ml.docilealligator.infinityforreddit.User.UserData;
|
||||
@ -71,7 +74,7 @@ import ml.docilealligator.infinityforreddit.UserFollowing;
|
||||
import pl.droidsonroids.gif.GifImageView;
|
||||
import retrofit2.Retrofit;
|
||||
|
||||
public class ViewUserDetailActivity extends BaseActivity implements UserThingSortTypeBottomSheetFragment.UserThingSortTypeSelectionCallback {
|
||||
public class ViewUserDetailActivity extends BaseActivity implements SortTypeSelectionCallback {
|
||||
|
||||
public static final String EXTRA_USER_NAME_KEY = "EUNK";
|
||||
public static final String EXTRA_MESSAGE_FULLNAME = "ENF";
|
||||
@ -122,6 +125,7 @@ public class ViewUserDetailActivity extends BaseActivity implements UserThingSor
|
||||
private Menu mMenu;
|
||||
private AppBarLayout.LayoutParams params;
|
||||
private UserThingSortTypeBottomSheetFragment userThingSortTypeBottomSheetFragment;
|
||||
private SortTimeBottomSheetFragment sortTimeBottomSheetFragment;
|
||||
private boolean mNullAccessToken = false;
|
||||
private String mAccessToken;
|
||||
private String mAccountName;
|
||||
@ -385,6 +389,7 @@ public class ViewUserDetailActivity extends BaseActivity implements UserThingSor
|
||||
});
|
||||
|
||||
userThingSortTypeBottomSheetFragment = new UserThingSortTypeBottomSheetFragment();
|
||||
sortTimeBottomSheetFragment = new SortTimeBottomSheetFragment();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -610,10 +615,15 @@ public class ViewUserDetailActivity extends BaseActivity implements UserThingSor
|
||||
}
|
||||
|
||||
@Override
|
||||
public void userThingSortTypeSelected(String sortType) {
|
||||
public void sortTypeSelected(SortType sortType) {
|
||||
sectionsPagerAdapter.changeSortType(sortType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sortTypeSelected(String sortType) {
|
||||
sortTimeBottomSheetFragment.show(getSupportFragmentManager(), sortTimeBottomSheetFragment.getTag());
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onAccountSwitchEvent(SwitchAccountEvent event) {
|
||||
if (!getClass().getName().equals(event.excludeActivityClassName)) {
|
||||
@ -671,7 +681,6 @@ public class ViewUserDetailActivity extends BaseActivity implements UserThingSor
|
||||
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostDataSource.TYPE_USER);
|
||||
bundle.putString(PostFragment.EXTRA_USER_NAME, username);
|
||||
bundle.putString(PostFragment.EXTRA_USER_WHERE, PostDataSource.USER_WHERE_SUBMITTED);
|
||||
bundle.putString(PostFragment.EXTRA_SORT_TYPE, PostDataSource.SORT_TYPE_NEW);
|
||||
bundle.putInt(PostFragment.EXTRA_FILTER, PostFragment.EXTRA_NO_FILTER);
|
||||
bundle.putString(PostFragment.EXTRA_ACCESS_TOKEN, mAccessToken);
|
||||
fragment.setArguments(bundle);
|
||||
@ -754,13 +763,23 @@ public class ViewUserDetailActivity extends BaseActivity implements UserThingSor
|
||||
}
|
||||
}
|
||||
|
||||
public void changeSortType(String sortType) {
|
||||
public void changeSortType(SortType sortType) {
|
||||
if (viewPager.getCurrentItem() == 0) {
|
||||
if (postFragment != null) {
|
||||
mSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TYPE_USER_POST, sortType.getType().name()).apply();
|
||||
if(sortType.getTime() != null) {
|
||||
mSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TIME_USER_POST, sortType.getTime().name()).apply();
|
||||
}
|
||||
|
||||
postFragment.changeSortType(sortType);
|
||||
}
|
||||
} else {
|
||||
if (commentsListingFragment != null) {
|
||||
mSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TYPE_USER_COMMENT, sortType.getType().name()).apply();
|
||||
if(sortType.getTime() != null) {
|
||||
mSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TIME_USER_COMMENT, sortType.getTime().name()).apply();
|
||||
}
|
||||
|
||||
commentsListingFragment.changeSortType(sortType);
|
||||
}
|
||||
}
|
||||
|
@ -391,7 +391,6 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy
|
||||
Intent intent = new Intent(mActivity, FilteredThingActivity.class);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_NAME, mSubredditNamePrefixed.substring(2));
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_SORT_TYPE, PostDataSource.SORT_TYPE_HOT);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_FILTER, Post.NSFW_TYPE);
|
||||
mActivity.startActivity(intent);
|
||||
});
|
||||
@ -407,7 +406,6 @@ public class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<Recy
|
||||
Intent intent = new Intent(mActivity, FilteredThingActivity.class);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_NAME, mSubredditNamePrefixed.substring(2));
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_SORT_TYPE, PostDataSource.SORT_TYPE_HOT);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_FILTER, mPost.getPostType());
|
||||
mActivity.startActivity(intent);
|
||||
|
||||
|
@ -328,7 +328,6 @@ public class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView
|
||||
Intent intent = new Intent(mContext, FilteredThingActivity.class);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_NAME, post.getSubredditNamePrefixed().substring(2));
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_POST_TYPE, PostDataSource.TYPE_SUBREDDIT);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_SORT_TYPE, PostDataSource.SORT_TYPE_HOT);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_FILTER, Post.NSFW_TYPE);
|
||||
mContext.startActivity(intent);
|
||||
});
|
||||
|
@ -26,7 +26,7 @@ public class CommentDataSource extends PageKeyedDataSource<String, CommentData>
|
||||
@Nullable
|
||||
private String accessToken;
|
||||
private String username;
|
||||
private String sortType;
|
||||
private SortType sortType;
|
||||
private boolean areSavedComments;
|
||||
|
||||
private MutableLiveData<NetworkState> paginationNetworkStateLiveData;
|
||||
@ -36,7 +36,7 @@ public class CommentDataSource extends PageKeyedDataSource<String, CommentData>
|
||||
private LoadParams<String> params;
|
||||
private LoadCallback<String, CommentData> callback;
|
||||
|
||||
CommentDataSource(Retrofit retrofit, Locale locale, @Nullable String accessToken, String username, String sortType,
|
||||
CommentDataSource(Retrofit retrofit, Locale locale, @Nullable String accessToken, String username, SortType sortType,
|
||||
boolean areSavedComments) {
|
||||
this.retrofit = retrofit;
|
||||
this.locale = locale;
|
||||
@ -72,14 +72,30 @@ public class CommentDataSource extends PageKeyedDataSource<String, CommentData>
|
||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||
Call<String> commentsCall;
|
||||
if (areSavedComments) {
|
||||
commentsCall = api.getUserSavedCommentsOauth(username, PostDataSource.USER_WHERE_SAVED,
|
||||
null, sortType, RedditUtils.getOAuthHeader(accessToken));
|
||||
if (sortType.getTime() != null) {
|
||||
commentsCall = api.getUserSavedCommentsOauth(username, PostDataSource.USER_WHERE_SAVED,
|
||||
null, sortType.getType().value, sortType.getTime().value,
|
||||
RedditUtils.getOAuthHeader(accessToken));
|
||||
} else {
|
||||
commentsCall = api.getUserSavedCommentsOauth(username, PostDataSource.USER_WHERE_SAVED,
|
||||
null, sortType.getType().value, RedditUtils.getOAuthHeader(accessToken));
|
||||
}
|
||||
} else {
|
||||
if (accessToken == null) {
|
||||
commentsCall = api.getUserComments(username, null, sortType);
|
||||
if (sortType.getTime() != null) {
|
||||
commentsCall = api.getUserComments(username, null, sortType.getType().value,
|
||||
sortType.getTime().value);
|
||||
} else {
|
||||
commentsCall = api.getUserComments(username, null, sortType.getType().value);
|
||||
}
|
||||
} else {
|
||||
commentsCall = api.getUserCommentsOauth(RedditUtils.getOAuthHeader(accessToken), username,
|
||||
null, sortType);
|
||||
if (sortType.getTime() != null) {
|
||||
commentsCall = api.getUserCommentsOauth(RedditUtils.getOAuthHeader(accessToken), username,
|
||||
null, sortType.getType().value, sortType.getTime().value);
|
||||
} else {
|
||||
commentsCall = api.getUserCommentsOauth(RedditUtils.getOAuthHeader(accessToken), username,
|
||||
null, sortType.getType().value);
|
||||
}
|
||||
}
|
||||
}
|
||||
commentsCall.enqueue(new Callback<String>() {
|
||||
@ -135,14 +151,29 @@ public class CommentDataSource extends PageKeyedDataSource<String, CommentData>
|
||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||
Call<String> commentsCall;
|
||||
if (areSavedComments) {
|
||||
commentsCall = api.getUserSavedCommentsOauth(username, PostDataSource.USER_WHERE_SAVED, params.key,
|
||||
sortType, RedditUtils.getOAuthHeader(accessToken));
|
||||
if (sortType.getTime() != null) {
|
||||
commentsCall = api.getUserSavedCommentsOauth(username, PostDataSource.USER_WHERE_SAVED, params.key,
|
||||
sortType.getType().value, sortType.getTime().value, RedditUtils.getOAuthHeader(accessToken));
|
||||
} else {
|
||||
commentsCall = api.getUserSavedCommentsOauth(username, PostDataSource.USER_WHERE_SAVED, params.key,
|
||||
sortType.getType().value, RedditUtils.getOAuthHeader(accessToken));
|
||||
}
|
||||
} else {
|
||||
if (accessToken == null) {
|
||||
commentsCall = api.getUserComments(username, params.key, sortType);
|
||||
if (sortType.getTime() != null) {
|
||||
commentsCall = api.getUserComments(username, params.key, sortType.getType().value,
|
||||
sortType.getTime().value);
|
||||
} else {
|
||||
commentsCall = api.getUserComments(username, params.key, sortType.getType().value);
|
||||
}
|
||||
} else {
|
||||
commentsCall = api.getUserCommentsOauth(RedditUtils.getOAuthHeader(accessToken),
|
||||
username, params.key, sortType);
|
||||
if (sortType.getTime() != null) {
|
||||
commentsCall = api.getUserCommentsOauth(RedditUtils.getOAuthHeader(accessToken),
|
||||
username, params.key, sortType.getType().value, sortType.getTime().value);
|
||||
} else {
|
||||
commentsCall = api.getUserCommentsOauth(RedditUtils.getOAuthHeader(accessToken),
|
||||
username, params.key, sortType.getType().value);
|
||||
}
|
||||
}
|
||||
}
|
||||
commentsCall.enqueue(new Callback<String>() {
|
||||
|
@ -14,14 +14,14 @@ class CommentDataSourceFactory extends DataSource.Factory {
|
||||
private Locale locale;
|
||||
private String accessToken;
|
||||
private String username;
|
||||
private String sortType;
|
||||
private SortType sortType;
|
||||
private boolean areSavedComments;
|
||||
|
||||
private CommentDataSource commentDataSource;
|
||||
private MutableLiveData<CommentDataSource> commentDataSourceLiveData;
|
||||
|
||||
CommentDataSourceFactory(Retrofit retrofit, Locale locale, @Nullable String accessToken,
|
||||
String username, String sortType,
|
||||
String username, SortType sortType,
|
||||
boolean areSavedComments) {
|
||||
this.retrofit = retrofit;
|
||||
this.locale = locale;
|
||||
@ -49,7 +49,7 @@ class CommentDataSourceFactory extends DataSource.Factory {
|
||||
return commentDataSource;
|
||||
}
|
||||
|
||||
void changeSortType(String sortType) {
|
||||
void changeSortType(SortType sortType) {
|
||||
this.sortType = sortType;
|
||||
}
|
||||
}
|
||||
|
@ -19,9 +19,9 @@ public class CommentViewModel extends ViewModel {
|
||||
private LiveData<NetworkState> initialLoadingState;
|
||||
private LiveData<Boolean> hasCommentLiveData;
|
||||
private LiveData<PagedList<CommentData>> comments;
|
||||
private MutableLiveData<String> sortTypeLiveData;
|
||||
private MutableLiveData<SortType> sortTypeLiveData;
|
||||
|
||||
public CommentViewModel(Retrofit retrofit, Locale locale, String accessToken, String username, String sortType,
|
||||
public CommentViewModel(Retrofit retrofit, Locale locale, String accessToken, String username, SortType sortType,
|
||||
boolean areSavedComments) {
|
||||
commentDataSourceFactory = new CommentDataSourceFactory(retrofit, locale, accessToken, username, sortType,
|
||||
areSavedComments);
|
||||
@ -72,7 +72,7 @@ public class CommentViewModel extends ViewModel {
|
||||
commentDataSourceFactory.getCommentDataSource().retryLoadingMore();
|
||||
}
|
||||
|
||||
public void changeSortType(String sortType) {
|
||||
public void changeSortType(SortType sortType) {
|
||||
sortTypeLiveData.postValue(sortType);
|
||||
}
|
||||
|
||||
@ -81,11 +81,11 @@ public class CommentViewModel extends ViewModel {
|
||||
private Locale locale;
|
||||
private String accessToken;
|
||||
private String username;
|
||||
private String sortType;
|
||||
private SortType sortType;
|
||||
private boolean areSavedComments;
|
||||
|
||||
public Factory(Retrofit retrofit, Locale locale, String accessToken, String username,
|
||||
String sortType, boolean areSavedComments) {
|
||||
SortType sortType, boolean areSavedComments) {
|
||||
this.retrofit = retrofit;
|
||||
this.locale = locale;
|
||||
this.accessToken = accessToken;
|
||||
|
@ -3,6 +3,7 @@ package ml.docilealligator.infinityforreddit.Fragment;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Build;
|
||||
@ -36,9 +37,10 @@ import ml.docilealligator.infinityforreddit.CommentViewModel;
|
||||
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
||||
import ml.docilealligator.infinityforreddit.Infinity;
|
||||
import ml.docilealligator.infinityforreddit.NetworkState;
|
||||
import ml.docilealligator.infinityforreddit.PostDataSource;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||
import ml.docilealligator.infinityforreddit.SortType;
|
||||
import retrofit2.Retrofit;
|
||||
|
||||
|
||||
@ -76,6 +78,8 @@ public class CommentsListingFragment extends Fragment implements FragmentCommuni
|
||||
Retrofit mOauthRetrofit;
|
||||
@Inject
|
||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||
@Inject
|
||||
SharedPreferences mSharedPreferences;
|
||||
private boolean mNullAccessToken = false;
|
||||
private String mAccessToken;
|
||||
private RequestManager mGlide;
|
||||
@ -144,6 +148,14 @@ public class CommentsListingFragment extends Fragment implements FragmentCommuni
|
||||
() -> mCommentViewModel.retryLoadingMore());
|
||||
|
||||
String username = getArguments().getString(EXTRA_USERNAME);
|
||||
String sort = mSharedPreferences.getString(SharedPreferencesUtils.SORT_TYPE_USER_COMMENT, SortType.Type.NEW.value);
|
||||
SortType sortType;
|
||||
if(sort.equals(SortType.Type.CONTROVERSIAL.value) || sort.equals(SortType.Type.TOP.value)) {
|
||||
String sortTime = mSharedPreferences.getString(SharedPreferencesUtils.SORT_TIME_USER_COMMENT, SortType.Time.ALL.value);
|
||||
sortType = new SortType(SortType.Type.valueOf(sort.toUpperCase()), SortType.Time.valueOf(sortTime.toUpperCase()));
|
||||
} else {
|
||||
sortType = new SortType(SortType.Type.valueOf(sort.toUpperCase()));
|
||||
}
|
||||
|
||||
mCommentRecyclerView.setAdapter(mAdapter);
|
||||
|
||||
@ -151,11 +163,11 @@ public class CommentsListingFragment extends Fragment implements FragmentCommuni
|
||||
|
||||
if (mAccessToken == null) {
|
||||
factory = new CommentViewModel.Factory(mRetrofit,
|
||||
resources.getConfiguration().locale, mAccessToken, username, PostDataSource.SORT_TYPE_NEW,
|
||||
resources.getConfiguration().locale, null, username, sortType,
|
||||
getArguments().getBoolean(EXTRA_ARE_SAVED_COMMENTS));
|
||||
} else {
|
||||
factory = new CommentViewModel.Factory(mOauthRetrofit,
|
||||
resources.getConfiguration().locale, mAccessToken, username, PostDataSource.SORT_TYPE_NEW,
|
||||
resources.getConfiguration().locale, mAccessToken, username, sortType,
|
||||
getArguments().getBoolean(EXTRA_ARE_SAVED_COMMENTS));
|
||||
}
|
||||
|
||||
@ -189,7 +201,7 @@ public class CommentsListingFragment extends Fragment implements FragmentCommuni
|
||||
mCommentViewModel.getPaginationNetworkState().observe(this, networkState -> mAdapter.setNetworkState(networkState));
|
||||
}
|
||||
|
||||
public void changeSortType(String sortType) {
|
||||
public void changeSortType(SortType sortType) {
|
||||
mCommentViewModel.changeSortType(sortType);
|
||||
}
|
||||
|
||||
|
@ -61,6 +61,7 @@ import ml.docilealligator.infinityforreddit.PostViewModel;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||
import ml.docilealligator.infinityforreddit.SortType;
|
||||
import retrofit2.Retrofit;
|
||||
|
||||
|
||||
@ -74,7 +75,6 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
public static final String EXTRA_USER_WHERE = "EUW";
|
||||
public static final String EXTRA_QUERY = "EQ";
|
||||
public static final String EXTRA_POST_TYPE = "EPT";
|
||||
public static final String EXTRA_SORT_TYPE = "EST";
|
||||
public static final String EXTRA_FILTER = "EF";
|
||||
public static final int EXTRA_NO_FILTER = -2;
|
||||
public static final String EXTRA_ACCESS_TOKEN = "EAT";
|
||||
@ -269,7 +269,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
}
|
||||
|
||||
int postType = getArguments().getInt(EXTRA_POST_TYPE);
|
||||
String sortType = getArguments().getString(EXTRA_SORT_TYPE);
|
||||
//String sortType = getArguments().getString(EXTRA_SORT_TYPE);
|
||||
|
||||
int filter = getArguments().getInt(EXTRA_FILTER);
|
||||
String accessToken = getArguments().getString(EXTRA_ACCESS_TOKEN);
|
||||
@ -283,6 +283,10 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
String subredditName = getArguments().getString(EXTRA_NAME);
|
||||
String query = getArguments().getString(EXTRA_QUERY);
|
||||
|
||||
String sort = mSharedPreferences.getString(SharedPreferencesUtils.SORT_TYPE_SEARCH_POST, SortType.Type.RELEVANCE.value);
|
||||
String sortTime = mSharedPreferences.getString(SharedPreferencesUtils.SORT_TIME_SEARCH_POST, SortType.Time.ALL.value);
|
||||
SortType sortType = new SortType(SortType.Type.valueOf(sort.toUpperCase()), SortType.Time.valueOf(sortTime.toUpperCase()));
|
||||
|
||||
mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit, mRedditDataRoomDatabase,
|
||||
accessToken, postType, true, needBlurNsfw, needBlurSpoiler,
|
||||
new PostRecyclerViewAdapter.Callback() {
|
||||
@ -297,7 +301,6 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_NAME, subredditName);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_QUERY, query);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_POST_TYPE, postType);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_SORT_TYPE, sortType);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_FILTER, filter);
|
||||
startActivity(intent);
|
||||
}
|
||||
@ -314,8 +317,36 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
}
|
||||
} else if (postType == PostDataSource.TYPE_SUBREDDIT) {
|
||||
String subredditName = getArguments().getString(EXTRA_NAME);
|
||||
String sort;
|
||||
String sortTime = null;
|
||||
SortType sortType;
|
||||
|
||||
boolean displaySubredditName = subredditName != null && (subredditName.equals("popular") || subredditName.equals("all"));
|
||||
if(displaySubredditName) {
|
||||
if(subredditName.equals("popular")) {
|
||||
sort = mSharedPreferences.getString(SharedPreferencesUtils.SORT_TYPE_POPULAR_POST, SortType.Type.HOT.value);
|
||||
if(sort.equals(SortType.Type.CONTROVERSIAL.value) || sort.equals(SortType.Type.TOP.value)) {
|
||||
sortTime = mSharedPreferences.getString(SharedPreferencesUtils.SORT_TIME_POPULAR_POST, SortType.Time.ALL.value);
|
||||
}
|
||||
} else {
|
||||
sort = mSharedPreferences.getString(SharedPreferencesUtils.SORT_TYPE_ALL_POST, SortType.Type.HOT.value);
|
||||
if(sort.equals(SortType.Type.CONTROVERSIAL.value) || sort.equals(SortType.Type.TOP.value)) {
|
||||
sortTime = mSharedPreferences.getString(SharedPreferencesUtils.SORT_TIME_ALL_POST, SortType.Time.ALL.value);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
sort = mSharedPreferences.getString(SharedPreferencesUtils.SORT_TYPE_SUBREDDIT_POST, SortType.Type.HOT.value);
|
||||
if(sort.equals(SortType.Type.CONTROVERSIAL.value) || sort.equals(SortType.Type.TOP.value)) {
|
||||
sortTime = mSharedPreferences.getString(SharedPreferencesUtils.SORT_TIME_SUBREDDIT_POST, SortType.Time.ALL.value);
|
||||
}
|
||||
}
|
||||
|
||||
if(sortTime != null) {
|
||||
sortType = new SortType(SortType.Type.valueOf(sort.toUpperCase()), SortType.Time.valueOf(sortTime.toUpperCase()));
|
||||
} else {
|
||||
sortType = new SortType(SortType.Type.valueOf(sort.toUpperCase()));
|
||||
}
|
||||
|
||||
mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit, mRedditDataRoomDatabase,
|
||||
accessToken, postType, displaySubredditName, needBlurNsfw, needBlurSpoiler,
|
||||
new PostRecyclerViewAdapter.Callback() {
|
||||
@ -329,7 +360,6 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
Intent intent = new Intent(activity, FilteredThingActivity.class);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_NAME, subredditName);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_POST_TYPE, postType);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_SORT_TYPE, sortType);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_FILTER, filter);
|
||||
startActivity(intent);
|
||||
}
|
||||
@ -353,6 +383,15 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
mFetchPostInfoLinearLayout.setLayoutParams(params);
|
||||
}
|
||||
|
||||
String sort = mSharedPreferences.getString(SharedPreferencesUtils.SORT_TYPE_USER_POST, SortType.Type.NEW.value);
|
||||
SortType sortType;
|
||||
if(sort.equals(SortType.Type.CONTROVERSIAL.value) || sort.equals(SortType.Type.TOP.value)) {
|
||||
String sortTime = mSharedPreferences.getString(SharedPreferencesUtils.SORT_TIME_USER_POST, SortType.Time.ALL.value);
|
||||
sortType = new SortType(SortType.Type.valueOf(sort.toUpperCase()), SortType.Time.valueOf(sortTime.toUpperCase()));
|
||||
} else {
|
||||
sortType = new SortType(SortType.Type.valueOf(sort.toUpperCase()));
|
||||
}
|
||||
|
||||
mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit, mRedditDataRoomDatabase,
|
||||
accessToken, postType, true, needBlurNsfw, needBlurSpoiler,
|
||||
new PostRecyclerViewAdapter.Callback() {
|
||||
@ -366,7 +405,6 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
Intent intent = new Intent(activity, FilteredThingActivity.class);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_NAME, username);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_POST_TYPE, postType);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_SORT_TYPE, sortType);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_USER_WHERE, where);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_FILTER, filter);
|
||||
startActivity(intent);
|
||||
@ -383,6 +421,15 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
filter, nsfw);
|
||||
}
|
||||
} else {
|
||||
String sort = mSharedPreferences.getString(SharedPreferencesUtils.SORT_TYPE_BEST_POST, SortType.Type.BEST.value);
|
||||
SortType sortType;
|
||||
if(sort.equals(SortType.Type.CONTROVERSIAL.value) || sort.equals(SortType.Type.TOP.value)) {
|
||||
String sortTime = mSharedPreferences.getString(SharedPreferencesUtils.SORT_TIME_BEST_POST, SortType.Time.ALL.value);
|
||||
sortType = new SortType(SortType.Type.valueOf(sort.toUpperCase()), SortType.Time.valueOf(sortTime.toUpperCase()));
|
||||
} else {
|
||||
sortType = new SortType(SortType.Type.valueOf(sort.toUpperCase()));
|
||||
}
|
||||
|
||||
mAdapter = new PostRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit, mRedditDataRoomDatabase,
|
||||
accessToken, postType, true, needBlurNsfw, needBlurSpoiler,
|
||||
new PostRecyclerViewAdapter.Callback() {
|
||||
@ -396,7 +443,6 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
Intent intent = new Intent(activity, FilteredThingActivity.class);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_NAME, activity.getString(R.string.best));
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_POST_TYPE, postType);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_SORT_TYPE, sortType);
|
||||
intent.putExtra(FilteredThingActivity.EXTRA_FILTER, filter);
|
||||
startActivity(intent);
|
||||
}
|
||||
@ -444,7 +490,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
return rootView;
|
||||
}
|
||||
|
||||
public void changeSortType(String sortType) {
|
||||
public void changeSortType(SortType sortType) {
|
||||
mPostViewModel.changeSortType(sortType);
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,7 @@ package ml.docilealligator.infinityforreddit.Fragment;
|
||||
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
@ -10,14 +11,16 @@ import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.deishelon.roundedbottomsheet.RoundedBottomSheetDialogFragment;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import ml.docilealligator.infinityforreddit.PostDataSource;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.SortType;
|
||||
import ml.docilealligator.infinityforreddit.SortTypeSelectionCallback;
|
||||
|
||||
|
||||
/**
|
||||
@ -35,6 +38,7 @@ public class SearchPostSortTypeBottomSheetFragment extends RoundedBottomSheetDia
|
||||
TextView newTypeTextView;
|
||||
@BindView(R.id.comments_type_text_view_search_sort_type_bottom_sheet_fragment)
|
||||
TextView commentsTypeTextView;
|
||||
private Activity activity;
|
||||
public SearchPostSortTypeBottomSheetFragment() {
|
||||
// Required empty public constructor
|
||||
}
|
||||
@ -45,44 +49,42 @@ public class SearchPostSortTypeBottomSheetFragment extends RoundedBottomSheetDia
|
||||
View rootView = inflater.inflate(R.layout.fragment_search_post_sort_type_bottom_sheet, container, false);
|
||||
ButterKnife.bind(this, rootView);
|
||||
|
||||
Activity activity = getActivity();
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
|
||||
&& (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||
rootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||
}
|
||||
|
||||
relevanceTypeTextView.setOnClickListener(view -> {
|
||||
((SearchSortTypeSelectionCallback) activity).searchSortTypeSelected(PostDataSource.SORT_TYPE_RELEVANCE);
|
||||
((SortTypeSelectionCallback) activity).sortTypeSelected(SortType.Type.RELEVANCE.name());
|
||||
dismiss();
|
||||
});
|
||||
|
||||
hotTypeTextView.setOnClickListener(view -> {
|
||||
((SearchSortTypeSelectionCallback) activity).searchSortTypeSelected(PostDataSource.SORT_TYPE_HOT);
|
||||
((SortTypeSelectionCallback) activity).sortTypeSelected(SortType.Type.HOT.name());
|
||||
dismiss();
|
||||
});
|
||||
|
||||
topTypeTextView.setOnClickListener(view -> {
|
||||
((SearchSortTypeSelectionCallback) activity).searchSortTypeSelected(PostDataSource.SORT_TYPE_TOP);
|
||||
((SortTypeSelectionCallback) activity).sortTypeSelected(SortType.Type.TOP.name());
|
||||
dismiss();
|
||||
});
|
||||
|
||||
newTypeTextView.setOnClickListener(view -> {
|
||||
((SearchSortTypeSelectionCallback) activity).searchSortTypeSelected(PostDataSource.SORT_TYPE_NEW);
|
||||
((SortTypeSelectionCallback) activity).sortTypeSelected(new SortType(SortType.Type.NEW));
|
||||
dismiss();
|
||||
});
|
||||
|
||||
commentsTypeTextView.setOnClickListener(view -> {
|
||||
((SearchSortTypeSelectionCallback) activity).searchSortTypeSelected(PostDataSource.SORT_TYPE_COMMENTS);
|
||||
((SortTypeSelectionCallback) activity).sortTypeSelected(SortType.Type.COMMENTS.name());
|
||||
dismiss();
|
||||
});
|
||||
|
||||
return rootView;
|
||||
}
|
||||
|
||||
|
||||
public interface SearchSortTypeSelectionCallback {
|
||||
void searchSortTypeSelected(String sortType);
|
||||
@Override
|
||||
public void onAttach(@NonNull Context context) {
|
||||
super.onAttach(context);
|
||||
this.activity = (Activity) context;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package ml.docilealligator.infinityforreddit.Fragment;
|
||||
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
@ -10,14 +11,16 @@ import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.deishelon.roundedbottomsheet.RoundedBottomSheetDialogFragment;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import ml.docilealligator.infinityforreddit.PostDataSource;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.SortType;
|
||||
import ml.docilealligator.infinityforreddit.SortTypeSelectionCallback;
|
||||
|
||||
|
||||
/**
|
||||
@ -30,6 +33,7 @@ public class SearchUserAndSubredditSortTypeBottomSheetFragment extends RoundedBo
|
||||
TextView relevanceTypeTextView;
|
||||
@BindView(R.id.activity_type_text_view_search_user_and_subreddit_sort_type_bottom_sheet_fragment)
|
||||
TextView activityTypeTextView;
|
||||
private Activity activity;
|
||||
public SearchUserAndSubredditSortTypeBottomSheetFragment() {
|
||||
// Required empty public constructor
|
||||
}
|
||||
@ -40,31 +44,33 @@ public class SearchUserAndSubredditSortTypeBottomSheetFragment extends RoundedBo
|
||||
View rootView = inflater.inflate(R.layout.fragment_search_user_and_subreddit_sort_type_bottom_sheet, container, false);
|
||||
ButterKnife.bind(this, rootView);
|
||||
|
||||
Activity activity = getActivity();
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
|
||||
&& (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||
rootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||
}
|
||||
|
||||
int position = getArguments().getInt(EXTRA_FRAGMENT_POSITION);
|
||||
int position = getArguments() != null ? getArguments().getInt(EXTRA_FRAGMENT_POSITION) : -1;
|
||||
if(position < 0) {
|
||||
dismiss();
|
||||
return rootView;
|
||||
}
|
||||
|
||||
relevanceTypeTextView.setOnClickListener(view -> {
|
||||
((SearchUserAndSubredditSortTypeSelectionCallback) activity).searchUserAndSubredditSortTypeSelected(PostDataSource.SORT_TYPE_RELEVANCE, position);
|
||||
((SortTypeSelectionCallback) activity).searchUserAndSubredditSortTypeSelected(new SortType(SortType.Type.RELEVANCE), position);
|
||||
dismiss();
|
||||
});
|
||||
|
||||
activityTypeTextView.setOnClickListener(view -> {
|
||||
((SearchUserAndSubredditSortTypeSelectionCallback) activity).searchUserAndSubredditSortTypeSelected(PostDataSource.SORT_TYPE_HOT, position);
|
||||
((SortTypeSelectionCallback) activity).searchUserAndSubredditSortTypeSelected(new SortType(SortType.Type.ACTIVITY), position);
|
||||
dismiss();
|
||||
});
|
||||
|
||||
return rootView;
|
||||
}
|
||||
|
||||
|
||||
public interface SearchUserAndSubredditSortTypeSelectionCallback {
|
||||
void searchUserAndSubredditSortTypeSelected(String sortType, int fragmentPosition);
|
||||
@Override
|
||||
public void onAttach(@NonNull Context context) {
|
||||
super.onAttach(context);
|
||||
this.activity = (Activity) context;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,112 @@
|
||||
package ml.docilealligator.infinityforreddit.Fragment;
|
||||
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.deishelon.roundedbottomsheet.RoundedBottomSheetDialogFragment;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.SortType;
|
||||
import ml.docilealligator.infinityforreddit.SortTypeSelectionCallback;
|
||||
|
||||
/**
|
||||
* A simple {@link Fragment} subclass.
|
||||
*/
|
||||
public class SortTimeBottomSheetFragment extends RoundedBottomSheetDialogFragment {
|
||||
|
||||
public static final String EXTRA_SORT_TYPE = "EST";
|
||||
|
||||
@BindView(R.id.hour_text_view_sort_time_bottom_sheet_fragment)
|
||||
TextView hourTextView;
|
||||
@BindView(R.id.day_text_view_sort_time_bottom_sheet_fragment)
|
||||
TextView dayTextView;
|
||||
@BindView(R.id.week_text_view_sort_time_bottom_sheet_fragment)
|
||||
TextView weekTextView;
|
||||
@BindView(R.id.month_text_view_sort_time_bottom_sheet_fragment)
|
||||
TextView monthTextView;
|
||||
@BindView(R.id.year_text_view_sort_time_bottom_sheet_fragment)
|
||||
TextView yearTextView;
|
||||
@BindView(R.id.all_time_text_view_sort_time_bottom_sheet_fragment)
|
||||
TextView allTimeTextView;
|
||||
private Activity activity;
|
||||
public SortTimeBottomSheetFragment() {
|
||||
// Required empty public constructor
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
View rootView = inflater.inflate(R.layout.fragment_sort_time_bottom_sheet, container, false);
|
||||
|
||||
ButterKnife.bind(this, rootView);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
|
||||
&& (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||
rootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||
}
|
||||
|
||||
String sortType = getArguments() != null ? getArguments().getString(EXTRA_SORT_TYPE) : null;
|
||||
if(sortType == null) {
|
||||
dismiss();
|
||||
return rootView;
|
||||
}
|
||||
|
||||
hourTextView.setOnClickListener(view -> {
|
||||
((SortTypeSelectionCallback) activity)
|
||||
.sortTypeSelected(new SortType(SortType.Type.valueOf(sortType), SortType.Time.HOUR));
|
||||
dismiss();
|
||||
});
|
||||
|
||||
dayTextView.setOnClickListener(view -> {
|
||||
((SortTypeSelectionCallback) activity)
|
||||
.sortTypeSelected(new SortType(SortType.Type.valueOf(sortType), SortType.Time.DAY));
|
||||
dismiss();
|
||||
});
|
||||
|
||||
weekTextView.setOnClickListener(view -> {
|
||||
((SortTypeSelectionCallback) activity)
|
||||
.sortTypeSelected(new SortType(SortType.Type.valueOf(sortType), SortType.Time.WEEK));
|
||||
dismiss();
|
||||
});
|
||||
|
||||
monthTextView.setOnClickListener(view -> {
|
||||
((SortTypeSelectionCallback) activity)
|
||||
.sortTypeSelected(new SortType(SortType.Type.valueOf(sortType), SortType.Time.MONTH));
|
||||
dismiss();
|
||||
});
|
||||
|
||||
yearTextView.setOnClickListener(view -> {
|
||||
((SortTypeSelectionCallback) activity)
|
||||
.sortTypeSelected(new SortType(SortType.Type.valueOf(sortType), SortType.Time.YEAR));
|
||||
dismiss();
|
||||
});
|
||||
|
||||
allTimeTextView.setOnClickListener(view -> {
|
||||
((SortTypeSelectionCallback) activity)
|
||||
.sortTypeSelected(new SortType(SortType.Type.valueOf(sortType), SortType.Time.ALL));
|
||||
dismiss();
|
||||
});
|
||||
|
||||
return rootView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttach(@NonNull Context context) {
|
||||
super.onAttach(context);
|
||||
this.activity = (Activity) context;
|
||||
}
|
||||
}
|
@ -2,6 +2,7 @@ package ml.docilealligator.infinityforreddit.Fragment;
|
||||
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
@ -17,8 +18,9 @@ import com.deishelon.roundedbottomsheet.RoundedBottomSheetDialogFragment;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import ml.docilealligator.infinityforreddit.PostDataSource;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.SortType;
|
||||
import ml.docilealligator.infinityforreddit.SortTypeSelectionCallback;
|
||||
|
||||
|
||||
/**
|
||||
@ -41,6 +43,7 @@ public class SortTypeBottomSheetFragment extends RoundedBottomSheetDialogFragmen
|
||||
TextView topTypeTextView;
|
||||
@BindView(R.id.controversial_type_text_view_sort_type_bottom_sheet_fragment)
|
||||
TextView controversialTypeTextView;
|
||||
private Activity activity;
|
||||
public SortTypeBottomSheetFragment() {
|
||||
// Required empty public constructor
|
||||
}
|
||||
@ -51,58 +54,56 @@ public class SortTypeBottomSheetFragment extends RoundedBottomSheetDialogFragmen
|
||||
View rootView = inflater.inflate(R.layout.fragment_sort_type_bottom_sheet, container, false);
|
||||
ButterKnife.bind(this, rootView);
|
||||
|
||||
Activity activity = getActivity();
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
|
||||
&& (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) {
|
||||
rootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
|
||||
}
|
||||
|
||||
if (getArguments().getBoolean(EXTRA_NO_BEST_TYPE)) {
|
||||
if (getArguments() == null || getArguments().getBoolean(EXTRA_NO_BEST_TYPE)) {
|
||||
bestTypeTextView.setVisibility(View.GONE);
|
||||
} else {
|
||||
bestTypeTextView.setOnClickListener(view -> {
|
||||
((SortTypeSelectionCallback) activity).sortTypeSelected(PostDataSource.SORT_TYPE_BEST);
|
||||
((SortTypeSelectionCallback) activity).sortTypeSelected(new SortType(SortType.Type.BEST));
|
||||
dismiss();
|
||||
});
|
||||
}
|
||||
|
||||
hotTypeTextView.setOnClickListener(view -> {
|
||||
((SortTypeSelectionCallback) activity).sortTypeSelected(PostDataSource.SORT_TYPE_HOT);
|
||||
((SortTypeSelectionCallback) activity).sortTypeSelected(new SortType(SortType.Type.HOT));
|
||||
dismiss();
|
||||
});
|
||||
|
||||
newTypeTextView.setOnClickListener(view -> {
|
||||
((SortTypeSelectionCallback) activity).sortTypeSelected(PostDataSource.SORT_TYPE_NEW);
|
||||
((SortTypeSelectionCallback) activity).sortTypeSelected(new SortType(SortType.Type.NEW));
|
||||
dismiss();
|
||||
});
|
||||
|
||||
randomTypeTextView.setOnClickListener(view -> {
|
||||
((SortTypeSelectionCallback) activity).sortTypeSelected(PostDataSource.SORT_TYPE_RANDOM);
|
||||
((SortTypeSelectionCallback) activity).sortTypeSelected(new SortType(SortType.Type.RANDOM));
|
||||
dismiss();
|
||||
});
|
||||
|
||||
risingTypeTextView.setOnClickListener(view -> {
|
||||
((SortTypeSelectionCallback) activity).sortTypeSelected(PostDataSource.SORT_TYPE_RISING);
|
||||
((SortTypeSelectionCallback) activity).sortTypeSelected(new SortType(SortType.Type.RISING));
|
||||
dismiss();
|
||||
});
|
||||
|
||||
topTypeTextView.setOnClickListener(view -> {
|
||||
((SortTypeSelectionCallback) activity).sortTypeSelected(PostDataSource.SORT_TYPE_TOP);
|
||||
((SortTypeSelectionCallback) activity).sortTypeSelected(SortType.Type.TOP.name());
|
||||
dismiss();
|
||||
});
|
||||
|
||||
controversialTypeTextView.setOnClickListener(view -> {
|
||||
((SortTypeSelectionCallback) activity).sortTypeSelected(PostDataSource.SORT_TYPE_CONTROVERSIAL);
|
||||
((SortTypeSelectionCallback) activity).sortTypeSelected(SortType.Type.CONTROVERSIAL.name());
|
||||
dismiss();
|
||||
});
|
||||
|
||||
return rootView;
|
||||
}
|
||||
|
||||
|
||||
public interface SortTypeSelectionCallback {
|
||||
void sortTypeSelected(String sortType);
|
||||
@Override
|
||||
public void onAttach(@NonNull Context context) {
|
||||
super.onAttach(context);
|
||||
this.activity = (Activity) context;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package ml.docilealligator.infinityforreddit.Fragment;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Build;
|
||||
@ -35,9 +36,10 @@ import ml.docilealligator.infinityforreddit.Adapter.SubredditListingRecyclerView
|
||||
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
||||
import ml.docilealligator.infinityforreddit.Infinity;
|
||||
import ml.docilealligator.infinityforreddit.NetworkState;
|
||||
import ml.docilealligator.infinityforreddit.PostDataSource;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||
import ml.docilealligator.infinityforreddit.SortType;
|
||||
import ml.docilealligator.infinityforreddit.SubredditListingViewModel;
|
||||
import retrofit2.Retrofit;
|
||||
|
||||
@ -72,7 +74,9 @@ public class SubredditListingFragment extends Fragment implements FragmentCommun
|
||||
@Named("oauth")
|
||||
Retrofit mOauthRetrofit;
|
||||
@Inject
|
||||
RedditDataRoomDatabase redditDataRoomDatabase;
|
||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||
@Inject
|
||||
SharedPreferences mSharedPreferences;
|
||||
private LinearLayoutManager mLinearLayoutManager;
|
||||
private SubredditListingRecyclerViewAdapter mAdapter;
|
||||
|
||||
@ -112,8 +116,11 @@ public class SubredditListingFragment extends Fragment implements FragmentCommun
|
||||
String accessToken = getArguments().getString(EXTRA_ACCESS_TOKEN);
|
||||
String accountName = getArguments().getString(EXTRA_ACCOUNT_NAME);
|
||||
|
||||
String sort = mSharedPreferences.getString(SharedPreferencesUtils.SORT_TYPE_SEARCH_SUBREDDIT, SortType.Type.RELEVANCE.value);
|
||||
SortType sortType = new SortType(SortType.Type.valueOf(sort.toUpperCase()));
|
||||
|
||||
mAdapter = new SubredditListingRecyclerViewAdapter(activity, mOauthRetrofit, mRetrofit,
|
||||
accessToken, accountName, redditDataRoomDatabase,
|
||||
accessToken, accountName, mRedditDataRoomDatabase,
|
||||
new SubredditListingRecyclerViewAdapter.Callback() {
|
||||
@Override
|
||||
public void retryLoadingMore() {
|
||||
@ -134,8 +141,7 @@ public class SubredditListingFragment extends Fragment implements FragmentCommun
|
||||
|
||||
mSubredditListingRecyclerView.setAdapter(mAdapter);
|
||||
|
||||
SubredditListingViewModel.Factory factory = new SubredditListingViewModel.Factory(mRetrofit, query,
|
||||
PostDataSource.SORT_TYPE_RELEVANCE);
|
||||
SubredditListingViewModel.Factory factory = new SubredditListingViewModel.Factory(mRetrofit, query, sortType);
|
||||
mSubredditListingViewModel = new ViewModelProvider(this, factory).get(SubredditListingViewModel.class);
|
||||
mSubredditListingViewModel.getSubreddits().observe(this, subredditData -> mAdapter.submitList(subredditData));
|
||||
|
||||
@ -179,7 +185,7 @@ public class SubredditListingFragment extends Fragment implements FragmentCommun
|
||||
}
|
||||
}
|
||||
|
||||
public void changeSortType(String sortType) {
|
||||
public void changeSortType(SortType sortType) {
|
||||
mSubredditListingViewModel.changeSortType(sortType);
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
package ml.docilealligator.infinityforreddit.Fragment;
|
||||
|
||||
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Build;
|
||||
@ -30,9 +31,10 @@ import ml.docilealligator.infinityforreddit.Adapter.UserListingRecyclerViewAdapt
|
||||
import ml.docilealligator.infinityforreddit.FragmentCommunicator;
|
||||
import ml.docilealligator.infinityforreddit.Infinity;
|
||||
import ml.docilealligator.infinityforreddit.NetworkState;
|
||||
import ml.docilealligator.infinityforreddit.PostDataSource;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
|
||||
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
|
||||
import ml.docilealligator.infinityforreddit.SortType;
|
||||
import ml.docilealligator.infinityforreddit.UserListingViewModel;
|
||||
import retrofit2.Retrofit;
|
||||
|
||||
@ -66,7 +68,9 @@ public class UserListingFragment extends Fragment implements FragmentCommunicato
|
||||
@Named("oauth")
|
||||
Retrofit mOauthRetrofit;
|
||||
@Inject
|
||||
RedditDataRoomDatabase redditDataRoomDatabase;
|
||||
RedditDataRoomDatabase mRedditDataRoomDatabase;
|
||||
@Inject
|
||||
SharedPreferences mSharedPreferences;
|
||||
private LinearLayoutManager mLinearLayoutManager;
|
||||
private String mQuery;
|
||||
private UserListingRecyclerViewAdapter mAdapter;
|
||||
@ -103,15 +107,17 @@ public class UserListingFragment extends Fragment implements FragmentCommunicato
|
||||
mQuery = getArguments().getString(EXTRA_QUERY);
|
||||
String accessToken = getArguments().getString(EXTRA_ACCESS_TOKEN);
|
||||
String accountName = getArguments().getString(EXTRA_ACCOUNT_NAME);
|
||||
String sort = mSharedPreferences.getString(SharedPreferencesUtils.SORT_TYPE_SEARCH_USER, SortType.Type.RELEVANCE.value);
|
||||
SortType sortType = new SortType(SortType.Type.valueOf(sort.toUpperCase()));
|
||||
|
||||
mAdapter = new UserListingRecyclerViewAdapter(getActivity(), mOauthRetrofit, mRetrofit,
|
||||
accessToken, accountName, redditDataRoomDatabase.subscribedUserDao(),
|
||||
accessToken, accountName, mRedditDataRoomDatabase.subscribedUserDao(),
|
||||
() -> mUserListingViewModel.retryLoadingMore());
|
||||
|
||||
mUserListingRecyclerView.setAdapter(mAdapter);
|
||||
|
||||
UserListingViewModel.Factory factory = new UserListingViewModel.Factory(mRetrofit, mQuery,
|
||||
PostDataSource.SORT_TYPE_RELEVANCE);
|
||||
sortType);
|
||||
mUserListingViewModel = new ViewModelProvider(this, factory).get(UserListingViewModel.class);
|
||||
mUserListingViewModel.getUsers().observe(this, UserData -> mAdapter.submitList(UserData));
|
||||
|
||||
@ -155,7 +161,7 @@ public class UserListingFragment extends Fragment implements FragmentCommunicato
|
||||
}
|
||||
}
|
||||
|
||||
public void changeSortType(String sortType) {
|
||||
public void changeSortType(SortType sortType) {
|
||||
mUserListingViewModel.changeSortType(sortType);
|
||||
}
|
||||
|
||||
|
@ -17,8 +17,9 @@ import com.deishelon.roundedbottomsheet.RoundedBottomSheetDialogFragment;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import ml.docilealligator.infinityforreddit.PostDataSource;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.SortType;
|
||||
import ml.docilealligator.infinityforreddit.SortTypeSelectionCallback;
|
||||
|
||||
|
||||
/**
|
||||
@ -26,7 +27,6 @@ import ml.docilealligator.infinityforreddit.R;
|
||||
*/
|
||||
public class UserThingSortTypeBottomSheetFragment extends RoundedBottomSheetDialogFragment {
|
||||
|
||||
static final String EXTRA_NO_BEST_TYPE = "ENBT";
|
||||
@BindView(R.id.new_type_text_view_user_thing_sort_type_bottom_sheet_fragment)
|
||||
TextView newTypeTextView;
|
||||
@BindView(R.id.hot_type_text_view_user_thing_sort_type_bottom_sheet_fragment)
|
||||
@ -55,38 +55,32 @@ public class UserThingSortTypeBottomSheetFragment extends RoundedBottomSheetDial
|
||||
|
||||
newTypeTextView.setOnClickListener(view -> {
|
||||
if (activity != null) {
|
||||
((UserThingSortTypeSelectionCallback) activity).userThingSortTypeSelected(PostDataSource.SORT_TYPE_NEW);
|
||||
((SortTypeSelectionCallback) activity).sortTypeSelected(new SortType(SortType.Type.NEW));
|
||||
}
|
||||
dismiss();
|
||||
});
|
||||
|
||||
hotTypeTextView.setOnClickListener(view -> {
|
||||
if (activity != null) {
|
||||
((UserThingSortTypeSelectionCallback) activity).userThingSortTypeSelected(PostDataSource.SORT_TYPE_HOT);
|
||||
((SortTypeSelectionCallback) activity).sortTypeSelected(new SortType(SortType.Type.HOT));
|
||||
}
|
||||
dismiss();
|
||||
});
|
||||
|
||||
topTypeTextView.setOnClickListener(view -> {
|
||||
if (activity != null) {
|
||||
((UserThingSortTypeSelectionCallback) activity).userThingSortTypeSelected(PostDataSource.SORT_TYPE_TOP);
|
||||
((SortTypeSelectionCallback) activity).sortTypeSelected(SortType.Type.TOP.name());
|
||||
}
|
||||
dismiss();
|
||||
});
|
||||
|
||||
controversialTypeTextView.setOnClickListener(view -> {
|
||||
if (activity != null) {
|
||||
((UserThingSortTypeSelectionCallback) activity).userThingSortTypeSelected(PostDataSource.SORT_TYPE_CONTROVERSIAL);
|
||||
((SortTypeSelectionCallback) activity).sortTypeSelected(SortType.Type.CONTROVERSIAL.name());
|
||||
}
|
||||
dismiss();
|
||||
});
|
||||
|
||||
return rootView;
|
||||
}
|
||||
|
||||
|
||||
public interface UserThingSortTypeSelectionCallback {
|
||||
void userThingSortTypeSelected(String sortType);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -18,16 +18,6 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
public static final int TYPE_USER = 2;
|
||||
public static final int TYPE_SEARCH = 3;
|
||||
|
||||
public static final String SORT_TYPE_BEST = "best";
|
||||
public static final String SORT_TYPE_HOT = "hot";
|
||||
public static final String SORT_TYPE_NEW = "new";
|
||||
public static final String SORT_TYPE_RANDOM = "random";
|
||||
public static final String SORT_TYPE_RISING = "rising";
|
||||
public static final String SORT_TYPE_TOP = "top";
|
||||
public static final String SORT_TYPE_CONTROVERSIAL = "controversial";
|
||||
public static final String SORT_TYPE_RELEVANCE = "relevance";
|
||||
public static final String SORT_TYPE_COMMENTS = "comments";
|
||||
|
||||
public static final String USER_WHERE_SUBMITTED = "submitted";
|
||||
public static final String USER_WHERE_UPVOTED = "upvoted";
|
||||
public static final String USER_WHERE_DOWNVOTED = "downvoted";
|
||||
@ -41,7 +31,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
private String subredditOrUserName;
|
||||
private String query;
|
||||
private int postType;
|
||||
private String sortType;
|
||||
private SortType sortType;
|
||||
private boolean nsfw;
|
||||
private int filter;
|
||||
private String userWhere;
|
||||
@ -53,7 +43,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
private LoadParams<String> params;
|
||||
private LoadCallback<String, Post> callback;
|
||||
|
||||
PostDataSource(Retrofit retrofit, String accessToken, Locale locale, int postType, String sortType,
|
||||
PostDataSource(Retrofit retrofit, String accessToken, Locale locale, int postType, SortType sortType,
|
||||
int filter, boolean nsfw) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
@ -62,13 +52,13 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
initialLoadStateLiveData = new MutableLiveData<>();
|
||||
hasPostLiveData = new MutableLiveData<>();
|
||||
this.postType = postType;
|
||||
this.sortType = sortType == null ? PostDataSource.SORT_TYPE_BEST : sortType;
|
||||
this.sortType = sortType == null ? new SortType(SortType.Type.BEST) : sortType;
|
||||
this.filter = filter;
|
||||
this.nsfw = nsfw;
|
||||
}
|
||||
|
||||
PostDataSource(Retrofit retrofit, String accessToken, Locale locale, String subredditOrUserName, int postType,
|
||||
String sortType, int filter, boolean nsfw) {
|
||||
SortType sortType, int filter, boolean nsfw) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
this.locale = locale;
|
||||
@ -79,9 +69,9 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
this.postType = postType;
|
||||
if (sortType == null) {
|
||||
if (subredditOrUserName.equals("popular") || subredditOrUserName.equals("all")) {
|
||||
this.sortType = PostDataSource.SORT_TYPE_HOT;
|
||||
this.sortType = new SortType(SortType.Type.HOT);
|
||||
} else {
|
||||
this.sortType = PostDataSource.SORT_TYPE_BEST;
|
||||
this.sortType = new SortType(SortType.Type.BEST);
|
||||
}
|
||||
} else {
|
||||
this.sortType = sortType;
|
||||
@ -91,7 +81,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
}
|
||||
|
||||
PostDataSource(Retrofit retrofit, String accessToken, Locale locale, String subredditOrUserName, int postType,
|
||||
String sortType, String where, int filter, boolean nsfw) {
|
||||
SortType sortType, String where, int filter, boolean nsfw) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
this.locale = locale;
|
||||
@ -100,14 +90,14 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
initialLoadStateLiveData = new MutableLiveData<>();
|
||||
hasPostLiveData = new MutableLiveData<>();
|
||||
this.postType = postType;
|
||||
this.sortType = sortType == null ? PostDataSource.SORT_TYPE_NEW : sortType;
|
||||
this.sortType = sortType == null ? new SortType(SortType.Type.NEW) : sortType;
|
||||
userWhere = where;
|
||||
this.filter = filter;
|
||||
this.nsfw = nsfw;
|
||||
}
|
||||
|
||||
PostDataSource(Retrofit retrofit, String accessToken, Locale locale, String subredditOrUserName, String query,
|
||||
int postType, String sortType, int filter, boolean nsfw) {
|
||||
int postType, SortType sortType, int filter, boolean nsfw) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
this.locale = locale;
|
||||
@ -117,7 +107,7 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
initialLoadStateLiveData = new MutableLiveData<>();
|
||||
hasPostLiveData = new MutableLiveData<>();
|
||||
this.postType = postType;
|
||||
this.sortType = sortType == null ? PostDataSource.SORT_TYPE_RELEVANCE : sortType;
|
||||
this.sortType = sortType == null ? new SortType(SortType.Type.RELEVANCE) : sortType;
|
||||
this.filter = filter;
|
||||
this.nsfw = nsfw;
|
||||
}
|
||||
@ -188,13 +178,18 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
|
||||
private void loadBestPostsInitial(@NonNull final LoadInitialCallback<String, Post> callback, String lastItem) {
|
||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||
|
||||
Call<String> bestPost = api.getBestPosts(sortType, lastItem, RedditUtils.getOAuthHeader(accessToken));
|
||||
Call<String> bestPost;
|
||||
if(sortType.getTime() != null) {
|
||||
bestPost = api.getBestPosts(sortType.getType().value, sortType.getTime().value, lastItem,
|
||||
RedditUtils.getOAuthHeader(accessToken));
|
||||
} else {
|
||||
bestPost = api.getBestPosts(sortType.getType().value, lastItem, RedditUtils.getOAuthHeader(accessToken));
|
||||
}
|
||||
bestPost.enqueue(new Callback<String>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) {
|
||||
if (response.isSuccessful()) {
|
||||
if (sortType.equals(SORT_TYPE_RANDOM)) {
|
||||
if (sortType.getType().value.equals(SortType.Type.RANDOM.value)) {
|
||||
ParsePost.parsePost(response.body(), locale, new ParsePost.ParsePostListener() {
|
||||
@Override
|
||||
public void onParsePostSuccess(Post post) {
|
||||
@ -260,7 +255,13 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
String after = lastItem == null ? params.key : lastItem;
|
||||
|
||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||
Call<String> bestPost = api.getBestPosts(sortType, after, RedditUtils.getOAuthHeader(accessToken));
|
||||
Call<String> bestPost;
|
||||
if(sortType.getTime() != null) {
|
||||
bestPost = api.getBestPosts(sortType.getType().value, sortType.getTime().value, after,
|
||||
RedditUtils.getOAuthHeader(accessToken));
|
||||
} else {
|
||||
bestPost = api.getBestPosts(sortType.getType().value, after, RedditUtils.getOAuthHeader(accessToken));
|
||||
}
|
||||
|
||||
bestPost.enqueue(new Callback<String>() {
|
||||
@Override
|
||||
@ -301,15 +302,25 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
|
||||
Call<String> getPost;
|
||||
if (accessToken == null) {
|
||||
getPost = api.getSubredditBestPosts(subredditOrUserName, sortType, lastItem);
|
||||
if (sortType.getTime() != null) {
|
||||
getPost = api.getSubredditBestPosts(subredditOrUserName, sortType.getType().value, sortType.getTime().value, lastItem);
|
||||
} else {
|
||||
getPost = api.getSubredditBestPosts(subredditOrUserName, sortType.getType().value, lastItem);
|
||||
}
|
||||
} else {
|
||||
getPost = api.getSubredditBestPostsOauth(subredditOrUserName, sortType, lastItem, RedditUtils.getOAuthHeader(accessToken));
|
||||
if (sortType.getTime() != null) {
|
||||
getPost = api.getSubredditBestPostsOauth(subredditOrUserName, sortType.getType().value,
|
||||
sortType.getTime().value, lastItem, RedditUtils.getOAuthHeader(accessToken));
|
||||
} else {
|
||||
getPost = api.getSubredditBestPostsOauth(subredditOrUserName, sortType.getType().value,
|
||||
lastItem, RedditUtils.getOAuthHeader(accessToken));
|
||||
}
|
||||
}
|
||||
getPost.enqueue(new Callback<String>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull retrofit2.Response<String> response) {
|
||||
if (response.isSuccessful()) {
|
||||
if (sortType.equals(SORT_TYPE_RANDOM)) {
|
||||
if (sortType.getType().value.equals(SortType.Type.RANDOM.value)) {
|
||||
ParsePost.parsePost(response.body(), locale, new ParsePost.ParsePostListener() {
|
||||
@Override
|
||||
public void onParsePostSuccess(Post post) {
|
||||
@ -377,10 +388,21 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||
|
||||
Call<String> getPost;
|
||||
if (accessToken == null) {
|
||||
getPost = api.getSubredditBestPosts(subredditOrUserName, sortType, after);
|
||||
if (accessToken != null) {
|
||||
if (sortType.getTime() != null) {
|
||||
getPost = api.getSubredditBestPosts(subredditOrUserName, sortType.getType().value,
|
||||
sortType.getTime().value, after);
|
||||
} else {
|
||||
getPost = api.getSubredditBestPosts(subredditOrUserName, sortType.getType().value, after);
|
||||
}
|
||||
} else {
|
||||
getPost = api.getSubredditBestPostsOauth(subredditOrUserName, sortType, after, RedditUtils.getOAuthHeader(accessToken));
|
||||
if (sortType.getTime() != null) {
|
||||
getPost = api.getSubredditBestPostsOauth(subredditOrUserName, sortType.getType().value,
|
||||
sortType.getTime().value, after, RedditUtils.getOAuthHeader(accessToken));
|
||||
} else {
|
||||
getPost = api.getSubredditBestPostsOauth(subredditOrUserName, sortType.getType().value,
|
||||
after, RedditUtils.getOAuthHeader(accessToken));
|
||||
}
|
||||
}
|
||||
|
||||
getPost.enqueue(new Callback<String>() {
|
||||
@ -422,10 +444,20 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
|
||||
Call<String> getPost;
|
||||
if (accessToken == null) {
|
||||
getPost = api.getUserPosts(subredditOrUserName, lastItem, sortType);
|
||||
if (sortType.getTime() != null) {
|
||||
getPost = api.getUserPosts(subredditOrUserName, lastItem, sortType.getType().value,
|
||||
sortType.getTime().value);
|
||||
} else {
|
||||
getPost = api.getUserPosts(subredditOrUserName, lastItem, sortType.getType().value);
|
||||
}
|
||||
} else {
|
||||
getPost = api.getUserPostsOauth(subredditOrUserName, userWhere, lastItem, sortType,
|
||||
RedditUtils.getOAuthHeader(accessToken));
|
||||
if (sortType.getTime() != null) {
|
||||
getPost = api.getUserPostsOauth(subredditOrUserName, userWhere, lastItem, sortType.getType().value,
|
||||
sortType.getTime().value, RedditUtils.getOAuthHeader(accessToken));
|
||||
} else {
|
||||
getPost = api.getUserPostsOauth(subredditOrUserName, userWhere, lastItem, sortType.getType().value,
|
||||
RedditUtils.getOAuthHeader(accessToken));
|
||||
}
|
||||
}
|
||||
getPost.enqueue(new Callback<String>() {
|
||||
@Override
|
||||
@ -480,10 +512,20 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
|
||||
Call<String> getPost;
|
||||
if (accessToken == null) {
|
||||
getPost = api.getUserPosts(subredditOrUserName, after, sortType);
|
||||
if (sortType.getTime() != null) {
|
||||
getPost = api.getUserPosts(subredditOrUserName, after, sortType.getType().value,
|
||||
sortType.getTime().value);
|
||||
} else {
|
||||
getPost = api.getUserPosts(subredditOrUserName, after, sortType.getType().value);
|
||||
}
|
||||
} else {
|
||||
getPost = api.getUserPostsOauth(subredditOrUserName, userWhere, after, sortType,
|
||||
RedditUtils.getOAuthHeader(accessToken));
|
||||
if (sortType.getTime() != null) {
|
||||
getPost = api.getUserPostsOauth(subredditOrUserName, userWhere, after, sortType.getType().value,
|
||||
sortType.getTime().value, RedditUtils.getOAuthHeader(accessToken));
|
||||
} else {
|
||||
getPost = api.getUserPostsOauth(subredditOrUserName, userWhere, after, sortType.getType().value,
|
||||
RedditUtils.getOAuthHeader(accessToken));
|
||||
}
|
||||
}
|
||||
getPost.enqueue(new Callback<String>() {
|
||||
@Override
|
||||
@ -525,16 +567,39 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
|
||||
if (subredditOrUserName == null) {
|
||||
if (accessToken == null) {
|
||||
getPost = api.searchPosts(query, lastItem, sortType);
|
||||
if (sortType.getTime() != null) {
|
||||
getPost = api.searchPosts(query, lastItem, sortType.getType().value, sortType.getTime().value);
|
||||
} else {
|
||||
getPost = api.searchPosts(query, lastItem, sortType.getType().value);
|
||||
}
|
||||
} else {
|
||||
getPost = api.searchPostsOauth(query, lastItem, sortType, RedditUtils.getOAuthHeader(accessToken));
|
||||
if(sortType.getTime() != null) {
|
||||
getPost = api.searchPostsOauth(query, lastItem, sortType.getType().value,
|
||||
sortType.getTime().value, RedditUtils.getOAuthHeader(accessToken));
|
||||
} else {
|
||||
getPost = api.searchPostsOauth(query, lastItem, sortType.getType().value,
|
||||
RedditUtils.getOAuthHeader(accessToken));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (accessToken == null) {
|
||||
getPost = api.searchPostsInSpecificSubreddit(subredditOrUserName, query, lastItem);
|
||||
if (sortType.getTime() != null) {
|
||||
getPost = api.searchPostsInSpecificSubreddit(subredditOrUserName, query,
|
||||
sortType.getType().value, sortType.getTime().value, lastItem);
|
||||
} else {
|
||||
getPost = api.searchPostsInSpecificSubreddit(subredditOrUserName, query,
|
||||
sortType.getType().value, lastItem);
|
||||
}
|
||||
} else {
|
||||
getPost = api.searchPostsInSpecificSubredditOauth(subredditOrUserName, query, lastItem,
|
||||
RedditUtils.getOAuthHeader(accessToken));
|
||||
if (sortType.getTime() != null) {
|
||||
getPost = api.searchPostsInSpecificSubredditOauth(subredditOrUserName, query,
|
||||
sortType.getType().value, sortType.getTime().value, lastItem,
|
||||
RedditUtils.getOAuthHeader(accessToken));
|
||||
} else {
|
||||
getPost = api.searchPostsInSpecificSubredditOauth(subredditOrUserName, query,
|
||||
sortType.getType().value, lastItem,
|
||||
RedditUtils.getOAuthHeader(accessToken));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -592,16 +657,37 @@ public class PostDataSource extends PageKeyedDataSource<String, Post> {
|
||||
|
||||
if (subredditOrUserName == null) {
|
||||
if (accessToken == null) {
|
||||
getPost = api.searchPosts(query, after, sortType);
|
||||
if (sortType.getTime() != null) {
|
||||
getPost = api.searchPosts(query, after, sortType.getType().value, sortType.getTime().value);
|
||||
} else {
|
||||
getPost = api.searchPosts(query, after, sortType.getType().value);
|
||||
}
|
||||
} else {
|
||||
getPost = api.searchPostsOauth(query, after, sortType, RedditUtils.getOAuthHeader(accessToken));
|
||||
if (sortType.getTime() != null) {
|
||||
getPost = api.searchPostsOauth(query, after, sortType.getType().value,
|
||||
sortType.getTime().value, RedditUtils.getOAuthHeader(accessToken));
|
||||
} else {
|
||||
getPost = api.searchPostsOauth(query, after, sortType.getType().value, RedditUtils.getOAuthHeader(accessToken));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (accessToken == null) {
|
||||
getPost = api.searchPostsInSpecificSubreddit(subredditOrUserName, query, after);
|
||||
if (sortType.getTime() != null) {
|
||||
getPost = api.searchPostsInSpecificSubreddit(subredditOrUserName, query,
|
||||
sortType.getType().value, sortType.getTime().value, after);
|
||||
} else {
|
||||
getPost = api.searchPostsInSpecificSubreddit(subredditOrUserName, query,
|
||||
sortType.getType().value, after);
|
||||
}
|
||||
} else {
|
||||
getPost = api.searchPostsInSpecificSubredditOauth(subredditOrUserName, query, after,
|
||||
RedditUtils.getOAuthHeader(accessToken));
|
||||
if (sortType.getTime() != null) {
|
||||
getPost = api.searchPostsInSpecificSubredditOauth(subredditOrUserName, query,
|
||||
sortType.getType().value, sortType.getTime().value, after,
|
||||
RedditUtils.getOAuthHeader(accessToken));
|
||||
} else {
|
||||
getPost = api.searchPostsInSpecificSubredditOauth(subredditOrUserName, query,
|
||||
sortType.getType().value, after, RedditUtils.getOAuthHeader(accessToken));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,7 @@ class PostDataSourceFactory extends DataSource.Factory {
|
||||
private String subredditName;
|
||||
private String query;
|
||||
private int postType;
|
||||
private String sortType;
|
||||
private SortType sortType;
|
||||
private String userWhere;
|
||||
private int filter;
|
||||
private boolean nsfw;
|
||||
@ -23,7 +23,7 @@ class PostDataSourceFactory extends DataSource.Factory {
|
||||
private PostDataSource postDataSource;
|
||||
private MutableLiveData<PostDataSource> postDataSourceLiveData;
|
||||
|
||||
PostDataSourceFactory(Retrofit retrofit, String accessToken, Locale locale, int postType, String sortType,
|
||||
PostDataSourceFactory(Retrofit retrofit, String accessToken, Locale locale, int postType, SortType sortType,
|
||||
int filter, boolean nsfw) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
@ -36,7 +36,7 @@ class PostDataSourceFactory extends DataSource.Factory {
|
||||
}
|
||||
|
||||
PostDataSourceFactory(Retrofit retrofit, String accessToken, Locale locale, String subredditName,
|
||||
int postType, String sortType, int filter, boolean nsfw) {
|
||||
int postType, SortType sortType, int filter, boolean nsfw) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
this.locale = locale;
|
||||
@ -49,7 +49,7 @@ class PostDataSourceFactory extends DataSource.Factory {
|
||||
}
|
||||
|
||||
PostDataSourceFactory(Retrofit retrofit, String accessToken, Locale locale, String subredditName,
|
||||
int postType, String sortType, String where, int filter, boolean nsfw) {
|
||||
int postType, SortType sortType, String where, int filter, boolean nsfw) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
this.locale = locale;
|
||||
@ -63,7 +63,7 @@ class PostDataSourceFactory extends DataSource.Factory {
|
||||
}
|
||||
|
||||
PostDataSourceFactory(Retrofit retrofit, String accessToken, Locale locale, String subredditName,
|
||||
String query, int postType, String sortType, int filter, boolean nsfw) {
|
||||
String query, int postType, SortType sortType, int filter, boolean nsfw) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
this.locale = locale;
|
||||
@ -105,11 +105,11 @@ class PostDataSourceFactory extends DataSource.Factory {
|
||||
return postDataSource;
|
||||
}
|
||||
|
||||
void changeSortType(String sortType) {
|
||||
void changeSortType(SortType sortType) {
|
||||
this.sortType = sortType;
|
||||
}
|
||||
|
||||
void changeNSFWAndSortType(boolean nsfw, String sortType) {
|
||||
void changeNSFWAndSortType(boolean nsfw, SortType sortType) {
|
||||
this.nsfw = nsfw;
|
||||
this.sortType = sortType;
|
||||
}
|
||||
|
@ -22,10 +22,10 @@ public class PostViewModel extends ViewModel {
|
||||
private LiveData<Boolean> hasPostLiveData;
|
||||
private LiveData<PagedList<Post>> posts;
|
||||
private MutableLiveData<Boolean> nsfwLiveData;
|
||||
private MutableLiveData<String> sortTypeLiveData;
|
||||
private MutableLiveData<SortType> sortTypeLiveData;
|
||||
private NSFWAndSortTypeLiveData nsfwAndSortTypeLiveData;
|
||||
|
||||
public PostViewModel(Retrofit retrofit, String accessToken, Locale locale, int postType, String sortType,
|
||||
public PostViewModel(Retrofit retrofit, String accessToken, Locale locale, int postType, SortType sortType,
|
||||
int filter, boolean nsfw) {
|
||||
postDataSourceFactory = new PostDataSourceFactory(retrofit, accessToken, locale, postType,
|
||||
sortType, filter, nsfw);
|
||||
@ -57,7 +57,7 @@ public class PostViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
public PostViewModel(Retrofit retrofit, String accessToken, Locale locale, String subredditName, int postType,
|
||||
String sortType, int filter, boolean nsfw) {
|
||||
SortType sortType, int filter, boolean nsfw) {
|
||||
postDataSourceFactory = new PostDataSourceFactory(retrofit, accessToken, locale, subredditName,
|
||||
postType, sortType, filter, nsfw);
|
||||
|
||||
@ -88,7 +88,7 @@ public class PostViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
public PostViewModel(Retrofit retrofit, String accessToken, Locale locale, String subredditName, int postType,
|
||||
String sortType, String where, int filter, boolean nsfw) {
|
||||
SortType sortType, String where, int filter, boolean nsfw) {
|
||||
postDataSourceFactory = new PostDataSourceFactory(retrofit, accessToken, locale, subredditName,
|
||||
postType, sortType, where, filter, nsfw);
|
||||
|
||||
@ -119,7 +119,7 @@ public class PostViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
public PostViewModel(Retrofit retrofit, String accessToken, Locale locale, String subredditName, String query,
|
||||
int postType, String sortType, int filter, boolean nsfw) {
|
||||
int postType, SortType sortType, int filter, boolean nsfw) {
|
||||
postDataSourceFactory = new PostDataSourceFactory(retrofit, accessToken, locale, subredditName,
|
||||
query, postType, sortType, filter, nsfw);
|
||||
|
||||
@ -173,7 +173,7 @@ public class PostViewModel extends ViewModel {
|
||||
postDataSourceFactory.getPostDataSource().retryLoadingMore();
|
||||
}
|
||||
|
||||
public void changeSortType(String sortType) {
|
||||
public void changeSortType(SortType sortType) {
|
||||
sortTypeLiveData.postValue(sortType);
|
||||
}
|
||||
|
||||
@ -188,12 +188,12 @@ public class PostViewModel extends ViewModel {
|
||||
private String subredditName;
|
||||
private String query;
|
||||
private int postType;
|
||||
private String sortType;
|
||||
private SortType sortType;
|
||||
private String userWhere;
|
||||
private int filter;
|
||||
private boolean nsfw;
|
||||
|
||||
public Factory(Retrofit retrofit, String accessToken, Locale locale, int postType, String sortType,
|
||||
public Factory(Retrofit retrofit, String accessToken, Locale locale, int postType, SortType sortType,
|
||||
int filter, boolean nsfw) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
@ -205,7 +205,7 @@ public class PostViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
public Factory(Retrofit retrofit, String accessToken, Locale locale, String subredditName, int postType,
|
||||
String sortType, int filter, boolean nsfw) {
|
||||
SortType sortType, int filter, boolean nsfw) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
this.locale = locale;
|
||||
@ -217,7 +217,7 @@ public class PostViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
public Factory(Retrofit retrofit, String accessToken, Locale locale, String subredditName, int postType,
|
||||
String sortType, String where, int filter, boolean nsfw) {
|
||||
SortType sortType, String where, int filter, boolean nsfw) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
this.locale = locale;
|
||||
@ -230,7 +230,7 @@ public class PostViewModel extends ViewModel {
|
||||
}
|
||||
|
||||
public Factory(Retrofit retrofit, String accessToken, Locale locale, String subredditName, String query,
|
||||
int postType, String sortType, int filter, boolean nsfw) {
|
||||
int postType, SortType sortType, int filter, boolean nsfw) {
|
||||
this.retrofit = retrofit;
|
||||
this.accessToken = accessToken;
|
||||
this.locale = locale;
|
||||
@ -261,8 +261,8 @@ public class PostViewModel extends ViewModel {
|
||||
}
|
||||
}
|
||||
|
||||
private static class NSFWAndSortTypeLiveData extends MediatorLiveData<Pair<Boolean, String>> {
|
||||
public NSFWAndSortTypeLiveData(LiveData<Boolean> nsfw, LiveData<String> sortType) {
|
||||
private static class NSFWAndSortTypeLiveData extends MediatorLiveData<Pair<Boolean, SortType>> {
|
||||
public NSFWAndSortTypeLiveData(LiveData<Boolean> nsfw, LiveData<SortType> sortType) {
|
||||
addSource(nsfw, accessToken1 -> setValue(Pair.create(accessToken1, sortType.getValue())));
|
||||
addSource(sortType, sortType1 -> setValue(Pair.create(nsfw.getValue(), sortType1)));
|
||||
}
|
||||
|
@ -43,22 +43,44 @@ public interface RedditAPI {
|
||||
@GET("{sortType}?raw_json=1")
|
||||
Call<String> getBestPosts(@Path("sortType") String sortType, @Query("after") String lastItem, @HeaderMap Map<String, String> headers);
|
||||
|
||||
@GET("{sortType}?raw_json=1")
|
||||
Call<String> getBestPosts(@Path("sortType") String sortType, @Query("t") String sortTime,
|
||||
@Query("after") String lastItem, @HeaderMap Map<String, String> headers);
|
||||
|
||||
@GET("r/{subredditName}/{sortType}.json?raw_json=1&limit=25")
|
||||
Call<String> getSubredditBestPostsOauth(@Path("subredditName") String subredditName, @Path("sortType") String sortType,
|
||||
@Query("after") String lastItem, @HeaderMap Map<String, String> headers);
|
||||
|
||||
@GET("r/{subredditName}/{sortType}.json?raw_json=1&limit=25")
|
||||
Call<String> getSubredditBestPostsOauth(@Path("subredditName") String subredditName, @Path("sortType") String sortType,
|
||||
@Query("t") String sortTime, @Query("after") String lastItem,
|
||||
@HeaderMap Map<String, String> headers);
|
||||
|
||||
@GET("r/{subredditName}/{sortType}.json?raw_json=1&limit=25")
|
||||
Call<String> getSubredditBestPosts(@Path("subredditName") String subredditName, @Path("sortType") String sortType,
|
||||
@Query("after") String lastItem);
|
||||
|
||||
@GET("r/{subredditName}/{sortType}.json?raw_json=1&limit=25")
|
||||
Call<String> getSubredditBestPosts(@Path("subredditName") String subredditName, @Path("sortType") String sortType,
|
||||
@Query("t") String sortTime, @Query("after") String lastItem);
|
||||
|
||||
@GET("user/{username}/{where}.json?&type=links&raw_json=1&limit=25")
|
||||
Call<String> getUserPostsOauth(@Path("username") String username, @Path("where") String where,
|
||||
@Query("after") String lastItem, @Query("sort") String sortType, @HeaderMap Map<String, String> headers);
|
||||
|
||||
@GET("user/{username}/{where}.json?&type=links&raw_json=1&limit=25")
|
||||
Call<String> getUserPostsOauth(@Path("username") String username, @Path("where") String where,
|
||||
@Query("after") String lastItem, @Query("sort") String sortType,
|
||||
@Query("t") String sortTime, @HeaderMap Map<String, String> headers);
|
||||
|
||||
@GET("user/{username}/submitted.json?raw_json=1&limit=25")
|
||||
Call<String> getUserPosts(@Path("username") String username, @Query("after") String lastItem,
|
||||
@Query("sort") String sortType);
|
||||
|
||||
@GET("user/{username}/submitted.json?raw_json=1&limit=25")
|
||||
Call<String> getUserPosts(@Path("username") String username, @Query("after") String lastItem,
|
||||
@Query("sort") String sortType, @Query("t") String sortTime);
|
||||
|
||||
@GET("user/{username}/about.json?raw_json=1")
|
||||
Call<String> getUserData(@Path("username") String username);
|
||||
|
||||
@ -66,13 +88,28 @@ public interface RedditAPI {
|
||||
Call<String> getUserComments(@Path("username") String username, @Query("after") String after,
|
||||
@Query("sort") String sortType);
|
||||
|
||||
@GET("user/{username}/comments.json?raw_json=1")
|
||||
Call<String> getUserComments(@Path("username") String username, @Query("after") String after,
|
||||
@Query("sort") String sortType, @Query("t") String sortTime);
|
||||
|
||||
@GET("user/{username}/comments.json?raw_json=1")
|
||||
Call<String> getUserCommentsOauth(@HeaderMap Map<String, String> headers, @Path("username") String username,
|
||||
@Query("after") String after, @Query("sort") String sortType);
|
||||
|
||||
@GET("user/{username}/comments.json?raw_json=1")
|
||||
Call<String> getUserCommentsOauth(@HeaderMap Map<String, String> headers, @Path("username") String username,
|
||||
@Query("after") String after, @Query("sort") String sortType,
|
||||
@Query("t") String sortTime);
|
||||
|
||||
@GET("user/{username}/{where}.json?&type=comments&raw_json=1&limit=25")
|
||||
Call<String> getUserSavedCommentsOauth(@Path("username") String username, @Path("where") String where,
|
||||
@Query("after") String lastItem, @Query("sort") String sortType, @HeaderMap Map<String, String> headers);
|
||||
@Query("after") String lastItem, @Query("sort") String sortType,
|
||||
@HeaderMap Map<String, String> headers);
|
||||
|
||||
@GET("user/{username}/{where}.json?&type=comments&raw_json=1&limit=25")
|
||||
Call<String> getUserSavedCommentsOauth(@Path("username") String username, @Path("where") String where,
|
||||
@Query("after") String lastItem, @Query("sort") String sortType,
|
||||
@Query("t") String sortTime, @HeaderMap Map<String, String> headers);
|
||||
|
||||
@FormUrlEncoded
|
||||
@POST("api/subscribe")
|
||||
@ -97,18 +134,40 @@ public interface RedditAPI {
|
||||
@Query("sort") String sort,
|
||||
@HeaderMap Map<String, String> headers);
|
||||
|
||||
@GET("search.json?include_over_18=1&raw_json=1&type=link")
|
||||
Call<String> searchPostsOauth(@Query("q") String query, @Query("after") String after,
|
||||
@Query("sort") String sort, @Query("t") String sortTime,
|
||||
@HeaderMap Map<String, String> headers);
|
||||
|
||||
@GET("search.json?include_over_18=1&raw_json=1&type=link")
|
||||
Call<String> searchPosts(@Query("q") String query, @Query("after") String after,
|
||||
@Query("sort") String sort);
|
||||
|
||||
@GET("search.json?include_over_18=1&raw_json=1&type=link")
|
||||
Call<String> searchPosts(@Query("q") String query, @Query("after") String after,
|
||||
@Query("sort") String sort, @Query("t") String sortTime);
|
||||
|
||||
@GET("r/{subredditName}/search.json?include_over_18=1&raw_json=1&type=link&restrict_sr=true")
|
||||
Call<String> searchPostsInSpecificSubredditOauth(@Path("subredditName") String subredditName,
|
||||
@Query("q") String query, @Query("after") String after,
|
||||
@Query("q") String query, @Query("sort") String sort,
|
||||
@Query("after") String after,
|
||||
@HeaderMap Map<String, String> headers);
|
||||
|
||||
@GET("r/{subredditName}/search.json?include_over_18=1&raw_json=1&type=link&restrict_sr=true")
|
||||
Call<String> searchPostsInSpecificSubredditOauth(@Path("subredditName") String subredditName,
|
||||
@Query("q") String query, @Query("sort") String sort,
|
||||
@Query("t") String sortTime, @Query("after") String after,
|
||||
@HeaderMap Map<String, String> headers);
|
||||
|
||||
@GET("r/{subredditName}/search.json?include_over_18=1&raw_json=1&type=link&restrict_sr=true")
|
||||
Call<String> searchPostsInSpecificSubreddit(@Path("subredditName") String subredditName,
|
||||
@Query("q") String query, @Query("after") String after);
|
||||
@Query("q") String query, @Query("sort") String sort,
|
||||
@Query("after") String after);
|
||||
|
||||
@GET("r/{subredditName}/search.json?include_over_18=1&raw_json=1&type=link&restrict_sr=true")
|
||||
Call<String> searchPostsInSpecificSubreddit(@Path("subredditName") String subredditName,
|
||||
@Query("q") String query, @Query("sort") String sort,
|
||||
@Query("t") String sortTime, @Query("after") String after);
|
||||
|
||||
@FormUrlEncoded
|
||||
@POST("api/comment")
|
||||
|
@ -29,4 +29,20 @@ public class SharedPreferencesUtils {
|
||||
public static final String CONTENT_FONT_SIZE_KEY = "content_font_size";
|
||||
public static final String AMOLED_DARK_KEY = "amoled_dark";
|
||||
public static final String IMMERSIVE_INTERFACE_KEY = "immersive_interface";
|
||||
public static final String SORT_TYPE_BEST_POST = "sort_type_best_post";
|
||||
public static final String SORT_TIME_BEST_POST = "sort_time_best_post";
|
||||
public static final String SORT_TYPE_ALL_POST = "sort_type_all_post";
|
||||
public static final String SORT_TIME_ALL_POST = "sort_time_all_post";
|
||||
public static final String SORT_TYPE_POPULAR_POST = "sort_type_popular_post";
|
||||
public static final String SORT_TIME_POPULAR_POST = "sort_time_popular_post";
|
||||
public static final String SORT_TYPE_SEARCH_POST = "sort_type_search_post";
|
||||
public static final String SORT_TIME_SEARCH_POST = "sort_time_search_post";
|
||||
public static final String SORT_TYPE_SUBREDDIT_POST = "sort_type_subreddit_post";
|
||||
public static final String SORT_TIME_SUBREDDIT_POST = "sort_time_subreddit_post";
|
||||
public static final String SORT_TYPE_USER_POST = "sort_type_user_post";
|
||||
public static final String SORT_TIME_USER_POST = "sort_time_user_post";
|
||||
public static final String SORT_TYPE_USER_COMMENT = "sort_type_user_comment";
|
||||
public static final String SORT_TIME_USER_COMMENT = "sort_time_user_comment";
|
||||
public static final String SORT_TYPE_SEARCH_SUBREDDIT = "sort_type_search_subreddit";
|
||||
public static final String SORT_TYPE_SEARCH_USER = "sort_type_search_user";
|
||||
}
|
||||
|
@ -0,0 +1,58 @@
|
||||
package ml.docilealligator.infinityforreddit;
|
||||
|
||||
public class SortType {
|
||||
|
||||
private Type type;
|
||||
private Time time;
|
||||
|
||||
public SortType(Type type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public SortType(Type type, Time time) {
|
||||
this.type = type;
|
||||
this.time = time;
|
||||
}
|
||||
|
||||
public Type getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public Time getTime() {
|
||||
return time;
|
||||
}
|
||||
|
||||
public enum Type {
|
||||
BEST("best"),
|
||||
HOT("hot"),
|
||||
NEW("new"),
|
||||
RANDOM("random"),
|
||||
RISING("rising"),
|
||||
TOP("top"),
|
||||
CONTROVERSIAL("controversial"),
|
||||
RELEVANCE("relevance"),
|
||||
COMMENTS("comments"),
|
||||
ACTIVITY("activity");
|
||||
|
||||
public final String value;
|
||||
|
||||
Type(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
|
||||
public enum Time {
|
||||
HOUR("hour"),
|
||||
DAY("day"),
|
||||
WEEK("week"),
|
||||
MONTH("month"),
|
||||
YEAR("year"),
|
||||
ALL("all");
|
||||
|
||||
public final String value;
|
||||
|
||||
Time(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
package ml.docilealligator.infinityforreddit;
|
||||
|
||||
public interface SortTypeSelectionCallback {
|
||||
default void sortTypeSelected(SortType sortType){}
|
||||
|
||||
default void sortTypeSelected(String sortType){}
|
||||
|
||||
default void searchUserAndSubredditSortTypeSelected(SortType sortType, int fragmentPosition){}
|
||||
}
|
@ -13,7 +13,7 @@ public class SubredditListingDataSource extends PageKeyedDataSource<String, Subr
|
||||
|
||||
private Retrofit retrofit;
|
||||
private String query;
|
||||
private String sortType;
|
||||
private SortType sortType;
|
||||
|
||||
private MutableLiveData<NetworkState> paginationNetworkStateLiveData;
|
||||
private MutableLiveData<NetworkState> initialLoadStateLiveData;
|
||||
@ -22,7 +22,7 @@ public class SubredditListingDataSource extends PageKeyedDataSource<String, Subr
|
||||
private LoadParams<String> params;
|
||||
private LoadCallback<String, SubredditData> callback;
|
||||
|
||||
SubredditListingDataSource(Retrofit retrofit, String query, String sortType) {
|
||||
SubredditListingDataSource(Retrofit retrofit, String query, SortType sortType) {
|
||||
this.retrofit = retrofit;
|
||||
this.query = query;
|
||||
this.sortType = sortType;
|
||||
@ -47,7 +47,7 @@ public class SubredditListingDataSource extends PageKeyedDataSource<String, Subr
|
||||
public void loadInitial(@NonNull LoadInitialParams<String> params, @NonNull LoadInitialCallback<String, SubredditData> callback) {
|
||||
initialLoadStateLiveData.postValue(NetworkState.LOADING);
|
||||
|
||||
FetchSubredditData.fetchSubredditListingData(retrofit, query, null, sortType,
|
||||
FetchSubredditData.fetchSubredditListingData(retrofit, query, null, sortType.getType().value,
|
||||
new FetchSubredditData.FetchSubredditListingDataListener() {
|
||||
@Override
|
||||
public void onFetchSubredditListingDataSuccess(ArrayList<SubredditData> subredditData, String after) {
|
||||
@ -82,7 +82,7 @@ public class SubredditListingDataSource extends PageKeyedDataSource<String, Subr
|
||||
return;
|
||||
}
|
||||
|
||||
FetchSubredditData.fetchSubredditListingData(retrofit, query, params.key, sortType,
|
||||
FetchSubredditData.fetchSubredditListingData(retrofit, query, params.key, sortType.getType().value,
|
||||
new FetchSubredditData.FetchSubredditListingDataListener() {
|
||||
@Override
|
||||
public void onFetchSubredditListingDataSuccess(ArrayList<SubredditData> subredditData, String after) {
|
||||
|
@ -9,12 +9,12 @@ import retrofit2.Retrofit;
|
||||
public class SubredditListingDataSourceFactory extends DataSource.Factory {
|
||||
private Retrofit retrofit;
|
||||
private String query;
|
||||
private String sortType;
|
||||
private SortType sortType;
|
||||
|
||||
private SubredditListingDataSource subredditListingDataSource;
|
||||
private MutableLiveData<SubredditListingDataSource> subredditListingDataSourceMutableLiveData;
|
||||
|
||||
SubredditListingDataSourceFactory(Retrofit retrofit, String query, String sortType) {
|
||||
SubredditListingDataSourceFactory(Retrofit retrofit, String query, SortType sortType) {
|
||||
this.retrofit = retrofit;
|
||||
this.query = query;
|
||||
this.sortType = sortType;
|
||||
@ -37,7 +37,7 @@ public class SubredditListingDataSourceFactory extends DataSource.Factory {
|
||||
return subredditListingDataSource;
|
||||
}
|
||||
|
||||
void changeSortType(String sortType) {
|
||||
void changeSortType(SortType sortType) {
|
||||
this.sortType = sortType;
|
||||
}
|
||||
}
|
||||
|
@ -18,9 +18,9 @@ public class SubredditListingViewModel extends ViewModel {
|
||||
private LiveData<NetworkState> initialLoadingState;
|
||||
private LiveData<Boolean> hasSubredditLiveData;
|
||||
private LiveData<PagedList<SubredditData>> subreddits;
|
||||
private MutableLiveData<String> sortTypeLiveData;
|
||||
private MutableLiveData<SortType> sortTypeLiveData;
|
||||
|
||||
public SubredditListingViewModel(Retrofit retrofit, String query, String sortType) {
|
||||
public SubredditListingViewModel(Retrofit retrofit, String query, SortType sortType) {
|
||||
subredditListingDataSourceFactory = new SubredditListingDataSourceFactory(retrofit, query, sortType);
|
||||
|
||||
initialLoadingState = Transformations.switchMap(subredditListingDataSourceFactory.getSubredditListingDataSourceMutableLiveData(),
|
||||
@ -69,16 +69,16 @@ public class SubredditListingViewModel extends ViewModel {
|
||||
subredditListingDataSourceFactory.getSubredditListingDataSource().retryLoadingMore();
|
||||
}
|
||||
|
||||
public void changeSortType(String sortType) {
|
||||
public void changeSortType(SortType sortType) {
|
||||
sortTypeLiveData.postValue(sortType);
|
||||
}
|
||||
|
||||
public static class Factory extends ViewModelProvider.NewInstanceFactory {
|
||||
private Retrofit retrofit;
|
||||
private String query;
|
||||
private String sortType;
|
||||
private SortType sortType;
|
||||
|
||||
public Factory(Retrofit retrofit, String query, String sortType) {
|
||||
public Factory(Retrofit retrofit, String query, SortType sortType) {
|
||||
this.retrofit = retrofit;
|
||||
this.query = query;
|
||||
this.sortType = sortType;
|
||||
|
@ -13,7 +13,7 @@ public class UserListingDataSource extends PageKeyedDataSource<String, UserData>
|
||||
|
||||
private Retrofit retrofit;
|
||||
private String query;
|
||||
private String sortType;
|
||||
private SortType sortType;
|
||||
|
||||
private MutableLiveData<NetworkState> paginationNetworkStateLiveData;
|
||||
private MutableLiveData<NetworkState> initialLoadStateLiveData;
|
||||
@ -22,7 +22,7 @@ public class UserListingDataSource extends PageKeyedDataSource<String, UserData>
|
||||
private PageKeyedDataSource.LoadParams<String> params;
|
||||
private PageKeyedDataSource.LoadCallback<String, UserData> callback;
|
||||
|
||||
UserListingDataSource(Retrofit retrofit, String query, String sortType) {
|
||||
UserListingDataSource(Retrofit retrofit, String query, SortType sortType) {
|
||||
this.retrofit = retrofit;
|
||||
this.query = query;
|
||||
this.sortType = sortType;
|
||||
@ -47,7 +47,7 @@ public class UserListingDataSource extends PageKeyedDataSource<String, UserData>
|
||||
public void loadInitial(@NonNull PageKeyedDataSource.LoadInitialParams<String> params, @NonNull PageKeyedDataSource.LoadInitialCallback<String, UserData> callback) {
|
||||
initialLoadStateLiveData.postValue(NetworkState.LOADING);
|
||||
|
||||
FetchUserData.fetchUserListingData(retrofit, query, null, sortType,
|
||||
FetchUserData.fetchUserListingData(retrofit, query, null, sortType.getType().value,
|
||||
new FetchUserData.FetchUserListingDataListener() {
|
||||
@Override
|
||||
public void onFetchUserListingDataSuccess(ArrayList<UserData> UserData, String after) {
|
||||
@ -82,7 +82,7 @@ public class UserListingDataSource extends PageKeyedDataSource<String, UserData>
|
||||
return;
|
||||
}
|
||||
|
||||
FetchUserData.fetchUserListingData(retrofit, query, params.key, sortType,
|
||||
FetchUserData.fetchUserListingData(retrofit, query, params.key, sortType.getType().value,
|
||||
new FetchUserData.FetchUserListingDataListener() {
|
||||
@Override
|
||||
public void onFetchUserListingDataSuccess(ArrayList<UserData> UserData, String after) {
|
||||
|
@ -9,12 +9,12 @@ import retrofit2.Retrofit;
|
||||
public class UserListingDataSourceFactory extends DataSource.Factory {
|
||||
private Retrofit retrofit;
|
||||
private String query;
|
||||
private String sortType;
|
||||
private SortType sortType;
|
||||
|
||||
private UserListingDataSource userListingDataSource;
|
||||
private MutableLiveData<UserListingDataSource> userListingDataSourceMutableLiveData;
|
||||
|
||||
UserListingDataSourceFactory(Retrofit retrofit, String query, String sortType) {
|
||||
UserListingDataSourceFactory(Retrofit retrofit, String query, SortType sortType) {
|
||||
this.retrofit = retrofit;
|
||||
this.query = query;
|
||||
this.sortType = sortType;
|
||||
@ -37,7 +37,7 @@ public class UserListingDataSourceFactory extends DataSource.Factory {
|
||||
return userListingDataSource;
|
||||
}
|
||||
|
||||
void changeSortType(String sortType) {
|
||||
void changeSortType(SortType sortType) {
|
||||
this.sortType = sortType;
|
||||
}
|
||||
}
|
||||
|
@ -18,9 +18,9 @@ public class UserListingViewModel extends ViewModel {
|
||||
private LiveData<NetworkState> initialLoadingState;
|
||||
private LiveData<Boolean> hasUserLiveData;
|
||||
private LiveData<PagedList<UserData>> users;
|
||||
private MutableLiveData<String> sortTypeLiveData;
|
||||
private MutableLiveData<SortType> sortTypeLiveData;
|
||||
|
||||
public UserListingViewModel(Retrofit retrofit, String query, String sortType) {
|
||||
public UserListingViewModel(Retrofit retrofit, String query, SortType sortType) {
|
||||
userListingDataSourceFactory = new UserListingDataSourceFactory(retrofit, query, sortType);
|
||||
|
||||
initialLoadingState = Transformations.switchMap(userListingDataSourceFactory.getUserListingDataSourceMutableLiveData(),
|
||||
@ -69,16 +69,16 @@ public class UserListingViewModel extends ViewModel {
|
||||
userListingDataSourceFactory.getUserListingDataSource().retryLoadingMore();
|
||||
}
|
||||
|
||||
public void changeSortType(String sortType) {
|
||||
public void changeSortType(SortType sortType) {
|
||||
sortTypeLiveData.postValue(sortType);
|
||||
}
|
||||
|
||||
public static class Factory extends ViewModelProvider.NewInstanceFactory {
|
||||
private Retrofit retrofit;
|
||||
private String query;
|
||||
private String sortType;
|
||||
private SortType sortType;
|
||||
|
||||
public Factory(Retrofit retrofit, String query, String sortType) {
|
||||
public Factory(Retrofit retrofit, String query, SortType sortType) {
|
||||
this.retrofit = retrofit;
|
||||
this.query = query;
|
||||
this.sortType = sortType;
|
||||
|
100
app/src/main/res/layout/fragment_sort_time_bottom_sheet.xml
Normal file
100
app/src/main/res/layout/fragment_sort_time_bottom_sheet.xml
Normal file
@ -0,0 +1,100 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:paddingBottom="8dp"
|
||||
tools:context=".Fragment.SortTimeBottomSheetFragment">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/hour_text_view_sort_time_bottom_sheet_fragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/sort_time_hour"
|
||||
android:textColor="@color/primaryTextColor"
|
||||
android:textSize="?attr/font_default"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingBottom="16dp"
|
||||
android:paddingStart="32dp"
|
||||
android:paddingEnd="32dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:background="?attr/selectableItemBackground" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/day_text_view_sort_time_bottom_sheet_fragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/sort_time_day"
|
||||
android:textColor="@color/primaryTextColor"
|
||||
android:textSize="?attr/font_default"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingBottom="16dp"
|
||||
android:paddingStart="32dp"
|
||||
android:paddingEnd="32dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:background="?attr/selectableItemBackground" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/week_text_view_sort_time_bottom_sheet_fragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/sort_time_week"
|
||||
android:textColor="@color/primaryTextColor"
|
||||
android:textSize="?attr/font_default"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingBottom="16dp"
|
||||
android:paddingStart="32dp"
|
||||
android:paddingEnd="32dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:background="?attr/selectableItemBackground" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/month_text_view_sort_time_bottom_sheet_fragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/sort_time_month"
|
||||
android:textColor="@color/primaryTextColor"
|
||||
android:textSize="?attr/font_default"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingBottom="16dp"
|
||||
android:paddingStart="32dp"
|
||||
android:paddingEnd="32dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:background="?attr/selectableItemBackground" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/year_text_view_sort_time_bottom_sheet_fragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/sort_time_year"
|
||||
android:textColor="@color/primaryTextColor"
|
||||
android:textSize="?attr/font_default"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingBottom="16dp"
|
||||
android:paddingStart="32dp"
|
||||
android:paddingEnd="32dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:background="?attr/selectableItemBackground" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/all_time_text_view_sort_time_bottom_sheet_fragment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/sort_time_all_time"
|
||||
android:textColor="@color/primaryTextColor"
|
||||
android:textSize="?attr/font_default"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingBottom="16dp"
|
||||
android:paddingStart="32dp"
|
||||
android:paddingEnd="32dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:background="?attr/selectableItemBackground" />
|
||||
|
||||
</LinearLayout>
|
@ -188,6 +188,12 @@
|
||||
<string name="sort_relevance">Relevance</string>
|
||||
<string name="sort_comments">Comments</string>
|
||||
<string name="sort_activity">Activity</string>
|
||||
<string name="sort_time_hour">Hour</string>
|
||||
<string name="sort_time_day">Day</string>
|
||||
<string name="sort_time_week">Week</string>
|
||||
<string name="sort_time_month">Month</string>
|
||||
<string name="sort_time_year">Year</string>
|
||||
<string name="sort_time_all_time">All Time</string>
|
||||
|
||||
<string name="open_link_with">Open link with</string>
|
||||
<string name="no_browser_found">No browser found</string>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:label="@string/app_label"
|
||||
android:value="@string/app_label"
|
||||
android:hint="@string/search_hint"
|
||||
android:voiceSearchMode="showVoiceSearchButton|launchRecognizer" >
|
||||
</searchable>
|
@ -7,7 +7,7 @@ buildscript {
|
||||
jcenter()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.5.0'
|
||||
classpath 'com.android.tools.build:gradle:3.5.1'
|
||||
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
|
Loading…
Reference in New Issue
Block a user