Skip to content

Commit 0c51baa

Browse files
liveHarshitiamareebjamal
authored andcommitted
fix: Retain chip state and search results after re-selecting the chip (#1818) (#1828)
1 parent 6c32214 commit 0c51baa

File tree

2 files changed

+24
-69
lines changed

2 files changed

+24
-69
lines changed

app/src/main/java/org/fossasia/openevent/general/search/SearchResultsFragment.kt

Lines changed: 24 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import android.view.View
1010
import android.view.ViewGroup
1111
import android.widget.CompoundButton
1212
import androidx.core.content.ContextCompat
13-
import androidx.core.view.children
1413
import androidx.core.view.isVisible
1514
import androidx.fragment.app.Fragment
1615
import androidx.lifecycle.Observer
@@ -76,7 +75,7 @@ class SearchResultsFragment : Fragment(), CompoundButton.OnCheckedChangeListener
7675
rootView = inflater.inflate(R.layout.fragment_search_results, container, false)
7776
setPostponeSharedElementTransition()
7877

79-
setChips(eventDate, eventType)
78+
setChips()
8079
setToolbar(activity, getString(R.string.search_results))
8180
setHasOptionsMenu(true)
8281

@@ -125,17 +124,6 @@ class SearchResultsFragment : Fragment(), CompoundButton.OnCheckedChangeListener
125124
rootView.searchRootLayout.longSnackbar(it)
126125
})
127126

128-
searchViewModel.chipClickable
129-
.nonNull()
130-
.observe(this, Observer {
131-
rootView.chipGroup.children.forEach { chip ->
132-
if (chip is Chip) {
133-
chip.isClickable = it
134-
if (chip.isChecked) chip.isClickable = false
135-
}
136-
}
137-
})
138-
139127
rootView.retry.setOnClickListener {
140128
performSearch()
141129
}
@@ -159,7 +147,6 @@ class SearchResultsFragment : Fragment(), CompoundButton.OnCheckedChangeListener
159147
date != getString(R.string.anytime) && type != getString(R.string.anything) -> {
160148
addChips(date, true)
161149
addChips(type, true)
162-
addChips(getString(R.string.clear_all), false)
163150
}
164151
date != getString(R.string.anytime) && type == getString(R.string.anything) -> {
165152
addChips(date, true)
@@ -241,7 +228,6 @@ class SearchResultsFragment : Fragment(), CompoundButton.OnCheckedChangeListener
241228
val date = eventDate
242229
val freeEvents = safeArgs.freeEvents
243230
val sortBy = safeArgs.sort
244-
searchViewModel.setChipNotClickable()
245231
searchViewModel.searchEvent = query
246232
searchViewModel.loadEvents(location, date, type, freeEvents, sortBy)
247233
}
@@ -282,46 +268,31 @@ class SearchResultsFragment : Fragment(), CompoundButton.OnCheckedChangeListener
282268
}
283269

284270
override fun onCheckedChanged(buttonView: CompoundButton?, isChecked: Boolean) {
285-
if (isChecked) {
286-
if (buttonView?.text == getString(R.string.clear_all)) {
287-
searchViewModel.savedTime = null
288-
searchViewModel.savedType = null
289-
eventDate = getString(R.string.anytime)
290-
eventType = getString(R.string.anything)
291-
rootView.noSearchResults.isVisible = false
292-
favoriteEventsRecyclerAdapter.submitList(null)
293-
searchViewModel.clearEvents()
294-
searchViewModel.clearTimeAndType()
295-
if (searchViewModel.isConnected()) performSearch()
296-
else showNoInternetError(true)
297-
setChips()
271+
days.forEach {
272+
if (it == buttonView?.text) {
273+
searchViewModel.savedTime = if (isChecked) it else null
274+
eventDate = if (isChecked) it else getString(R.string.anytime)
275+
setChips(date = it)
276+
refreshEvents()
277+
return@forEach
298278
}
299-
days.forEach {
300-
if (it == buttonView?.text) {
301-
searchViewModel.savedTime = it
302-
eventDate = it
303-
setChips(date = it)
304-
rootView.noSearchResults.isVisible = false
305-
favoriteEventsRecyclerAdapter.submitList(null)
306-
searchViewModel.clearEvents()
307-
if (searchViewModel.isConnected()) performSearch()
308-
else showNoInternetError(true)
309-
return@forEach
310-
}
311-
}
312-
eventTypesList?.forEach {
313-
if (it.name == buttonView?.text) {
314-
searchViewModel.savedType = it.name
315-
eventType = it.name
316-
setChips(type = it.name)
317-
rootView.noSearchResults.isVisible = false
318-
favoriteEventsRecyclerAdapter.submitList(null)
319-
searchViewModel.clearEvents()
320-
if (searchViewModel.isConnected()) performSearch()
321-
else showNoInternetError(true)
322-
return@forEach
323-
}
279+
}
280+
eventTypesList?.forEach {
281+
if (it.name == buttonView?.text) {
282+
searchViewModel.savedType = if (isChecked) it.name else null
283+
eventType = if (isChecked) it.name else getString(R.string.anything)
284+
refreshEvents()
285+
return@forEach
324286
}
325287
}
326288
}
289+
290+
private fun refreshEvents() {
291+
setChips()
292+
rootView.noSearchResults.isVisible = false
293+
favoriteEventsRecyclerAdapter.submitList(null)
294+
searchViewModel.clearEvents()
295+
if (searchViewModel.isConnected()) performSearch()
296+
else showNoInternetError(true)
297+
}
327298
}

app/src/main/java/org/fossasia/openevent/general/search/SearchViewModel.kt

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,6 @@ class SearchViewModel(
4141
private val mutableError = SingleLiveEvent<String>()
4242
val error: LiveData<String> = mutableError
4343
val connection: LiveData<Boolean> = mutableConnectionLiveData
44-
private val mutableChipClickable = MutableLiveData<Boolean>()
45-
val chipClickable: LiveData<Boolean> = mutableChipClickable
4644
var searchEvent: String? = null
4745
var savedLocation: String? = null
4846
var savedType: String? = null
@@ -78,13 +76,8 @@ class SearchViewModel(
7876
savedTime = preference.getString(SAVED_TIME)
7977
}
8078

81-
fun setChipNotClickable() {
82-
mutableChipClickable.value = false
83-
}
84-
8579
fun loadEvents(location: String, time: String, type: String, freeEvents: Boolean, sortBy: String) {
8680
if (mutableEvents.value != null) {
87-
mutableChipClickable.value = true
8881
return
8982
}
9083
if (!isConnected()) return
@@ -316,7 +309,6 @@ class SearchViewModel(
316309
.distinctUntilChanged()
317310
.doOnSubscribe {
318311
mutableShowShimmerResults.value = true
319-
mutableChipClickable.value = false
320312
}.doFinally {
321313
stopLoaders()
322314
}.subscribe({
@@ -331,7 +323,6 @@ class SearchViewModel(
331323

332324
private fun stopLoaders() {
333325
mutableShowShimmerResults.value = false
334-
mutableChipClickable.value = true
335326
}
336327

337328
fun setFavorite(eventId: Long, favorite: Boolean) {
@@ -351,13 +342,6 @@ class SearchViewModel(
351342
mutableEvents.value = null
352343
}
353344

354-
fun clearTimeAndType() {
355-
preference.apply {
356-
putString(SAVED_TYPE, "Anything")
357-
putString(SAVED_TIME, "Anytime")
358-
}
359-
}
360-
361345
override fun onCleared() {
362346
super.onCleared()
363347
compositeDisposable.clear()

0 commit comments

Comments
 (0)