Files
tickte-system/src/hooks/useAbgerechnet.js
T

22 lines
915 B
JavaScript

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
}