11package net.squanchy.schedule
22
33import android.content.Context
4- import android.support.design.widget.CoordinatorLayout
4+ import android.support.constraint.ConstraintLayout
55import android.support.design.widget.TabLayout
66import android.text.Spanned
77import android.util.AttributeSet
88import androidx.view.isVisible
9+ import arrow.core.Tuple3
910import io.reactivex.Observable
1011import io.reactivex.android.schedulers.AndroidSchedulers
1112import io.reactivex.disposables.CompositeDisposable
12- import io.reactivex.functions.BiFunction
13+ import io.reactivex.functions.Function3
1314import io.reactivex.schedulers.Schedulers
1415import kotlinx.android.synthetic.main.view_page_schedule.view.*
1516import net.squanchy.R
@@ -21,6 +22,7 @@ import net.squanchy.remoteconfig.FeatureFlags
2122import net.squanchy.schedule.domain.view.Event
2223import net.squanchy.schedule.domain.view.Schedule
2324import net.squanchy.schedule.view.ScheduleViewPagerAdapter
25+ import net.squanchy.settings.preferences.showFavoritesInScheduleObservable
2426import net.squanchy.support.system.CurrentTime
2527import net.squanchy.support.text.applyTypeface
2628import net.squanchy.support.text.getFontFor
@@ -33,7 +35,7 @@ class SchedulePageView @JvmOverloads constructor(
3335 context : Context ,
3436 attrs : AttributeSet ,
3537 defStyleAttr : Int = 0
36- ) : CoordinatorLayout (context, attrs, defStyleAttr), Loadable {
38+ ) : ConstraintLayout (context, attrs, defStyleAttr), Loadable {
3739
3840 private val viewPagerAdapter: ScheduleViewPagerAdapter
3941 private val service: ScheduleService
@@ -57,7 +59,7 @@ class SchedulePageView @JvmOverloads constructor(
5759 override fun onFinishInflate () {
5860 super .onFinishInflate()
5961
60- tabstrip.setupWithViewPager(viewpager )
62+ tabstrip.setupWithViewPager(viewPager )
6163 hackToApplyTypefaces(tabstrip)
6264
6365 setupToolbar()
@@ -89,38 +91,41 @@ class SchedulePageView @JvmOverloads constructor(
8991
9092 override fun startLoading () {
9193 subscriptions.add(
92- Observable .combineLatest(service.schedule(), featureFlags.showEventRoomInSchedule.toObservable(), combineInPair())
94+ Observable .combineLatest(
95+ service.schedule(),
96+ featureFlags.showEventRoomInSchedule.toObservable(),
97+ showFavoritesInScheduleObservable(context),
98+ Function3 <Schedule , Boolean , Boolean , Tuple3 <Schedule , Boolean , Boolean >>(::Tuple3 )
99+ )
93100 .subscribeOn(Schedulers .io())
94101 .observeOn(AndroidSchedulers .mainThread())
95102 .subscribe(
96- { updateWith(it.first , it.second , ::onEventClicked) },
103+ { updateWith(it.a , it.b, it.c , ::onEventClicked) },
97104 Timber ::e
98105 )
99106 )
100107 }
101108
102- private fun combineInPair (): BiFunction <Schedule , Boolean , Pair <Schedule , Boolean >> = BiFunction (::Pair )
103-
104- private fun updateWith (schedule : Schedule , showRoom : Boolean , onEventClicked : (Event ) -> Unit ) {
105- progressbar.isVisible = false
109+ private fun updateWith (schedule : Schedule , showRoom : Boolean , showFavorites : Boolean , onEventClicked : (Event ) -> Unit ) {
110+ progressBar.isVisible = false
106111
107112 if (schedule.isEmpty) {
108- viewpager .isVisible = false
113+ viewPager .isVisible = false
109114 tabstrip.isVisible = false
110115 emptyView.isVisible = true
111116 return
112117 }
113118
114- viewpager .isVisible = true
119+ viewPager .isVisible = true
115120 tabstrip.isVisible = true
116121 emptyView.isVisible = false
117122
118- viewPagerAdapter.updateWith(schedule.pages, showRoom, onEventClicked)
119- if (viewpager .adapter == null ) {
120- viewpager .adapter = viewPagerAdapter
123+ viewPagerAdapter.updateWith(schedule.pages, showRoom, showFavorites, onEventClicked)
124+ if (viewPager .adapter == null ) {
125+ viewPager .adapter = viewPagerAdapter
121126 }
122127
123- progressbar .isVisible = false
128+ progressBar .isVisible = false
124129 }
125130
126131 private fun onEventClicked (event : Event ) {
0 commit comments