Skip to content

Commit 5f80ada

Browse files
Save multireddit path and display name in RecentSearchQuery. App data should be removed before opening Infinity cuz RedditDataRoomDatabase's migration method is changed without bumping version.
1 parent 2314a94 commit 5f80ada

File tree

8 files changed

+79
-20
lines changed

8 files changed

+79
-20
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,8 @@ public void migrate(@NonNull SupportSQLiteDatabase database) {
423423
@Override
424424
public void migrate(@NonNull SupportSQLiteDatabase database) {
425425
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_multireddit_path TEXT");
427+
database.execSQL("ALTER TABLE recent_search_queries ADD COLUMN search_in_multireddit_display_name TEXT");
426428
database.execSQL("ALTER TABLE recent_search_queries ADD COLUMN search_in_thing_type INTEGER DEFAULT 0 NOT NULL");
427429
}
428430
};

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,10 @@ private void bindView() {
355355
@Override
356356
public void onClick(RecentSearchQuery recentSearchQuery) {
357357
searchInSubredditOrUserName = recentSearchQuery.getSearchInSubredditOrUserName();
358+
searchInMultiReddit = MultiReddit.getDummyMultiReddit(recentSearchQuery.getMultiRedditPath());
359+
if (searchInMultiReddit != null && recentSearchQuery.getMultiRedditDisplayName() != null) {
360+
searchInMultiReddit.setDisplayName(recentSearchQuery.getMultiRedditDisplayName());
361+
}
358362
searchInThingType = recentSearchQuery.getSearchInThingType();
359363
search(recentSearchQuery.getSearchQuery());
360364
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -392,8 +392,8 @@ public void onPageSelected(int position) {
392392

393393
if (!accountName.equals(Account.ANONYMOUS_ACCOUNT) && mSharedPreferences.getBoolean(SharedPreferencesUtils.ENABLE_SEARCH_HISTORY, true) && !mInsertSearchQuerySuccess && mQuery != null) {
394394
InsertRecentSearchQuery.insertRecentSearchQueryListener(executor, new Handler(getMainLooper()),
395-
mRedditDataRoomDatabase, accountName, mQuery, mSearchInSubredditOrUserName, mSearchInThingType,
396-
() -> mInsertSearchQuerySuccess = true);
395+
mRedditDataRoomDatabase, accountName, mQuery, mSearchInSubredditOrUserName, mSearchInMultiReddit,
396+
mSearchInThingType, () -> mInsertSearchQuerySuccess = true);
397397
}
398398
}
399399

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

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -733,11 +733,7 @@ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
733733
} else if (itemId == R.id.action_search_view_multi_reddit_detail_activity) {
734734
Intent intent = new Intent(this, SearchActivity.class);
735735
if (multiReddit == null) {
736-
MultiReddit dummyMultiReddit = new MultiReddit(multiPath,
737-
multiPath.substring(multiPath.lastIndexOf("/", multiPath.length() - 2) + 1),
738-
multiPath, null, null, null, null, Account.ANONYMOUS_ACCOUNT,
739-
0, 0, true, false, false);
740-
intent.putExtra(SearchActivity.EXTRA_SEARCH_IN_MULTIREDDIT, dummyMultiReddit);
736+
intent.putExtra(SearchActivity.EXTRA_SEARCH_IN_MULTIREDDIT, MultiReddit.getDummyMultiReddit(multiPath));
741737
} else {
742738
intent.putExtra(SearchActivity.EXTRA_SEARCH_IN_MULTIREDDIT, multiReddit);
743739
}

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

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -54,23 +54,31 @@ public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int positi
5454
if (recentSearchQueries != null && !recentSearchQueries.isEmpty() && position < recentSearchQueries.size()) {
5555
RecentSearchQuery recentSearchQuery = recentSearchQueries.get(position);
5656
((RecentSearchQueryViewHolder) holder).binding.recentSearchQueryTextViewItemRecentSearchQuery.setText(recentSearchQuery.getSearchQuery());
57-
if (recentSearchQuery.getSearchInSubredditOrUserName() != null && !recentSearchQuery.getSearchInSubredditOrUserName().isEmpty()) {
58-
if (recentSearchQuery.getSearchInThingType() == SelectThingReturnKey.THING_TYPE.USER) {
57+
switch (recentSearchQuery.getSearchInThingType()) {
58+
case SelectThingReturnKey.THING_TYPE.SUBREDDIT:
59+
if (recentSearchQuery.getSearchInSubredditOrUserName() != null && !recentSearchQuery.getSearchInSubredditOrUserName().isEmpty()) {
60+
((RecentSearchQueryViewHolder) holder).binding.recentSearchQueryWhereTextViewItemRecentSearchQuery
61+
.setTextColor(subredditTextColor);
62+
((RecentSearchQueryViewHolder) holder).binding.recentSearchQueryWhereTextViewItemRecentSearchQuery
63+
.setText("r/" + recentSearchQuery.getSearchInSubredditOrUserName());
64+
} else {
65+
((RecentSearchQueryViewHolder) holder).binding.recentSearchQueryWhereTextViewItemRecentSearchQuery
66+
.setTextColor(secondaryTextColor);
67+
((RecentSearchQueryViewHolder) holder).binding.recentSearchQueryWhereTextViewItemRecentSearchQuery
68+
.setText(R.string.all_subreddits);
69+
}
70+
break;
71+
case SelectThingReturnKey.THING_TYPE.USER:
5972
((RecentSearchQueryViewHolder) holder).binding.recentSearchQueryWhereTextViewItemRecentSearchQuery
6073
.setTextColor(userTextColor);
6174
((RecentSearchQueryViewHolder) holder).binding.recentSearchQueryWhereTextViewItemRecentSearchQuery
6275
.setText("u/" + recentSearchQuery.getSearchInSubredditOrUserName());
63-
} else {
76+
break;
77+
case SelectThingReturnKey.THING_TYPE.MULTIREDDIT:
6478
((RecentSearchQueryViewHolder) holder).binding.recentSearchQueryWhereTextViewItemRecentSearchQuery
65-
.setTextColor(subredditTextColor);
79+
.setTextColor(secondaryTextColor);
6680
((RecentSearchQueryViewHolder) holder).binding.recentSearchQueryWhereTextViewItemRecentSearchQuery
67-
.setText("r/" + recentSearchQuery.getSearchInSubredditOrUserName());
68-
}
69-
} else {
70-
((RecentSearchQueryViewHolder) holder).binding.recentSearchQueryWhereTextViewItemRecentSearchQuery
71-
.setTextColor(secondaryTextColor);
72-
((RecentSearchQueryViewHolder) holder).binding.recentSearchQueryWhereTextViewItemRecentSearchQuery
73-
.setText(R.string.all_subreddits);
81+
.setText(recentSearchQuery.getMultiRedditDisplayName());
7482
}
7583
holder.itemView.postDelayed(() -> {
7684
((RecentSearchQueryViewHolder) holder).binding.recentSearchQueryTextViewItemRecentSearchQuery.setSelected(true);

app/src/main/java/ml/docilealligator/infinityforreddit/multireddit/MultiReddit.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import android.os.Parcelable;
55

66
import androidx.annotation.NonNull;
7+
import androidx.annotation.Nullable;
78
import androidx.room.ColumnInfo;
89
import androidx.room.Entity;
910
import androidx.room.ForeignKey;
@@ -256,4 +257,15 @@ public void writeToParcel(Parcel parcel, int i) {
256257
parcel.writeByte((byte) (isFavorite ? 1 : 0));
257258
parcel.writeStringList(subreddits);
258259
}
260+
261+
@Nullable
262+
public static MultiReddit getDummyMultiReddit(@Nullable String multiPath) {
263+
if (multiPath == null) {
264+
return null;
265+
}
266+
return new MultiReddit(multiPath,
267+
multiPath.substring(multiPath.lastIndexOf("/", multiPath.length() - 2) + 1),
268+
multiPath, null, null, null, null, Account.ANONYMOUS_ACCOUNT,
269+
0, 0, true, false, false);
270+
}
259271
}

app/src/main/java/ml/docilealligator/infinityforreddit/recentsearchquery/InsertRecentSearchQuery.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import java.util.concurrent.Executor;
77

88
import ml.docilealligator.infinityforreddit.RedditDataRoomDatabase;
9+
import ml.docilealligator.infinityforreddit.multireddit.MultiReddit;
910

1011
public class InsertRecentSearchQuery {
1112
public interface InsertRecentSearchQueryListener {
@@ -17,6 +18,7 @@ public static void insertRecentSearchQueryListener(Executor executor, Handler ha
1718
String username,
1819
String recentSearchQuery,
1920
String searchInSubredditOrUserName,
21+
MultiReddit searchInMultiReddit,
2022
int searchInThingType,
2123
InsertRecentSearchQueryListener insertRecentSearchQueryListener) {
2224
executor.execute(() -> {
@@ -28,7 +30,14 @@ public static void insertRecentSearchQueryListener(Executor executor, Handler ha
2830
}
2931
}
3032

31-
recentSearchQueryDao.insert(new RecentSearchQuery(username, recentSearchQuery, searchInSubredditOrUserName, searchInThingType));
33+
if (searchInMultiReddit == null) {
34+
recentSearchQueryDao.insert(new RecentSearchQuery(username, recentSearchQuery,
35+
searchInSubredditOrUserName, null, null, searchInThingType));
36+
} else {
37+
recentSearchQueryDao.insert(new RecentSearchQuery(username, recentSearchQuery,
38+
searchInSubredditOrUserName, searchInMultiReddit.getPath(),
39+
searchInMultiReddit.getDisplayName(), searchInThingType));
40+
}
3241

3342
handler.post(insertRecentSearchQueryListener::success);
3443
});

app/src/main/java/ml/docilealligator/infinityforreddit/recentsearchquery/RecentSearchQuery.java

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,28 @@ public class RecentSearchQuery {
2222
@Nullable
2323
@ColumnInfo(name = "search_in_subreddit_or_user_name")
2424
private String searchInSubredditOrUserName;
25+
@Nullable
26+
@ColumnInfo(name = "search_in_multireddit_path")
27+
private String multiRedditPath;
28+
@Nullable
29+
@ColumnInfo(name = "search_in_multireddit_display_name")
30+
private String multiRedditDisplayName;
2531
@SelectThingReturnKey.THING_TYPE
2632
@ColumnInfo(name = "search_in_thing_type")
2733
private int searchInThingType;
2834
@ColumnInfo(name = "time")
2935
private long time;
3036

3137
public RecentSearchQuery(@NonNull String username, @NonNull String searchQuery,
32-
@Nullable String searchInSubredditOrUserName, @SelectThingReturnKey.THING_TYPE int searchInThingType) {
38+
@Nullable String searchInSubredditOrUserName, @Nullable String multiRedditPath,
39+
@Nullable String multiRedditDisplayName,
40+
@SelectThingReturnKey.THING_TYPE int searchInThingType) {
3341
this.username = username;
3442
this.searchQuery = searchQuery;
3543
this.searchInSubredditOrUserName = searchInSubredditOrUserName;
3644
this.searchInThingType = searchInThingType;
45+
this.multiRedditPath = multiRedditPath;
46+
this.multiRedditDisplayName = multiRedditDisplayName;
3747
this.time = System.currentTimeMillis();
3848
}
3949

@@ -64,6 +74,24 @@ public void setSearchInSubredditOrUserName(@Nullable String searchInSubredditOrU
6474
this.searchInSubredditOrUserName = searchInSubredditOrUserName;
6575
}
6676

77+
@Nullable
78+
public String getMultiRedditPath() {
79+
return multiRedditPath;
80+
}
81+
82+
public void setMultiRedditPath(@Nullable String multiRedditPath) {
83+
this.multiRedditPath = multiRedditPath;
84+
}
85+
86+
@Nullable
87+
public String getMultiRedditDisplayName() {
88+
return multiRedditDisplayName;
89+
}
90+
91+
public void setMultiRedditDisplayName(@Nullable String multiRedditDisplayName) {
92+
this.multiRedditDisplayName = multiRedditDisplayName;
93+
}
94+
6795
@SelectThingReturnKey.THING_TYPE
6896
public int getSearchInThingType() {
6997
return searchInThingType;

0 commit comments

Comments
 (0)