Skip to content
This repository was archived by the owner on Feb 17, 2020. It is now read-only.

Commit bc2368c

Browse files
authored
Merge pull request #532 from squanchy-dev/fix_search_crashing
Fix search crashing — hotfix
2 parents 33f98f4 + 0061ade commit bc2368c

3 files changed

Lines changed: 11 additions & 13 deletions

File tree

app/src/main/java/net/squanchy/search/SearchActivity.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,8 @@ class SearchActivity : AppCompatActivity(), SearchRecyclerView.OnSearchResultCli
7272
searchTextWatcher = SearchTextWatcher(querySubject)
7373
searchField.addTextChangedListener(searchTextWatcher)
7474

75-
val searchSubscription = querySubject.throttleLast(QUERY_DEBOUNCE_TIMEOUT, TimeUnit.MILLISECONDS)
75+
val searchSubscription = querySubject.distinctUntilChanged()
76+
.debounce(QUERY_DEBOUNCE_TIMEOUT, TimeUnit.MILLISECONDS)
7677
.doOnNext(::updateSearchActionIcon)
7778
.startWith(getInitialQuery())
7879
.flatMap(searchService::find)

app/src/main/java/net/squanchy/search/SearchService.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,16 @@ package net.squanchy.search
33
import io.reactivex.Observable
44
import io.reactivex.functions.Function3
55
import net.squanchy.schedule.domain.view.Event
6+
import net.squanchy.search.SearchListElement.AlgoliaLogo
7+
import net.squanchy.search.SearchListElement.EventElement
8+
import net.squanchy.search.SearchListElement.EventHeader
9+
import net.squanchy.search.SearchListElement.SpeakerElement
10+
import net.squanchy.search.SearchListElement.SpeakerHeader
611
import net.squanchy.search.algolia.AlgoliaSearchEngine
712
import net.squanchy.search.algolia.model.AlgoliaSearchResult
8-
import net.squanchy.search.algolia.model.AlgoliaSearchResult.QueryNotLongEnough
913
import net.squanchy.search.algolia.model.AlgoliaSearchResult.ErrorSearching
1014
import net.squanchy.search.algolia.model.AlgoliaSearchResult.Matches
11-
import net.squanchy.search.SearchListElement.SpeakerHeader
12-
import net.squanchy.search.SearchListElement.EventHeader
13-
import net.squanchy.search.SearchListElement.SpeakerElement
14-
import net.squanchy.search.SearchListElement.AlgoliaLogo
15-
import net.squanchy.search.SearchListElement.EventElement
15+
import net.squanchy.search.algolia.model.AlgoliaSearchResult.QueryNotLongEnough
1616
import net.squanchy.service.repository.AuthService
1717
import net.squanchy.service.repository.EventRepository
1818
import net.squanchy.service.repository.SpeakerRepository

app/src/main/java/net/squanchy/search/view/SearchRecyclerView.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import net.squanchy.schedule.domain.view.Event
1212
import net.squanchy.search.SearchResult
1313
import net.squanchy.speaker.domain.view.Speaker
1414
import net.squanchy.support.unwrapToActivityContext
15+
import net.squanchy.support.view.setAdapterIfNone
1516
import net.squanchy.support.widget.CardLayout
1617

1718
class SearchRecyclerView @JvmOverloads constructor(
@@ -33,20 +34,16 @@ class SearchRecyclerView @JvmOverloads constructor(
3334
addItemDecoration(CardOnlySpacingItemDecorator(horizontalSpacing, verticalSpacing))
3435

3536
adapter = SearchAdapter(context.unwrapToActivityContext())
36-
setAdapter(adapter)
3737
clipToPadding = false
3838
}
3939

4040
fun updateWith(searchResult: SearchResult.Success, listener: OnSearchResultClickListener) {
41-
if (getAdapter() == null) {
42-
super.setAdapter(adapter)
43-
}
41+
setAdapterIfNone(adapter)
4442

4543
adapter.updateWith(searchResult, listener)
4644

47-
val layoutManager = layoutManager as GridLayoutManager
4845
val spanSizeLookup = adapter.createSpanSizeLookup(COLUMNS_COUNT)
49-
layoutManager.spanSizeLookup = spanSizeLookup
46+
(layoutManager as GridLayoutManager).spanSizeLookup = spanSizeLookup
5047
}
5148

5249
interface OnSearchResultClickListener {

0 commit comments

Comments
 (0)