Kontrolle: Abschnitt Aufträge lädt auch bei ausgefallenen Projektkonten
Scheitert getProjektkonten, wird die Auftragsliste trotzdem geholt; kommt sie, bleibt der Abschnitt bedienbar und der Fehler der Projekte steht eigens daneben. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
b556a459bb
commit
07d36f64e9
2 files changed
+60
-11
No files matched your search
@@ -11,12 +11,30 @@ const ohneProjektLeer = () => ({ berechnetCents: 0, bezahltCents: 0, anzahl: 0 }
|
||||
|
||||
/**
|
||||
* Lädt Projektkonten und, nur bei eingeschaltetem Schalter (`auftraegeAktiv === true`), die Aufträge des Kunden.
|
||||
* Scheitert getProjektkonten, geht der Fehler weiter (keine Aufträge, sie würden ohne Schalter 404 liefern).
|
||||
* Scheitert nur listAuftraege, bleiben die Projektkonten und der Fehler steht eigens da.
|
||||
* -> { konten, auftraege: Liste | null, auftraegeFehler: Text | '' }
|
||||
* Scheitert getProjektkonten, wird die Auftragsliste trotzdem geholt (der Server prüft den Schalter ohnehin und antwortet bei
|
||||
* „aus“ mit 404): kommt sie, bleibt der Abschnitt Aufträge bedienbar und der Fehler steht als `kontenFehler` daneben;
|
||||
* kommt sie nicht, geht der Fehler der Projektkonten weiter.
|
||||
* -> { konten, auftraege: Liste | null, auftraegeFehler: Text | '', kontenFehler?: Text (nur bei ausgefallenen Projektkonten) }
|
||||
*/
|
||||
export async function ladeAuftraegeAnsicht(kundeId, { getProjektkonten, listAuftraege }) {
|
||||
const antwort = await getProjektkonten(kundeId)
|
||||
let antwort
|
||||
try {
|
||||
antwort = await getProjektkonten(kundeId)
|
||||
} catch (kontenErr) {
|
||||
let liste
|
||||
try {
|
||||
liste = await listAuftraege(kundeId)
|
||||
} catch {
|
||||
throw kontenErr
|
||||
}
|
||||
return {
|
||||
konten: {},
|
||||
kontenFehler: (kontenErr && kontenErr.message) || KONTEN_FEHLER,
|
||||
auftraege: Array.isArray(liste?.auftraege) ? liste.auftraege : [],
|
||||
auftraegeFehler: '',
|
||||
}
|
||||
}
|
||||
const konten = istObjekt(antwort) ? antwort : {}
|
||||
if (konten.auftraegeAktiv !== true) return { konten, auftraege: null, auftraegeFehler: '' }
|
||||
try {
|
||||
@@ -33,7 +51,8 @@ export async function ladeAuftraegeAnsicht(kundeId, { getProjektkonten, listAuft
|
||||
* auftraegeAktiv, auftraegeStatus: 'aus' | 'bereit' | 'fehler', auftraegeFehler,
|
||||
* konten, ohneProjekt, stripeOk, kunde, auftraege }
|
||||
* Ohne Daten gibt es keinen Aufträge-Abschnitt (der Schalter ist noch unbekannt). Scheitert das Neuladen, nachdem Daten
|
||||
* da sind, bleiben die alten Daten stehen und die Meldung kommt als `nachladeFehler` daneben.
|
||||
* da sind, bleiben die alten Daten stehen und die Meldung kommt als `nachladeFehler` daneben. Waren die Projektkonten
|
||||
* ausgefallen und die Aufträge trotzdem da (`data.kontenFehler`), ist `projekteStatus` „fehler“ und die Aufträge sind bereit.
|
||||
*/
|
||||
export function ansichtsZustand({ data, error } = {}) {
|
||||
if (!data) {
|
||||
@@ -52,12 +71,14 @@ export function ansichtsZustand({ data, error } = {}) {
|
||||
}
|
||||
}
|
||||
const k = istObjekt(data.konten) ? data.konten : {}
|
||||
const auftraegeAktiv = k.auftraegeAktiv === true
|
||||
const kontenFehler = typeof data.kontenFehler === 'string' ? data.kontenFehler : ''
|
||||
// Mit ausgefallenen Projektkonten gilt der Schalter als an, wenn der Server die Auftragsliste geliefert hat
|
||||
const auftraegeAktiv = kontenFehler ? Array.isArray(data.auftraege) : k.auftraegeAktiv === true
|
||||
const auftraegeStatus = !auftraegeAktiv ? 'aus' : data.auftraegeFehler ? 'fehler' : 'bereit'
|
||||
return {
|
||||
projekteStatus: 'bereit',
|
||||
fehler: '',
|
||||
nachladeFehler: error || '',
|
||||
projekteStatus: kontenFehler ? 'fehler' : 'bereit',
|
||||
fehler: kontenFehler ? error || kontenFehler : '',
|
||||
nachladeFehler: kontenFehler ? '' : error || '',
|
||||
auftraegeAktiv,
|
||||
auftraegeStatus,
|
||||
auftraegeFehler: auftraegeStatus === 'fehler' ? data.auftraegeFehler : '',
|
||||
|
||||
Reference in new issue
Block a user