27 lines
836 B
JavaScript
27 lines
836 B
JavaScript
|
|
/**
|
||
|
|
* Zentraler Abgleich Vereins-Kontingente nach API-Responses.
|
||
|
|
*
|
||
|
|
* Backend-Standard: Jeder Endpoint mit Verbrauch liefert ``feature_usage``
|
||
|
|
* (siehe club_features.consume_club_feature_with_usage). ``request()`` in
|
||
|
|
* client.js ruft syncFeatureUsageFromApiResponse() — UI-Komponenten müssen
|
||
|
|
* nichts Einzelnes tun.
|
||
|
|
*/
|
||
|
|
|
||
|
|
let usageHandler = null
|
||
|
|
|
||
|
|
export function registerFeatureUsageSyncHandler(handler) {
|
||
|
|
usageHandler = typeof handler === 'function' ? handler : null
|
||
|
|
}
|
||
|
|
|
||
|
|
export function unregisterFeatureUsageSyncHandler() {
|
||
|
|
usageHandler = null
|
||
|
|
}
|
||
|
|
|
||
|
|
/** Wird von request() nach jedem erfolgreichen JSON-Response aufgerufen. */
|
||
|
|
export function syncFeatureUsageFromApiResponse(data) {
|
||
|
|
if (!data || typeof data !== 'object' || !data.feature_usage) return
|
||
|
|
if (typeof usageHandler === 'function') {
|
||
|
|
usageHandler(data)
|
||
|
|
}
|
||
|
|
}
|