shinkan-jinkendo/frontend/src/utils/featureUsageSync.js

27 lines
836 B
JavaScript
Raw Normal View History

/**
* 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)
}
}