From 91ffcf063731774dd948920ab034a57713180fe7 Mon Sep 17 00:00:00 2001 From: denizk0461 Date: Thu, 11 May 2023 15:13:43 +0200 Subject: [PATCH] CanteenFragment.kt now refreshes automatically on initial launch --- .../weserplaner/fragment/CanteenFragment.kt | 20 +++++++++++-------- .../weserplaner/model/SettingsPreferences.kt | 5 +++++ .../weserplaner/viewmodel/CanteenViewModel.kt | 7 +++++++ 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/denizk0461/weserplaner/fragment/CanteenFragment.kt b/app/src/main/java/com/denizk0461/weserplaner/fragment/CanteenFragment.kt index 583f195..30fa658 100644 --- a/app/src/main/java/com/denizk0461/weserplaner/fragment/CanteenFragment.kt +++ b/app/src/main/java/com/denizk0461/weserplaner/fragment/CanteenFragment.kt @@ -69,14 +69,6 @@ class CanteenFragment : AppFragment() { )) } - // Create badge -// val badge = BadgeDrawable.create(context) -//// badge.isVisible = true -// badge.number = 1 -// badge.badgeGravity = BadgeDrawable.TOP_END -// // Attach badge to button -// BadgeUtils.attachBadgeDrawable(badge, binding.buttonNotifications, binding.buttonNotificationsBadgeContainer) - // Assign a preference value to every button to filter for dietary preferences val chipMap = mapOf( binding.chipPrefFair to DietaryPreferences.WELFARE, @@ -195,6 +187,18 @@ class CanteenFragment : AppFragment() { binding.swipeRefreshLayout.setOnRefreshListener { refresh() } + + // Check if the user is opening the canteen fragment for the first time + if (!viewModel.preferenceHasOpenedCanteen) { + // Show that a refresh is in progress + binding.swipeRefreshLayout.isRefreshing = true + + // Refresh to fetch the first items and avoid showing an empty list + refresh() + + // Save that the canteen has been opened before + viewModel.preferenceHasOpenedCanteen = true + } } // Invalidate the view binding diff --git a/app/src/main/java/com/denizk0461/weserplaner/model/SettingsPreferences.kt b/app/src/main/java/com/denizk0461/weserplaner/model/SettingsPreferences.kt index 581430c..bead8d2 100644 --- a/app/src/main/java/com/denizk0461/weserplaner/model/SettingsPreferences.kt +++ b/app/src/main/java/com/denizk0461/weserplaner/model/SettingsPreferences.kt @@ -58,5 +58,10 @@ enum class SettingsPreferences(val key: String) { * The canteen the user has picked. */ CANTEEN("setting_canteen"), + + /** + * Whether the user has opened the canteen fragment before. + */ + HAS_OPENED_CANTEEN("has_opened_canteen"), ; } \ No newline at end of file diff --git a/app/src/main/java/com/denizk0461/weserplaner/viewmodel/CanteenViewModel.kt b/app/src/main/java/com/denizk0461/weserplaner/viewmodel/CanteenViewModel.kt index b317de3..d612e64 100644 --- a/app/src/main/java/com/denizk0461/weserplaner/viewmodel/CanteenViewModel.kt +++ b/app/src/main/java/com/denizk0461/weserplaner/viewmodel/CanteenViewModel.kt @@ -70,4 +70,11 @@ class CanteenViewModel(app: Application) : AppViewModel(app) { var preferenceCanteen: Int get() = repo.getIntPreference(SettingsPreferences.CANTEEN) set(newValue) { repo.setPreference(SettingsPreferences.CANTEEN, newValue) } + + /** + * This value determines whether the user has opened the canteen fragment before. + */ + var preferenceHasOpenedCanteen: Boolean + get() = repo.getBooleanPreference(SettingsPreferences.HAS_OPENED_CANTEEN) + set(newValue) { repo.setPreference(SettingsPreferences.HAS_OPENED_CANTEEN, newValue) } } \ No newline at end of file