App: Folgeblatt nach dem Anlegen ging beim ersten Mal sofort wieder zu

Zwei sheet-Modifikatoren hingen am selben View: einzelstueckeNachAnlegen und
mengeNachAnlegen, beide in ea7a42a nebeneinandergesetzt. Zwei Praesentationen
am selben View vertragen sich in SwiftUI nicht zuverlaessig - eine davon wird
verschluckt, und genau deshalb hielt das Blatt erst im zweiten Anlauf.

Jetzt ein einziger Modifikator, der innen verzweigt: Einzelstuecke oder Menge
je Lagerort, je nach Verwaltungsart. Statt zweier Zustaende nur noch einer.

In der laufenden App geprueft, beide Zweige einzeln: Gegenstand mit
Einzelstuecken angelegt -> "Einzelstuecke anlegen" bleibt beim ERSTEN Mal
offen; Gegenstand mit Menge je Lagerort angelegt -> "Menge hinzufuegen"
ebenso.

Dabei nebenbei bestaetigt: Ein Gegenstand ohne Kategorie bekommt vom Server
tracking="food" und damit zu Recht gar keinen Folgeschritt - die
Verwaltungsart allein macht noch keinen Gegenstand.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-10-16 06:35:37 +02:00
co-authored by Claude Opus 5
parent 1e8c4b2797
commit 83f7134459
3 changed files with 25 additions and 28 deletions
+13 -16
View File
@@ -776,27 +776,24 @@ extension View {
/// Die Bindung wird erst im `onDismiss` des Formulars gesetzt: Beides im
/// selben Zug zu setzen verschluckt SwiftUI, weil das zweite Sheet dann
/// erscheinen soll, waehrend das erste noch verschwindet.
func einzelstueckeNachAnlegen(_ artikel: Binding<Product?>) -> some View {
/// Je nach Verwaltungsart geht es zu den Einzelstuecken oder zur Menge je
/// Lagerort. Beides haengt an EINEM sheet-Modifikator, nicht an zweien:
/// Zwei Praesentationen am selben View vertragen sich in SwiftUI nicht
/// zuverlaessig - dann schliesst sich das Blatt beim ersten Mal sofort
/// wieder und erst der zweite Anlauf haelt.
func nachAnlegen(_ artikel: Binding<Product?>) -> some View {
sheet(item: artikel) { p in
NavigationStack {
ItemAddSheet(productId: p.id,
onDone: {},
onFinish: { artikel.wrappedValue = nil })
if fuehrtEinzelstuecke(p) {
ItemAddSheet(productId: p.id,
onDone: {},
onFinish: { artikel.wrappedValue = nil })
} else {
MengeNachAnlegenSheet(product: p) { artikel.wrappedValue = nil }
}
}
}
}
/// Dasselbe fuer Gegenstaende, die nur als Menge je Lagerort gefuehrt
/// werden: direkt zu „davon habe ich zwoelf Stueck", statt den gerade
/// angelegten Artikel hinterher wiederzusuchen.
///
/// Gleiche Reihenfolge-Regel wie oben – die Bindung erst im `onDismiss`
/// des Formulars setzen.
func mengeNachAnlegen(_ artikel: Binding<Product?>) -> some View {
sheet(item: artikel) { p in
NavigationStack { MengeNachAnlegenSheet(product: p) { artikel.wrappedValue = nil } }
}
}
}
/// Hat dieser Artikel ueberhaupt Einzelstuecke? Nur Gegenstaende, die je Stueck