Skip to content
This repository was archived by the owner on Jul 25, 2024. It is now read-only.

Commit 4fd159e

Browse files
Sam1301timabbott
authored andcommitted
Search in current narrowed view.
Currently, search is performed in home view. This is especially undesirable when the query gives a lot of matching results. It'd be helpful to be able to search in current view of the user.
1 parent 1e29cb5 commit 4fd159e

File tree

3 files changed

+32
-9
lines changed

3 files changed

+32
-9
lines changed

app/src/main/java/com/zulip/android/activities/ZulipActivity.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1971,7 +1971,12 @@ private boolean prepareSearchView(Menu menu) {
19711971
searchView.setOnQueryTextListener(new android.support.v7.widget.SearchView.OnQueryTextListener() {
19721972
@Override
19731973
public boolean onQueryTextSubmit(String s) {
1974-
onNarrow(new NarrowFilterSearch(s));
1974+
if (narrowedList != null) {
1975+
onNarrow(new NarrowFilterSearch(s, narrowedList.filter));
1976+
} else {
1977+
onNarrow(new NarrowFilterSearch(s, null));
1978+
}
1979+
19751980
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
19761981
mSearchMenuItem.collapseActionView();
19771982
}
@@ -2033,7 +2038,11 @@ public boolean onOptionsItemSelected(MenuItem item) {
20332038
public void onClick(
20342039
DialogInterface dialogInterface, int i) {
20352040
String query = editText.getText().toString();
2036-
onNarrow(new NarrowFilterSearch(query));
2041+
if (narrowedList != null) {
2042+
onNarrow(new NarrowFilterSearch(query, narrowedList.filter));
2043+
} else {
2044+
onNarrow(new NarrowFilterSearch(query, null));
2045+
}
20372046
}
20382047
});
20392048
builder.show();

app/src/main/java/com/zulip/android/filters/NarrowFilterSearch.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,28 @@
1616

1717
/**
1818
* Narrow based on search terms
19+
* {@link NarrowFilterSearch#query} is the search query
20+
* {@link NarrowFilterSearch#filter} indicates the current narrow filter
1921
*/
2022
public class NarrowFilterSearch implements NarrowFilter {
2123
public static final Creator<NarrowFilterSearch> CREATOR = new Creator<NarrowFilterSearch>() {
2224
@Override
2325
public NarrowFilterSearch createFromParcel(Parcel parcel) {
24-
return new NarrowFilterSearch(parcel.readString());
26+
return new NarrowFilterSearch(parcel.readString(), null);
2527
}
2628

2729
@Override
2830
public NarrowFilterSearch[] newArray(int i) {
2931
return new NarrowFilterSearch[i];
3032
}
3133
};
32-
private final String query;
3334

34-
public NarrowFilterSearch(String query) {
35+
private String query;
36+
private NarrowFilter filter;
37+
38+
public NarrowFilterSearch(String query, NarrowFilter filter) {
3539
this.query = query;
40+
this.filter = filter;
3641
}
3742

3843
@Override
@@ -47,8 +52,10 @@ public Where<Message, Object> modWhere(Where<Message, Object> where)
4752

4853
@Override
4954
public boolean matches(Message msg) {
50-
//api matching for us
51-
return true;
55+
// api gives a list of messages matching the search query
56+
// when in home view, we want to show all the matching results
57+
// when narrowed, we want to show messages which match the current narrow of user
58+
return filter == null || filter.matches(msg);
5259
}
5360

5461
@Override

app/src/main/java/com/zulip/android/filters/NarrowFilterStream.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import android.os.Parcel;
44
import android.os.Parcelable;
5+
import android.text.TextUtils;
56

67
import com.j256.ormlite.stmt.SelectArg;
78
import com.j256.ormlite.stmt.Where;
@@ -71,8 +72,14 @@ public String toString() {
7172

7273
@Override
7374
public boolean matches(Message msg) {
74-
return msg.getType() == MessageType.STREAM_MESSAGE
75-
&& msg.getStream().equals(stream);
75+
if (TextUtils.isEmpty(this.subject)) {
76+
return msg.getType() == MessageType.STREAM_MESSAGE
77+
&& msg.getStream().equals(stream);
78+
} else {
79+
return msg.getType() == MessageType.STREAM_MESSAGE
80+
&& msg.getStream().equals(stream)
81+
&& this.subject.equals(msg.getSubject());
82+
}
7683
}
7784

7885
@Override

0 commit comments

Comments
 (0)