Fixed a bug that would cause the tab for a day without canteen offers to not be shown, causing the offers for the next days to be shifted over, thus not showing the offers for the last day that's available online. I know I didn't explain that very well, but it's fixed now anyway, soo (: also made some minor visual adjustments to margins and colours

This commit is contained in:
denizk0461
2023-04-20 21:35:09 +02:00
parent 07a2902367
commit b39aa1f003
11 changed files with 88 additions and 64 deletions
@@ -10,10 +10,7 @@ import androidx.fragment.app.viewModels
import androidx.lifecycle.LiveData
import com.denizk0461.studip.adapter.CanteenOfferPageAdapter
import com.denizk0461.studip.databinding.FragmentCanteenBinding
import com.denizk0461.studip.model.CanteenOffer
import com.denizk0461.studip.model.CanteenOfferGroup
import com.denizk0461.studip.model.CanteenOfferGroupElement
import com.denizk0461.studip.model.DietaryPreferences
import com.denizk0461.studip.model.*
import com.denizk0461.studip.viewmodel.CanteenViewModel
import com.google.android.material.tabs.TabLayoutMediator
@@ -25,8 +22,6 @@ class CanteenFragment : Fragment() {
// onDestroyView.
private val binding get() = _binding!!
private var dates = listOf<String>()
private lateinit var liveData: LiveData<List<CanteenOffer>>
private lateinit var viewPagerAdapter: CanteenOfferPageAdapter
@@ -77,7 +72,7 @@ class CanteenFragment : Fragment() {
viewPagerAdapter = CanteenOfferPageAdapter(listOf(), 0, getPrefRegex())
binding.viewPager.adapter = viewPagerAdapter
createTabLayoutMediator()
createTabLayoutMediator(listOf())
liveData = viewModel.allOffers
liveData.observe(viewLifecycleOwner) { offers ->
@@ -85,12 +80,13 @@ class CanteenFragment : Fragment() {
val groupedElements = offers.groupElements().distinct()
dates = groupedElements.map { it.date }.distinct()
createTabLayoutMediator()
// dates = groupedElements.map { it.date }.distinct()
val newDates = viewModel.getDates()
createTabLayoutMediator(newDates)
this.dateSize = dates.size
dateSize = newDates.size
viewPagerAdapter.setNewItems(groupedElements, dates.size)
viewPagerAdapter.setNewItems(groupedElements, dateSize)
// TODO this must be changed. if an exception is raised, then this will not fire
binding.swipeRefreshLayout.isRefreshing = false
@@ -105,10 +101,10 @@ class CanteenFragment : Fragment() {
}
}
private fun createTabLayoutMediator() {
private fun createTabLayoutMediator(dates: List<OfferDate>) {
if (dates.isNotEmpty()) {
TabLayoutMediator(binding.dayTabLayout, binding.viewPager) { tab, position ->
tab.text = dates[position]
tab.text = dates[position].date
}.attach()
}
}
@@ -127,7 +123,7 @@ class CanteenFragment : Fragment() {
viewModel.getPreference(pref)
private fun getPrefRegex(): Regex {
val prefs = viewModel.getDietaryPrefs().deconstruct().replace('f', '.')
val prefs = viewModel.getDietaryPrefs().deconstruct()//.replace('f', '.')
val template = ".........."