iOS: Benachrichtigungs-Kategorien laden + Ein-/Auslager-Meldung huebscher
1) In den Benachrichtigungs-Regeln liess sich keine Kategorie waehlen: der Abruf
holte den ganzen Snapshot (Produkte + Ablauf + Kategorien) - schlug ein Teil
fehl, kamen auch die Kategorien leer. snapshot ist jetzt widerstandsfaehig
(Teilausfaelle egal), und die Regel-Bearbeitung holt nur noch die Kategorien.
2) Die gruene Erfolgsmeldung ist jetzt eine saubere, eingerueckte Pille mit Titel
("Eingelagert"/"Ausgelagert") und Detailzeile ("Neuer Bestand: 2 Packungen").
Die Einheit steht in der Mehrzahl (Gebinde-Plural vom Server; Basiseinheiten
wie Gramm bleiben unveraendert).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -15,12 +15,24 @@ enum ServerFetch {
|
||||
let categories: [CategoryItem]
|
||||
}
|
||||
|
||||
static func snapshot(baseURL: URL, token: String, horizonDays: Int) async throws -> Snapshot {
|
||||
static func snapshot(baseURL: URL, token: String, horizonDays: Int) async -> Snapshot {
|
||||
async let expiring: [ExpiringItem] = get(
|
||||
"/expiring?days=\(horizonDays)", baseURL: baseURL, token: token)
|
||||
async let products: [Product] = get("/products", baseURL: baseURL, token: token)
|
||||
async let categories: [CategoryItem] = get("/categories", baseURL: baseURL, token: token)
|
||||
return try await Snapshot(expiring: expiring, products: products, categories: categories)
|
||||
// Einzelne Ausfaelle sollen nicht alles kippen (sonst fehlten z.B. die
|
||||
// Kategorien nur, weil die Produktliste langsam war).
|
||||
return await Snapshot(
|
||||
expiring: (try? await expiring) ?? [],
|
||||
products: (try? await products) ?? [],
|
||||
categories: (try? await categories) ?? []
|
||||
)
|
||||
}
|
||||
|
||||
/// Nur den Kategorie-Baum eines bestimmten Servers holen (fuer die
|
||||
/// Regel-Bearbeitung in den Benachrichtigungen).
|
||||
static func categories(baseURL: URL, token: String) async throws -> [CategoryItem] {
|
||||
try await get("/categories", baseURL: baseURL, token: token)
|
||||
}
|
||||
|
||||
private static func get<T: Decodable>(
|
||||
|
||||
Reference in New Issue
Block a user