@@ -66,9 +66,13 @@ public void loadWithFilter(int limit, @Nullable ReadableMap filter, Promise prom
6666 boolean nullFilter = filter == null ;
6767 String minTimestamp = !nullFilter && filter .hasKey ("minTimestamp" ) ? filter .getString ("minTimestamp" ) : "0" ;
6868 String maxTimestamp = !nullFilter && filter .hasKey ("maxTimestamp" ) ? filter .getString ("maxTimestamp" ) : "-1" ;
69+
70+ String types = !nullFilter && filter .hasKey ("types" ) ? filter .getString ("types" ) : "[]" ;
71+ JSONArray typesArray = new JSONArray (types );
72+ Set <String > typeSet = new HashSet <>(Arrays .asList (toStringArray (typesArray )));
73+
6974 String phoneNumbers = !nullFilter && filter .hasKey ("phoneNumbers" ) ? filter .getString ("phoneNumbers" ) : "[]" ;
7075 JSONArray phoneNumbersArray = new JSONArray (phoneNumbers );
71-
7276 Set <String > phoneNumberSet = new HashSet <>(Arrays .asList (toStringArray (phoneNumbersArray )));
7377
7478 int callLogCount = 0 ;
@@ -97,9 +101,10 @@ public void loadWithFilter(int limit, @Nullable ReadableMap filter, Promise prom
97101 String type = this .resolveCallType (cursor .getInt (TYPE_COLUMN_INDEX ));
98102
99103 boolean passesPhoneFilter = phoneNumberSet == null || phoneNumberSet .isEmpty () || phoneNumberSet .contains (phoneNumber );
104+ boolean passesTypeFilter = typeSet == null || typeSet .isEmpty () || typeSet .contains (type );
100105 boolean passesMinTimestampFilter = minTimestamp == null || minTimestamp .equals ("0" ) || Long .parseLong (timestampStr ) >= Long .parseLong (minTimestamp );
101106 boolean passesMaxTimestampFilter = maxTimestamp == null || maxTimestamp .equals ("-1" ) || Long .parseLong (timestampStr ) <= Long .parseLong (maxTimestamp );
102- boolean passesFilter = passesPhoneFilter && passesMinTimestampFilter && passesMaxTimestampFilter ;
107+ boolean passesFilter = passesPhoneFilter && passesTypeFilter && passesMinTimestampFilter && passesMaxTimestampFilter ;
103108
104109 if (passesFilter ) {
105110 WritableMap callLog = Arguments .createMap ();
@@ -142,6 +147,14 @@ private String resolveCallType(int callTypeCode) {
142147 return "INCOMING" ;
143148 case Calls .MISSED_TYPE :
144149 return "MISSED" ;
150+ case Calls .VOICEMAIL_TYPE :
151+ return "VOICEMAIL" ;
152+ case Calls .REJECTED_TYPE :
153+ return "REJECTED" ;
154+ case Calls .BLOCKED_TYPE :
155+ return "BLOCKED" ;
156+ case Calls .ANSWERED_EXTERNALLY_TYPE :
157+ return "ANSWERED_EXTERNALLY" ;
145158 default :
146159 return "UNKNOWN" ;
147160 }
0 commit comments