Skip to content

Commit 4561961

Browse files
fix: retain time and type values
1 parent 03f4e3a commit 4561961

File tree

9 files changed

+46
-28
lines changed

9 files changed

+46
-28
lines changed

app/src/main/java/org/fossasia/openevent/general/di/Modules.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ import org.fossasia.openevent.general.paypal.Paypal
5959
import org.fossasia.openevent.general.paypal.PaypalApi
6060
import org.fossasia.openevent.general.search.GeoLocationViewModel
6161
import org.fossasia.openevent.general.search.SearchLocationViewModel
62+
import org.fossasia.openevent.general.search.SearchTimeViewModel
6263
import org.fossasia.openevent.general.search.SearchViewModel
6364
import org.fossasia.openevent.general.search.LocationService
6465
import org.fossasia.openevent.general.search.SearchTypeViewModel
@@ -146,7 +147,8 @@ val viewModelModule = module {
146147
viewModel { SearchViewModel(get(), get(), get(), get()) }
147148
viewModel { AttendeeViewModel(get(), get(), get(), get(), get(), get(), get()) }
148149
viewModel { SearchLocationViewModel(get()) }
149-
viewModel { SearchTypeViewModel(get()) }
150+
viewModel { SearchTimeViewModel(get()) }
151+
viewModel { SearchTypeViewModel(get(), get()) }
150152
viewModel { TicketsViewModel(get(), get(), get(), get()) }
151153
viewModel { AboutEventViewModel(get(), get()) }
152154
viewModel { SocialLinksViewModel(get(), get()) }

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

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,6 @@ import org.fossasia.openevent.general.utils.Utils.setToolbar
3131

3232
class SearchFragment : Fragment() {
3333
private val searchViewModel by viewModel<SearchViewModel>()
34-
private val safeArgs: SearchFragmentArgs? by lazy {
35-
// When search fragment is opened using BottomNav, then fragment arguments are null
36-
// navArgs delegate throws an IllegalStateException when arguments are null, so we construct SearchFragmentArgs
37-
// from the arguments bundle
38-
arguments?.let { SearchFragmentArgs.fromBundle(it) }
39-
}
4034
private lateinit var rootView: View
4135
private lateinit var searchView: SearchView
4236

@@ -59,8 +53,8 @@ class SearchFragment : Fragment() {
5953
Navigation.findNavController(rootView).navigate(R.id.searchTimeFragment, bundle, getAnimSlide())
6054
}
6155
}
62-
63-
val time = safeArgs?.stringSavedDate
56+
searchViewModel.loadSavedTime()
57+
val time = searchViewModel.savedTime
6458
if (time.isNullOrBlank()) rootView.timeTextView.text = getString(R.string.anytime)
6559
else {
6660
try {
@@ -74,7 +68,8 @@ class SearchFragment : Fragment() {
7468
rootView.timeTextView.text = time
7569
}
7670
}
77-
val type = safeArgs?.stringSavedType
71+
searchViewModel.loadSavedType()
72+
val type = searchViewModel.savedType
7873
rootView.eventTypeTextView.text = if (type.isNullOrBlank()) getString(R.string.anything) else type
7974

8075
searchViewModel.loadSavedLocation()
@@ -129,8 +124,8 @@ class SearchFragment : Fragment() {
129124
SearchResultsFragmentArgs.Builder()
130125
.setQuery(query)
131126
.setLocation(rootView.locationTextView.text.toString().nullToEmpty())
132-
.setDate((safeArgs?.stringSavedDate ?: getString(R.string.anytime)).nullToEmpty())
133-
.setType((safeArgs?.stringSavedType ?: getString(R.string.anything)).nullToEmpty())
127+
.setDate((searchViewModel.savedTime ?: getString(R.string.anytime)).nullToEmpty())
128+
.setType((searchViewModel.savedType ?: getString(R.string.anything)).nullToEmpty())
134129
.build()
135130
.toBundle()
136131
.also { bundle ->

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ class SearchResultsFragment : Fragment() {
5656
scope = getOrCreateScope(Scopes.SEARCH_RESULTS_FRAGMENT.toString())
5757
)
5858

59-
6059
override fun onCreate(savedInstanceState: Bundle?) {
6160
super.onCreate(savedInstanceState)
6261
bindScope(getOrCreateScope(Scopes.SEARCH_RESULTS_FRAGMENT.toString()))
@@ -72,7 +71,7 @@ class SearchResultsFragment : Fragment() {
7271
list.forEach {
7372
val chip = Chip(context)
7473
chip.style { R.style.CustomChipChoice }
75-
chip.text =it.name
74+
chip.text = it.name
7675
chip.isClickable = true
7776
chip.isCheckable = true
7877
rootView.chipGroup.addView(chip)

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import org.fossasia.openevent.general.R
2020
import org.fossasia.openevent.general.event.EventUtils.getSimpleFormattedDate
2121
import java.util.Calendar
2222
import org.fossasia.openevent.general.utils.Utils.setToolbar
23+
import org.koin.androidx.viewmodel.ext.android.viewModel
2324

2425
const val ANYTIME = "Anytime"
2526
const val TODAY = "Today"
@@ -29,6 +30,8 @@ const val NEXT_MONTH = "In the next month"
2930

3031
class SearchTimeFragment : Fragment() {
3132
private val safeArgs: SearchTimeFragmentArgs by navArgs()
33+
private val searchTimeViewModel by viewModel<SearchTimeViewModel>()
34+
3235
private lateinit var rootView: View
3336

3437
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
@@ -78,9 +81,9 @@ class SearchTimeFragment : Fragment() {
7881
}
7982

8083
private fun redirectToSearch(time: String) {
81-
val args = SearchFragmentArgs.Builder().setStringSavedDate(time).build().toBundle()
84+
searchTimeViewModel.saveTime(time)
8285
val navOptions = NavOptions.Builder().setPopUpTo(R.id.eventsFragment, false).build()
83-
Navigation.findNavController(rootView).navigate(R.id.searchFragment, args, navOptions)
86+
Navigation.findNavController(rootView).navigate(R.id.searchFragment, null, navOptions)
8487
}
8588

8689
override fun onOptionsItemSelected(item: MenuItem): Boolean {
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package org.fossasia.openevent.general.search
2+
3+
import androidx.lifecycle.ViewModel
4+
import org.fossasia.openevent.general.data.Preference
5+
6+
const val SAVED_TIME = "TIME"
7+
8+
class SearchTimeViewModel(private val preference: Preference) : ViewModel() {
9+
10+
fun saveTime(query: String) {
11+
preference.putString(SAVED_TIME, query)
12+
}
13+
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ class SearchTypeFragment : Fragment() {
5050
}
5151

5252
private fun redirectToSearch(type: String) {
53-
val args = SearchFragmentArgs.Builder().setStringSavedType(type).build().toBundle()
53+
searchTypeViewModel.saveType(type)
5454
val navOptions = NavOptions.Builder().setPopUpTo(R.id.eventsFragment, false).build()
55-
Navigation.findNavController(rootView).navigate(R.id.searchFragment, args, navOptions)
55+
Navigation.findNavController(rootView).navigate(R.id.searchFragment, null, navOptions)
5656
}
5757
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,15 @@ import androidx.lifecycle.ViewModel
66
import io.reactivex.android.schedulers.AndroidSchedulers
77
import io.reactivex.disposables.CompositeDisposable
88
import io.reactivex.schedulers.Schedulers
9+
import org.fossasia.openevent.general.data.Preference
910
import org.fossasia.openevent.general.event.EventService
1011
import org.fossasia.openevent.general.event.types.EventType
1112
import timber.log.Timber
1213

14+
const val SAVED_TYPE = "TYPE"
15+
1316
class SearchTypeViewModel(
17+
private val preference: Preference,
1418
private val eventService: EventService
1519
) : ViewModel() {
1620

@@ -30,6 +34,10 @@ class SearchTypeViewModel(
3034
)
3135
}
3236

37+
fun saveType(query: String) {
38+
preference.putString(SAVED_TYPE, query)
39+
}
40+
3341
override fun onCleared() {
3442
super.onCleared()
3543
compositeDisposable.clear()

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ class SearchViewModel(
4444
val chipClickable: LiveData<Boolean> = mutableChipClickable
4545
var searchEvent: String? = null
4646
var savedLocation: String? = null
47+
var savedType: String? = null
48+
var savedTime: String? = null
4749
private val savedNextDate = getNextDate()
4850
private val savedNextToNextDate = getNextToNextDate()
4951
private val savedWeekendDate = getWeekendDate()
@@ -68,6 +70,12 @@ class SearchViewModel(
6870
fun loadSavedLocation() {
6971
savedLocation = preference.getString(SAVED_LOCATION)
7072
}
73+
fun loadSavedType() {
74+
savedType = preference.getString(SAVED_TYPE)
75+
}
76+
fun loadSavedTime() {
77+
savedTime = preference.getString(SAVED_TIME)
78+
}
7179

7280
fun loadEvents(location: String, time: String, type: String) {
7381
if (mutableEvents.value != null) {

app/src/main/res/navigation/navigation_graph.xml

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,6 @@
4242
android:name="org.fossasia.openevent.general.search.SearchFragment"
4343
android:label="SearchFragment"
4444
tools:layout="@layout/fragment_search" >
45-
<argument
46-
android:name="@string/saved_date"
47-
app:argType="string"
48-
android:defaultValue="@null"
49-
app:nullable="true"/>
50-
<argument
51-
android:name="@string/savedType"
52-
app:argType="string"
53-
android:defaultValue="@null"
54-
app:nullable="true"/>
5545
</fragment>
5646
<fragment
5747
android:id="@+id/searchLocationFragment"

0 commit comments

Comments
 (0)