Fix dish deletion list flicker with stable identity/order and add regression test
This commit is contained in:
@@ -15,7 +15,7 @@ struct DishDrawerView: View {
|
||||
|
||||
private var filteredDishes: [Dish] {
|
||||
let term = searchText.trimmingCharacters(in: .whitespacesAndNewlines)
|
||||
return dishes.filter { dish in
|
||||
return Dish.stableSortedForDisplay(dishes).filter { dish in
|
||||
let matchesSearch = term.isEmpty || dish.name.localizedCaseInsensitiveContains(term)
|
||||
let matchesUsedFilter = !hideUsedThisWeek || !usedDishIds.contains(dish.id)
|
||||
return matchesSearch && matchesUsedFilter
|
||||
@@ -95,7 +95,7 @@ struct DishDrawerView: View {
|
||||
.buttonStyle(.plain)
|
||||
|
||||
LazyVStack(spacing: 8) {
|
||||
ForEach(filteredDishes) { dish in
|
||||
ForEach(filteredDishes, id: \.id) { dish in
|
||||
DishCardView(
|
||||
dish: dish,
|
||||
tags: tags,
|
||||
|
||||
@@ -5,7 +5,7 @@ struct HomeView: View {
|
||||
@Environment(\.horizontalSizeClass) private var horizontalSizeClass
|
||||
@Environment(\.modelContext) private var context
|
||||
@Environment(\.openURL) private var openURL
|
||||
@Query private var dishes: [Dish]
|
||||
@Query(sort: \Dish.createdAt, order: .reverse) private var dishes: [Dish]
|
||||
@Query private var tags: [Tag]
|
||||
@Query(sort: \WeekPlan.weekStartDate, order: .forward) private var weekPlans: [WeekPlan]
|
||||
@Query private var allSettings: [AppSettings]
|
||||
@@ -452,7 +452,7 @@ struct HomeView: View {
|
||||
.padding(24)
|
||||
} else {
|
||||
List {
|
||||
ForEach(filteredDishes) { dish in
|
||||
ForEach(filteredDishes, id: \.id) { dish in
|
||||
Button {
|
||||
onPickDish(dish)
|
||||
dismiss()
|
||||
|
||||
Reference in New Issue
Block a user