Arbeitsblätter: Abzeichen „abgerechnet (Rechnungsnummer)“ für alle, Warnung beim Ändern der Zeit
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
65526ca9b3
commit
f89ecec8ff
3 files changed
+48
No files matched your search
@@ -0,0 +1,21 @@
|
||||
import { useEffect, useState } from 'react'
|
||||
import { getAbgerechnet } from '../lib/teamApi'
|
||||
|
||||
const NICHTS = Object.freeze({})
|
||||
|
||||
/**
|
||||
* Arbeitsblatt-Kennung -> Rechnungsnummer oder „Entwurf“ für die Tickets in `ticketIds` (Team-Route, alle Mitarbeiter,
|
||||
* ohne Beträge). Ein Fehler verbirgt nur die Abzeichen, das Arbeitsblatt bleibt bedienbar; der Hook wirft nie.
|
||||
*/
|
||||
export function useAbgerechnet(ticketIds) {
|
||||
const key = (ticketIds || []).join(',')
|
||||
const [state, setState] = useState({ key: '', map: NICHTS })
|
||||
useEffect(() => {
|
||||
if (!key) return undefined
|
||||
let cancelled = false
|
||||
Promise.all(key.split(',').map((id) => getAbgerechnet(id).then((r) => r?.abgerechnet || NICHTS).catch(() => NICHTS)))
|
||||
.then((maps) => { if (!cancelled) setState({ key, map: Object.assign({}, ...maps) }) })
|
||||
return () => { cancelled = true }
|
||||
}, [key])
|
||||
return state.key === key ? state.map : NICHTS
|
||||
}
|
||||
Reference in new issue
Block a user