Skip to content

Commit 9d4521f

Browse files
committed
update filter option
1 parent d0ba387 commit 9d4521f

5 files changed

Lines changed: 118 additions & 40 deletions

File tree

‎library/src/main/java/com/getstream/sdk/chat/Component.java‎

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.getstream.sdk.chat;
22

33
import com.getstream.sdk.chat.model.FilterOption;
4+
import com.getstream.sdk.chat.model.enums.FilterQuery;
45
import com.getstream.sdk.chat.model.enums.ReadIndicator;
56

67
import java.util.List;
@@ -15,7 +16,7 @@ public class Channel{
1516
private boolean invitation = true;
1617
private boolean showReadIndicator = true;
1718
private List<FilterOption> filterOptions;
18-
private String query;
19+
private FilterQuery query;
1920
private Map<String, Object> sortOptions;
2021
private ReadIndicator readIndicator = ReadIndicator.UNREAD_COUNT;
2122
public boolean isShowReadIndicator() {
@@ -46,18 +47,15 @@ public List<FilterOption> getFilterOptions() {
4647
return filterOptions;
4748
}
4849

49-
public void setFilterOptions(List<FilterOption> filterOptions) {
50+
public void setFilterOptions(FilterQuery query, List<FilterOption> filterOptions) {
51+
this.query = query;
5052
this.filterOptions = filterOptions;
5153
}
5254

53-
public String getQuery() {
55+
public FilterQuery getQuery() {
5456
return query;
5557
}
5658

57-
public void setQuery(String query) {
58-
this.query = query;
59-
}
60-
6159
public Map<String, Object> getSortOptions() {
6260
return sortOptions;
6361
}
@@ -70,25 +68,22 @@ public void setSortOptions(Map<String, Object> sortOptions) {
7068
public class User {
7169

7270
private List<FilterOption> filterOptions;
73-
private String query;
71+
private FilterQuery query;
7472
private Map<String, Object> sortOptions;
7573

7674
public List<FilterOption> getFilterOptions() {
7775
return filterOptions;
7876
}
7977

80-
public void setFilterOptions(List<FilterOption> filterOptions) {
78+
public void setFilterOptions(FilterQuery query, List<FilterOption> filterOptions) {
8179
this.filterOptions = filterOptions;
80+
this.query = query;
8281
}
8382

84-
public String getQuery() {
83+
public FilterQuery getQuery() {
8584
return query;
8685
}
8786

88-
public void setQuery(String query) {
89-
this.query = query;
90-
}
91-
9287
public Map<String, Object> getSortOptions() {
9388
return sortOptions;
9489
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.getstream.sdk.chat.model.enums;
2+
3+
public enum FilterQuery {
4+
equal("$eq"),
5+
greater("$gt"),
6+
greaterOrEqual("$gte"),
7+
less("$lt"),
8+
lessOrEqual("$lte"),
9+
notEqual("$ne"),
10+
in("$in"),
11+
nin("$nin"),
12+
and("$and"),
13+
or("$or"),
14+
nor("$nor");
15+
16+
private String value;
17+
18+
FilterQuery(final String value) {
19+
this.value = value;
20+
}
21+
22+
public String get() {
23+
return value;
24+
}
25+
26+
@Override
27+
public String toString() {
28+
return this.get();
29+
}
30+
}

‎library/src/main/java/com/getstream/sdk/chat/view/activity/ChatActivity.java‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,6 @@ public void onStop() {
144144
stopTypingClearRepeatingTask();
145145
}
146146

147-
148-
149147
@Override
150148
public void onActivityResult(int requestCode, int resultCode, Intent data) {
151149
if (resultCode == RESULT_OK) {
@@ -576,6 +574,7 @@ void stopTypingStopRepeatingTask() {
576574
stopTyping();
577575
stopTyingEventHandler.removeCallbacks(runnableTypingStop);
578576
}
577+
579578
/**
580579
* clean - Cleans the channel state and fires stop typing if needed
581580
*/

‎library/src/main/java/com/getstream/sdk/chat/view/activity/UsersActivity.java‎

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.getstream.sdk.chat.model.ModelType;
2929
import com.getstream.sdk.chat.model.User;
3030
import com.getstream.sdk.chat.model.channel.Channel;
31+
import com.getstream.sdk.chat.model.enums.FilterQuery;
3132
import com.getstream.sdk.chat.rest.apimodel.request.ChannelDetailRequest;
3233
import com.getstream.sdk.chat.rest.apimodel.response.ChannelResponse;
3334
import com.getstream.sdk.chat.rest.apimodel.response.GetUsersResponse;
@@ -326,18 +327,42 @@ private JSONObject getPayload() {
326327
if (Global.component.user.getFilterOptions() != null)
327328
if (Global.component.user.getFilterOptions().size() == 1){
328329
FilterOption filterOption = Global.component.user.getFilterOptions().get(0);
329-
filter_conditions.put(filterOption.getKey(), filterOption.getValue());
330+
Map<FilterQuery, Object> mapFilterValue = (Map<FilterQuery, Object>) filterOption.getValue();
331+
332+
Map<String, Object> mapFilterValue_ = new HashMap<>();
333+
Set keys = mapFilterValue.keySet();
334+
for(Object key: keys){
335+
mapFilterValue_.put(((FilterQuery)key).get(),mapFilterValue.get(key));
336+
}
337+
filter_conditions.put(filterOption.getKey(), mapFilterValue_);
330338
}else{
331-
if (!TextUtils.isEmpty(Global.component.user.getQuery())){
332-
List<Map<String,Object>> filterOptions = new ArrayList<>();
333-
for (FilterOption filterOption : Global.component.user.getFilterOptions()){
334-
Map<String, Object> map = new HashMap<>();
335-
map.put(filterOption.getKey(),filterOption.getValue());
336-
filterOptions.add(map);
339+
if (Global.component.user.getQuery() != null) {
340+
341+
List<Map<String, Object>> filterOptions = new ArrayList<>();
342+
343+
for (FilterOption filterOption : Global.component.user.getFilterOptions()) {
344+
// Convert from FilterQuery to String
345+
Log.d(TAG,"FilterOption Value: " + filterOption.getValue());
346+
if (filterOption.getValue().getClass().equals(String.class)){
347+
Map<String, Object> map = new HashMap<>();
348+
map.put(filterOption.getKey(), filterOption.getValue());
349+
filterOptions.add(map);
350+
}else{
351+
Map<FilterQuery, Object> mapFilterValue = (Map<FilterQuery, Object>) filterOption.getValue();
352+
Map<String, Object> mapFilterValue_ = new HashMap<>();
353+
Set keys = mapFilterValue.keySet();
354+
for(Object key: keys){
355+
mapFilterValue_.put(((FilterQuery)key).get(),mapFilterValue.get(key));
356+
}
357+
Map<String, Object> map = new HashMap<>();
358+
map.put(filterOption.getKey(), mapFilterValue_);
359+
filterOptions.add(map);
360+
}
361+
337362
}
338-
filter_conditions.put(Global.component.user.getQuery(), filterOptions);
339-
}else {
340-
Utils.showMessage(this,"You must set filter query!");
363+
filter_conditions.put(Global.component.user.getQuery().get(), filterOptions);
364+
} else {
365+
Utils.showMessage(this, "You must set filter query!");
341366
}
342367
}
343368

‎library/src/main/java/com/getstream/sdk/chat/view/fragment/ChannelListFragment.java‎

Lines changed: 43 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import com.getstream.sdk.chat.model.ModelType;
3939
import com.getstream.sdk.chat.model.channel.Channel;
4040
import com.getstream.sdk.chat.model.channel.Event;
41+
import com.getstream.sdk.chat.model.enums.FilterQuery;
4142
import com.getstream.sdk.chat.rest.Parser;
4243
import com.getstream.sdk.chat.rest.apimodel.request.AddDeviceRequest;
4344
import com.getstream.sdk.chat.rest.apimodel.request.ChannelDetailRequest;
@@ -66,6 +67,7 @@
6667
import java.util.HashMap;
6768
import java.util.List;
6869
import java.util.Map;
70+
import java.util.Set;
6971

7072
public class ChannelListFragment extends Fragment implements WSResponseHandler {
7173

@@ -88,7 +90,8 @@ public static ChannelListFragment newInstance() {
8890
}
8991

9092

91-
public ChannelListFragment(){ }
93+
public ChannelListFragment() {
94+
}
9295

9396
// region LifeCycle
9497
@Override
@@ -328,20 +331,46 @@ private JSONObject getPayload() {
328331

329332
// Filter option
330333
filter_conditions.put("type", "messaging");
331-
if (component.channel.getFilterOptions().size() == 1){
334+
if (component.channel.getFilterOptions().size() == 1) {
332335
FilterOption filterOption = component.channel.getFilterOptions().get(0);
333-
filter_conditions.put(filterOption.getKey(), filterOption.getValue());
334-
}else{
335-
if (!TextUtils.isEmpty(component.channel.getQuery())){
336-
List<Map<String,Object>> filterOptions = new ArrayList<>();
337-
for (FilterOption filterOption : component.channel.getFilterOptions()){
338-
Map<String, Object> map = new HashMap<>();
339-
map.put(filterOption.getKey(),filterOption.getValue());
340-
filterOptions.add(map);
336+
337+
// Convert from FilterQuery to String
338+
Log.d(TAG,"FilterOption Value: " + filterOption.getValue());
339+
Map<FilterQuery, Object> mapFilterValue = (Map<FilterQuery, Object>) filterOption.getValue();
340+
341+
Map<String, Object> mapFilterValue_ = new HashMap<>();
342+
Set keys = mapFilterValue.keySet();
343+
for(Object key: keys){
344+
mapFilterValue_.put(((FilterQuery)key).get(),mapFilterValue.get(key));
345+
}
346+
347+
filter_conditions.put(filterOption.getKey(), mapFilterValue_);
348+
} else {
349+
if (component.channel.getQuery() != null) {
350+
351+
List<Map<String, Object>> filterOptions = new ArrayList<>();
352+
353+
for (FilterOption filterOption : component.channel.getFilterOptions()) {
354+
// Convert from FilterQuery to String
355+
if (filterOption.getValue().getClass().equals(String.class)){
356+
Map<String, Object> map = new HashMap<>();
357+
map.put(filterOption.getKey(), filterOption.getValue());
358+
filterOptions.add(map);
359+
}else{
360+
Map<FilterQuery, Object> mapFilterValue = (Map<FilterQuery, Object>) filterOption.getValue();
361+
Map<String, Object> mapFilterValue_ = new HashMap<>();
362+
Set keys = mapFilterValue.keySet();
363+
for(Object key: keys){
364+
mapFilterValue_.put(((FilterQuery)key).get(),mapFilterValue.get(key));
365+
}
366+
Map<String, Object> map = new HashMap<>();
367+
map.put(filterOption.getKey(), mapFilterValue_);
368+
filterOptions.add(map);
369+
}
341370
}
342-
filter_conditions.put(component.channel.getQuery(), filterOptions);
343-
}else {
344-
Utils.showMessage(getActivity(),"You must set filter query!");
371+
filter_conditions.put(component.channel.getQuery().get(), filterOptions);
372+
} else {
373+
Utils.showMessage(getActivity(), "You must set filter query!");
345374
}
346375
}
347376

@@ -356,7 +385,7 @@ private JSONObject getPayload() {
356385
}
357386

358387
payload.put("filter_conditions", filter_conditions);
359-
388+
Log.d(TAG,"filter_conditions: " + payload);
360389

361390
payload.put("message_limit", Constant.CHANNEL_MESSAGE_LIMIT);
362391
if (Global.channels.size() > 0)

0 commit comments

Comments
 (0)