Skip to content

Commit 9e3cd5a

Browse files
committed
Fix crash on empty search string
1 parent ed57772 commit 9e3cd5a

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

Hyperrail/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ apply plugin: 'com.android.application'
88
apply plugin: 'com.google.gms.google-services'
99
apply plugin: 'com.google.firebase.crashlytics'
1010

11-
def VERSION_CODE = 58
12-
def VERSION_NAME = '1.3.4'
11+
def VERSION_CODE = 60
12+
def VERSION_NAME = '1.4.1'
1313

1414
android {
1515
compileSdk 34

Hyperrail/src/main/java/be/hyperrail/android/adapter/MultilangAutocompleteAdapter.java

+16-4
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@
1212
import androidx.collection.ArraySet;
1313
import androidx.fragment.app.FragmentActivity;
1414

15+
import com.google.firebase.crashlytics.FirebaseCrashlytics;
16+
1517
import java.util.ArrayList;
18+
import java.util.Arrays;
1619
import java.util.Collection;
1720
import java.util.Collections;
1821
import java.util.Comparator;
@@ -48,11 +51,16 @@ public MultilangFilterResults(List<StopLocation> results) {
4851

4952
@Override
5053
protected FilterResults performFiltering(CharSequence constraint) {
51-
constraint = constraint.toString().toLowerCase();
5254
List<StopLocation> list = new ArrayList<>();
53-
for (StopLocation s : stations) {
54-
if (stationNameContains(constraint, s)) {
55-
list.add(s);
55+
if (constraint == null){ // no filtering
56+
constraint = ""; // allows using the same sorter a little later
57+
list.addAll(Arrays.asList(stations));
58+
} else {
59+
constraint = constraint.toString().toLowerCase();
60+
for (StopLocation s : stations) {
61+
if (stationNameContains(constraint, s)) {
62+
list.add(s);
63+
}
5664
}
5765
}
5866
Collections.sort(list, new AutocompleteSortComparator(constraint));
@@ -80,6 +88,10 @@ protected void publishResults(CharSequence constraint, FilterResults results) {
8088
}
8189

8290
private void updateVisibleStops(List<StopLocation> stops) {
91+
if (stops == null){
92+
FirebaseCrashlytics.getInstance().recordException(new IllegalArgumentException("Tried to set null in MultilangAutocompleteAdapter!"));
93+
stops = new ArrayList<>(); // Never allow setting null, even when there are issues with the autocomplete
94+
}
8395
this.visibleStops = stops;
8496
for (DataSetObserver observer : observers) {
8597
observer.onChanged();

0 commit comments

Comments
 (0)