From eb61c5ad26d8ee3ddb4817cbbf2156271532a212 Mon Sep 17 00:00:00 2001 From: Advay Monga Date: Mon, 21 Sep 2026 19:52:26 -0400 Subject: [PATCH] Fix first filter being wiped after a cached launch loadMenus() synced the session filters from profile prefs only after the "already loaded" guard. A launch served from the disk cache returned at that guard, so the sync ran on the next load instead, which is the one triggered by Apply Filters, and overwrote the filter the user had just picked. Sync before the cache check. Co-Authored-By: Claude Fable 5.1 --- umd-dining-app/ViewModels/HomeViewModel.swift | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/umd-dining-app/ViewModels/HomeViewModel.swift b/umd-dining-app/ViewModels/HomeViewModel.swift index 7476a81..b819ac4 100644 --- a/umd-dining-app/ViewModels/HomeViewModel.swift +++ b/umd-dining-app/ViewModels/HomeViewModel.swift @@ -228,6 +228,20 @@ class HomeViewModel { } func loadMenus() async { + // Sync temp filters from saved profile preferences (once per session). Must run before the + // cache check: a launch served from disk returns early below, and syncing on a later load + // would overwrite the filter the user just applied. + if !hasLoadedPrefs { + let prefs = UserPreferences.shared + filterVegetarian = prefs.vegetarian + filterVegan = prefs.vegan + filterHalal = prefs.halal + filterGlutenFree = prefs.glutenFree + filterDairyFree = prefs.dairyFree + filterAllergens = prefs.allergens + hasLoadedPrefs = true + } + // Try disk cache first (instant app launch) if allItems.isEmpty { loadFromDisk() @@ -245,18 +259,6 @@ class HomeViewModel { errorMessage = nil showDiscovery = false - // Sync temp filters from saved profile preferences (once per session) - if !hasLoadedPrefs { - let prefs = UserPreferences.shared - filterVegetarian = prefs.vegetarian - filterVegan = prefs.vegan - filterHalal = prefs.halal - filterGlutenFree = prefs.glutenFree - filterDairyFree = prefs.dairyFree - filterAllergens = prefs.allergens - hasLoadedPrefs = true - } - // Snapshot favorites at load time so feed order stays stable until next refresh loadedFavRecNums = Set(FavoritesManager.shared.favoriteFoods.keys) loadedFavStations = FavoritesManager.shared.favoriteStations