Skip to content

Commit 25ac920

Browse files
Save 'Search in' in RecentSearchQuery.
1 parent b41e93d commit 25ac920

File tree

8 files changed

+98
-50
lines changed

8 files changed

+98
-50
lines changed

app/src/main/java/ml/docilealligator/infinityforreddit/RedditDataRoomDatabase.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
@Database(entities = {Account.class, SubredditData.class, SubscribedSubredditData.class, UserData.class,
4444
SubscribedUserData.class, MultiReddit.class, CustomTheme.class, RecentSearchQuery.class,
4545
ReadPost.class, PostFilter.class, PostFilterUsage.class, AnonymousMultiredditSubreddit.class,
46-
CommentFilter.class, CommentFilterUsage.class}, version = 26)
46+
CommentFilter.class, CommentFilterUsage.class}, version = 27)
4747
public abstract class RedditDataRoomDatabase extends RoomDatabase {
4848

4949
public static RedditDataRoomDatabase create(final Context context) {
@@ -55,7 +55,7 @@ public static RedditDataRoomDatabase create(final Context context) {
5555
MIGRATION_13_14, MIGRATION_14_15, MIGRATION_15_16, MIGRATION_16_17,
5656
MIGRATION_17_18, MIGRATION_18_19, MIGRATION_19_20, MIGRATION_20_21,
5757
MIGRATION_21_22, MIGRATION_22_23, MIGRATION_23_24, MIGRATION_24_25,
58-
MIGRATION_25_26)
58+
MIGRATION_25_26, MIGRATION_26_27)
5959
.build();
6060
}
6161

@@ -418,4 +418,12 @@ public void migrate(@NonNull SupportSQLiteDatabase database) {
418418
database.execSQL("ALTER TABLE comment_filter ADD COLUMN display_mode INTEGER DEFAULT 0 NOT NULL");
419419
}
420420
};
421+
422+
private static final Migration MIGRATION_26_27 = new Migration(26, 27) {
423+
@Override
424+
public void migrate(@NonNull SupportSQLiteDatabase database) {
425+
database.execSQL("ALTER TABLE recent_search_queries ADD COLUMN search_in_subreddit_or_user_name TEXT");
426+
database.execSQL("ALTER TABLE recent_search_queries ADD COLUMN search_in_is_user INTEGER DEFAULT 0 NOT NULL");
427+
}
428+
};
421429
}

app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchActivity.java

Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@
6060
public class SearchActivity extends BaseActivity {
6161

6262
public static final String EXTRA_QUERY = "EQ";
63-
public static final String EXTRA_SUBREDDIT_NAME = "ESN";
64-
public static final String EXTRA_SUBREDDIT_IS_USER = "ESIU";
63+
public static final String EXTRA_SEARCH_IN_SUBREDDIT_OR_USER_NAME = "ESISOUN";
64+
public static final String EXTRA_SEARCH_IN_SUBREDDIT_IS_USER = "ESISIU";
6565
public static final String EXTRA_SEARCH_ONLY_SUBREDDITS = "ESOS";
6666
public static final String EXTRA_SEARCH_ONLY_USERS = "ESOU";
6767
public static final String EXTRA_RETURN_SUBREDDIT_NAME = "ERSN";
@@ -99,8 +99,8 @@ public class SearchActivity extends BaseActivity {
9999
@Inject
100100
Executor executor;
101101
private String query;
102-
private String subredditName;
103-
private boolean subredditIsUser;
102+
private String searchInSubredditOrUserName;
103+
private boolean searchInIsUser;
104104
private boolean searchOnlySubreddits;
105105
private boolean searchOnlyUsers;
106106
private SearchActivityRecyclerViewAdapter adapter;
@@ -230,7 +230,7 @@ public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
230230
});
231231

232232
binding.searchEditTextSearchActivity.setOnEditorActionListener((v, actionId, event) -> {
233-
if ((actionId == EditorInfo.IME_ACTION_DONE || actionId == EditorInfo.IME_ACTION_SEARCH) || (event.getKeyCode() == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN )) {
233+
if ((actionId == EditorInfo.IME_ACTION_DONE || actionId == EditorInfo.IME_ACTION_SEARCH) || (event.getKeyCode() == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN)) {
234234
if (!binding.searchEditTextSearchActivity.getText().toString().isEmpty()) {
235235
search(binding.searchEditTextSearchActivity.getText().toString());
236236
return true;
@@ -264,13 +264,13 @@ public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
264264
});
265265

266266
if (savedInstanceState != null) {
267-
subredditName = savedInstanceState.getString(SUBREDDIT_NAME_STATE);
268-
subredditIsUser = savedInstanceState.getBoolean(SUBREDDIT_IS_USER_STATE);
267+
searchInSubredditOrUserName = savedInstanceState.getString(SUBREDDIT_NAME_STATE);
268+
searchInIsUser = savedInstanceState.getBoolean(SUBREDDIT_IS_USER_STATE);
269269

270-
if (subredditName == null) {
270+
if (searchInSubredditOrUserName == null) {
271271
binding.subredditNameTextViewSearchActivity.setText(R.string.all_subreddits);
272272
} else {
273-
binding.subredditNameTextViewSearchActivity.setText(subredditName);
273+
binding.subredditNameTextViewSearchActivity.setText(searchInSubredditOrUserName);
274274
}
275275
} else {
276276
query = getIntent().getStringExtra(EXTRA_QUERY);
@@ -288,19 +288,21 @@ public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
288288
}
289289

290290
Intent intent = getIntent();
291-
if (intent.hasExtra(EXTRA_SUBREDDIT_NAME)) {
292-
subredditName = intent.getStringExtra(EXTRA_SUBREDDIT_NAME);
293-
binding.subredditNameTextViewSearchActivity.setText(subredditName);
294-
subredditIsUser = intent.getBooleanExtra(EXTRA_SUBREDDIT_IS_USER, false);
291+
if (intent.hasExtra(EXTRA_SEARCH_IN_SUBREDDIT_OR_USER_NAME)) {
292+
searchInSubredditOrUserName = intent.getStringExtra(EXTRA_SEARCH_IN_SUBREDDIT_OR_USER_NAME);
293+
binding.subredditNameTextViewSearchActivity.setText(searchInSubredditOrUserName);
294+
searchInIsUser = intent.getBooleanExtra(EXTRA_SEARCH_IN_SUBREDDIT_IS_USER, false);
295295
}
296296
}
297297

298298
private void bindView() {
299299
if (!accountName.equals(Account.ANONYMOUS_ACCOUNT)) {
300300
adapter = new SearchActivityRecyclerViewAdapter(this, mCustomThemeWrapper, new SearchActivityRecyclerViewAdapter.ItemOnClickListener() {
301301
@Override
302-
public void onClick(String query) {
303-
search(query);
302+
public void onClick(RecentSearchQuery recentSearchQuery) {
303+
searchInSubredditOrUserName = recentSearchQuery.getSearchInSubredditOrUserName();
304+
searchInIsUser = recentSearchQuery.isSearchInIsUser();
305+
search(recentSearchQuery.getSearchQuery());
304306
}
305307

306308
@Override
@@ -374,12 +376,9 @@ private void openSearchResult(String query) {
374376
} else {
375377
Intent intent = new Intent(SearchActivity.this, SearchResultActivity.class);
376378
intent.putExtra(SearchResultActivity.EXTRA_QUERY, query);
377-
if (subredditName != null) {
378-
if (subredditIsUser) {
379-
intent.putExtra(SearchResultActivity.EXTRA_SUBREDDIT_NAME, "u_" + subredditName);
380-
} else {
381-
intent.putExtra(SearchResultActivity.EXTRA_SUBREDDIT_NAME, subredditName);
382-
}
379+
if (searchInSubredditOrUserName != null) {
380+
intent.putExtra(SearchResultActivity.EXTRA_SEARCH_IN_SUBREDDIT_OR_USER_NAME, searchInSubredditOrUserName);
381+
intent.putExtra(SearchResultActivity.EXTRA_SEARCH_IN_SUBREDDIT_IS_USER, searchInIsUser);
383382
}
384383
startActivity(intent);
385384
finish();
@@ -443,13 +442,13 @@ protected void onPause() {
443442
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
444443
if (resultCode == RESULT_OK && data != null) {
445444
if (requestCode == SUBREDDIT_SELECTION_REQUEST_CODE) {
446-
subredditName = data.getStringExtra(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_NAME);
447-
subredditIsUser = data.getBooleanExtra(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_IS_USER, false);
445+
searchInSubredditOrUserName = data.getStringExtra(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_NAME);
446+
searchInIsUser = data.getBooleanExtra(SubredditSelectionActivity.EXTRA_RETURN_SUBREDDIT_IS_USER, false);
448447

449-
if (subredditName == null) {
448+
if (searchInSubredditOrUserName == null) {
450449
binding.subredditNameTextViewSearchActivity.setText(R.string.all_subreddits);
451450
} else {
452-
binding.subredditNameTextViewSearchActivity.setText(subredditName);
451+
binding.subredditNameTextViewSearchActivity.setText(searchInSubredditOrUserName);
453452
}
454453
} else if (requestCode == SUBREDDIT_SEARCH_REQUEST_CODE) {
455454
Intent returnIntent = new Intent();
@@ -496,8 +495,8 @@ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
496495
@Override
497496
public void onSaveInstanceState(@NonNull Bundle outState) {
498497
super.onSaveInstanceState(outState);
499-
outState.putString(SUBREDDIT_NAME_STATE, subredditName);
500-
outState.putBoolean(SUBREDDIT_IS_USER_STATE, subredditIsUser);
498+
outState.putString(SUBREDDIT_NAME_STATE, searchInSubredditOrUserName);
499+
outState.putBoolean(SUBREDDIT_IS_USER_STATE, searchInIsUser);
501500
}
502501

503502
@Override

app/src/main/java/ml/docilealligator/infinityforreddit/activities/SearchResultActivity.java

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ public class SearchResultActivity extends BaseActivity implements SortTypeSelect
8383

8484
static final String EXTRA_QUERY = "EQ";
8585
static final String EXTRA_TRENDING_SOURCE = "ETS";
86-
static final String EXTRA_SUBREDDIT_NAME = "ESN";
86+
static final String EXTRA_SEARCH_IN_SUBREDDIT_OR_USER_NAME = "ESISOUN";
87+
public static final String EXTRA_SEARCH_IN_SUBREDDIT_IS_USER = "ESISIU";
8788

8889
private static final String INSERT_SEARCH_QUERY_SUCCESS_STATE = "ISQSS";
8990

@@ -116,7 +117,8 @@ public class SearchResultActivity extends BaseActivity implements SortTypeSelect
116117
Executor executor;
117118
private Call<String> subredditAutocompleteCall;
118119
private String mQuery;
119-
private String mSubredditName;
120+
private String mSearchInSubredditOrUserName;
121+
private boolean mSearchInIsUser;
120122
private boolean mInsertSearchQuerySuccess;
121123
private FragmentManager fragmentManager;
122124
private SectionsPagerAdapter sectionsPagerAdapter;
@@ -173,7 +175,8 @@ protected void onCreate(Bundle savedInstanceState) {
173175
Intent intent = getIntent();
174176
String query = intent.getStringExtra(EXTRA_QUERY);
175177

176-
mSubredditName = intent.getStringExtra(EXTRA_SUBREDDIT_NAME);
178+
mSearchInSubredditOrUserName = intent.getStringExtra(EXTRA_SEARCH_IN_SUBREDDIT_OR_USER_NAME);
179+
mSearchInIsUser = intent.getBooleanExtra(EXTRA_SEARCH_IN_SUBREDDIT_IS_USER, false);
177180

178181
if (query != null) {
179182
mQuery = query;
@@ -325,8 +328,9 @@ public void onPageSelected(int position) {
325328
}
326329
case SharedPreferencesUtils.OTHER_ACTIVITIES_BOTTOM_APP_BAR_FAB_SEARCH: {
327330
Intent intent = new Intent(this, SearchActivity.class);
328-
if (mSubredditName != null && !mSubredditName.equals("")) {
329-
intent.putExtra(SearchActivity.EXTRA_SUBREDDIT_NAME, mSubredditName);
331+
if (mSearchInSubredditOrUserName != null && !mSearchInSubredditOrUserName.equals("")) {
332+
intent.putExtra(SearchActivity.EXTRA_SEARCH_IN_SUBREDDIT_OR_USER_NAME, mSearchInSubredditOrUserName);
333+
intent.putExtra(SearchActivity.EXTRA_SEARCH_IN_SUBREDDIT_IS_USER, mSearchInIsUser);
330334
}
331335
startActivity(intent);
332336
break;
@@ -372,7 +376,8 @@ public void onPageSelected(int position) {
372376

373377
if (!accountName.equals(Account.ANONYMOUS_ACCOUNT)&& mSharedPreferences.getBoolean(SharedPreferencesUtils.ENABLE_SEARCH_HISTORY, true) && !mInsertSearchQuerySuccess && mQuery != null) {
374378
InsertRecentSearchQuery.insertRecentSearchQueryListener(executor, new Handler(getMainLooper()),
375-
mRedditDataRoomDatabase, accountName, mQuery, () -> mInsertSearchQuerySuccess = true);
379+
mRedditDataRoomDatabase, accountName, mQuery, mSearchInSubredditOrUserName, mSearchInIsUser,
380+
() -> mInsertSearchQuerySuccess = true);
376381
}
377382
}
378383

@@ -412,8 +417,9 @@ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
412417
return true;
413418
} else if (itemId == R.id.action_search_search_result_activity) {
414419
Intent intent = new Intent(this, SearchActivity.class);
415-
if (mSubredditName != null && !mSubredditName.equals("")) {
416-
intent.putExtra(SearchActivity.EXTRA_SUBREDDIT_NAME, mSubredditName);
420+
if (mSearchInSubredditOrUserName != null && !mSearchInSubredditOrUserName.equals("")) {
421+
intent.putExtra(SearchActivity.EXTRA_SEARCH_IN_SUBREDDIT_OR_USER_NAME, mSearchInSubredditOrUserName);
422+
intent.putExtra(SearchActivity.EXTRA_SEARCH_IN_SUBREDDIT_IS_USER, mSearchInIsUser);
417423
}
418424
intent.putExtra(SearchActivity.EXTRA_QUERY, mQuery);
419425
finish();
@@ -524,8 +530,9 @@ public void fabOptionSelected(int option) {
524530
break;
525531
case FABMoreOptionsBottomSheetFragment.FAB_OPTION_SEARCH:
526532
Intent intent = new Intent(this, SearchActivity.class);
527-
if (mSubredditName != null && !mSubredditName.equals("")) {
528-
intent.putExtra(SearchActivity.EXTRA_SUBREDDIT_NAME, mSubredditName);
533+
if (mSearchInSubredditOrUserName != null && !mSearchInSubredditOrUserName.equals("")) {
534+
intent.putExtra(SearchActivity.EXTRA_SEARCH_IN_SUBREDDIT_OR_USER_NAME, mSearchInSubredditOrUserName);
535+
intent.putExtra(SearchActivity.EXTRA_SEARCH_IN_SUBREDDIT_IS_USER, mSearchInIsUser);
529536
}
530537
startActivity(intent);
531538
break;
@@ -755,7 +762,7 @@ public Fragment createFragment(int position) {
755762
PostFragment mFragment = new PostFragment();
756763
Bundle bundle = new Bundle();
757764
bundle.putInt(PostFragment.EXTRA_POST_TYPE, PostPagingSource.TYPE_SEARCH);
758-
bundle.putString(PostFragment.EXTRA_NAME, mSubredditName);
765+
bundle.putString(PostFragment.EXTRA_NAME, mSearchInIsUser ? "u_" + mSearchInSubredditOrUserName : mSearchInSubredditOrUserName);
759766
bundle.putString(PostFragment.EXTRA_QUERY, mQuery);
760767
bundle.putString(PostFragment.EXTRA_TRENDING_SOURCE, getIntent().getStringExtra(EXTRA_TRENDING_SOURCE));
761768
mFragment.setArguments(bundle);

app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewSubredditDetailActivity.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,7 @@ private void bottomAppBarOptionAction(int option) {
610610
}
611611
case SharedPreferencesUtils.OTHER_ACTIVITIES_BOTTOM_APP_BAR_OPTION_SEARCH: {
612612
Intent intent = new Intent(this, SearchActivity.class);
613-
intent.putExtra(SearchActivity.EXTRA_SUBREDDIT_NAME, subredditName);
613+
intent.putExtra(SearchActivity.EXTRA_SEARCH_IN_SUBREDDIT_OR_USER_NAME, subredditName);
614614
startActivity(intent);
615615
break;
616616
}
@@ -874,7 +874,7 @@ public void readFailed() {
874874
}
875875
case SharedPreferencesUtils.OTHER_ACTIVITIES_BOTTOM_APP_BAR_FAB_SEARCH: {
876876
Intent intent = new Intent(this, SearchActivity.class);
877-
intent.putExtra(SearchActivity.EXTRA_SUBREDDIT_NAME, subredditName);
877+
intent.putExtra(SearchActivity.EXTRA_SEARCH_IN_SUBREDDIT_OR_USER_NAME, subredditName);
878878
startActivity(intent);
879879
break;
880880
}
@@ -1087,7 +1087,7 @@ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
10871087
return true;
10881088
} else if (itemId == R.id.action_search_view_subreddit_detail_activity) {
10891089
Intent intent = new Intent(this, SearchActivity.class);
1090-
intent.putExtra(SearchActivity.EXTRA_SUBREDDIT_NAME, subredditName);
1090+
intent.putExtra(SearchActivity.EXTRA_SEARCH_IN_SUBREDDIT_OR_USER_NAME, subredditName);
10911091
startActivity(intent);
10921092
return true;
10931093
} else if (itemId == R.id.action_refresh_view_subreddit_detail_activity) {
@@ -1338,7 +1338,7 @@ public void fabOptionSelected(int option) {
13381338
break;
13391339
case FABMoreOptionsBottomSheetFragment.FAB_OPTION_SEARCH:
13401340
Intent intent = new Intent(this, SearchActivity.class);
1341-
intent.putExtra(SearchActivity.EXTRA_SUBREDDIT_NAME, subredditName);
1341+
intent.putExtra(SearchActivity.EXTRA_SEARCH_IN_SUBREDDIT_OR_USER_NAME, subredditName);
13421342
startActivity(intent);
13431343
break;
13441344
case FABMoreOptionsBottomSheetFragment.FAB_OPTION_GO_TO_SUBREDDIT: {

app/src/main/java/ml/docilealligator/infinityforreddit/activities/ViewUserDetailActivity.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -826,6 +826,8 @@ public void readFailed() {
826826
}
827827
case SharedPreferencesUtils.OTHER_ACTIVITIES_BOTTOM_APP_BAR_FAB_SEARCH: {
828828
Intent intent = new Intent(this, SearchActivity.class);
829+
intent.putExtra(SearchActivity.EXTRA_SEARCH_IN_SUBREDDIT_OR_USER_NAME, username);
830+
intent.putExtra(SearchActivity.EXTRA_SEARCH_IN_SUBREDDIT_IS_USER, true);
829831
startActivity(intent);
830832
break;
831833
}
@@ -914,6 +916,8 @@ private void bottomAppBarOptionAction(int option) {
914916
}
915917
case SharedPreferencesUtils.OTHER_ACTIVITIES_BOTTOM_APP_BAR_OPTION_SEARCH: {
916918
Intent intent = new Intent(this, SearchActivity.class);
919+
intent.putExtra(SearchActivity.EXTRA_SEARCH_IN_SUBREDDIT_OR_USER_NAME, username);
920+
intent.putExtra(SearchActivity.EXTRA_SEARCH_IN_SUBREDDIT_IS_USER, true);
917921
startActivity(intent);
918922
break;
919923
}
@@ -1091,8 +1095,8 @@ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
10911095
return true;
10921096
} else if (itemId == R.id.action_search_view_user_detail_activity) {
10931097
Intent intent = new Intent(this, SearchActivity.class);
1094-
intent.putExtra(SearchActivity.EXTRA_SUBREDDIT_NAME, username);
1095-
intent.putExtra(SearchActivity.EXTRA_SUBREDDIT_IS_USER, true);
1098+
intent.putExtra(SearchActivity.EXTRA_SEARCH_IN_SUBREDDIT_OR_USER_NAME, username);
1099+
intent.putExtra(SearchActivity.EXTRA_SEARCH_IN_SUBREDDIT_IS_USER, true);
10961100
startActivity(intent);
10971101
return true;
10981102
} else if (itemId == R.id.action_refresh_view_user_detail_activity) {
@@ -1277,6 +1281,8 @@ public void fabOptionSelected(int option) {
12771281
break;
12781282
case FABMoreOptionsBottomSheetFragment.FAB_OPTION_SEARCH:
12791283
Intent intent = new Intent(this, SearchActivity.class);
1284+
intent.putExtra(SearchActivity.EXTRA_SEARCH_IN_SUBREDDIT_OR_USER_NAME, username);
1285+
intent.putExtra(SearchActivity.EXTRA_SEARCH_IN_SUBREDDIT_IS_USER, true);
12801286
startActivity(intent);
12811287
break;
12821288
case FABMoreOptionsBottomSheetFragment.FAB_OPTION_GO_TO_SUBREDDIT: {

app/src/main/java/ml/docilealligator/infinityforreddit/adapters/SearchActivityRecyclerViewAdapter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public class SearchActivityRecyclerViewAdapter extends RecyclerView.Adapter<Recy
2323
private final ItemOnClickListener itemOnClickListener;
2424

2525
public interface ItemOnClickListener {
26-
void onClick(String query);
26+
void onClick(RecentSearchQuery recentSearchQuery);
2727
void onDelete(RecentSearchQuery recentSearchQuery);
2828
}
2929

@@ -92,7 +92,7 @@ public RecentSearchQueryViewHolder(@NonNull ItemRecentSearchQueryBinding binding
9292

9393
itemView.setOnClickListener(view -> {
9494
if (recentSearchQueries != null && !recentSearchQueries.isEmpty()) {
95-
itemOnClickListener.onClick(recentSearchQueries.get(getBindingAdapterPosition()).getSearchQuery());
95+
itemOnClickListener.onClick(recentSearchQueries.get(getBindingAdapterPosition()));
9696
}
9797
});
9898

0 commit comments

Comments
 (0)