App: die selbst draufgesetzten Posten fehlten in der Einkaufsliste
Die Einkaufsliste besteht aus zwei Haelften: gerechnete Bedarfe (Artikel
und Gruppen unter ihrem Mindestbestand, Bedarfe je Lagerort) und das,
was jemand selbst draufgesetzt hat - eigene Eintraege und die aus einem
Rezept uebernommenen Zutaten.
Die App kannte nur die erste Haelfte. Sie fragte /shopping-list,
/shopping-list/groups und /shopping-list/by-location ab - drei Routen,
die ausschliesslich rechnen. Die gespeicherten Eintraege liegen in
/shopping-list/entries und kommen gebuendelt ueber /shopping-list/all;
danach hat die App nie gefragt. Ergebnis: Man setzt im Web etwas auf die
Liste, nimmt das Telefon mit in den Laden, und es ist nicht da.
Jetzt holt die App die gebuendelte Route - ein Aufruf statt drei - und
zeigt die eigenen Posten in einem eigenen Abschnitt "Selbst
draufgesetzt", mit Herkunft ("fuer Pfannkuchen") und Menge. Antippen
hakt ab: Der Posten verschwindet sofort, geht das Speichern schief,
kommt er zurueck - lieber ein Ruecksprung als ein falsches Haekchen.
Dieselbe Blindstelle hatte die Dashboard-Karte der App; sie meldete
"alle Mindestbestaende sind gedeckt", waehrend Posten auf der Liste
standen. Auch sie nimmt jetzt die gebuendelte Route.
Dazu ein Hinweis im Docstring von GET /shopping-list: Diese Route ist
ein Drittel der Liste, wer "die Liste" will, nimmt /all. Die Aufteilung
hat in zwei Tagen zweimal jemanden glauben lassen, es sei nichts da -
beim zweiten Mal war es die App selbst.
Gegen den laufenden Server geprueft: Mit einem Eintrag "Backpapier"
liefert /shopping-list weiterhin [] und /shopping-list/all den Eintrag
samt art, name, menge_text, source, recipe_name und done - genau die
Felder, die das neue Swift-Modell liest.
Nicht kompiliert: kein Xcode auf dieser Maschine. Geprueft sind
Klammer- und Anfuehrungsbalance, dass die drei alten Routen niemand mehr
aufruft, und dass die benutzten Hilfsfunktionen (makeRequest, jsonBody,
send) wirklich so heissen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
892c52e49a
commit
f04d80a330
@@ -419,6 +419,22 @@ actor APIClient {
|
||||
|
||||
// MARK: - Listen
|
||||
|
||||
/// Die ganze Einkaufsliste - gerechnete Bedarfe UND eigene Eintraege.
|
||||
///
|
||||
/// Ein Aufruf statt drei, und vor allem der einzige, der die selbst
|
||||
/// draufgesetzten Posten mitbringt.
|
||||
func shoppingAll() async throws -> ShoppingListAll {
|
||||
try await send(try makeRequest("/shopping-list/all"), as: ShoppingListAll.self)
|
||||
}
|
||||
|
||||
/// Einen eigenen Eintrag abhaken oder wieder aufmachen.
|
||||
@discardableResult
|
||||
func setShoppingEntryDone(_ id: Int, done: Bool) async throws -> ShoppingEntry {
|
||||
var request = try makeRequest("/shopping-list/entries/\(id)", method: "PATCH")
|
||||
try jsonBody(&request, ["done": done])
|
||||
return try await send(request, as: ShoppingEntry.self)
|
||||
}
|
||||
|
||||
func shoppingList() async throws -> [ShoppingItem] {
|
||||
try await send(try makeRequest("/shopping-list"), as: [ShoppingItem].self)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user