'use strict'; import { alt } from '../alt'; import WebhookActions from '../actions/webhook_actions'; import WebhookSource from '../sources/webhook_source'; class WebhookStore { constructor() { this.webhooks = []; this.webhookEvents = []; this.webhookMeta = { invalidateCache: false, err: null, idToDelete: null }; this.webhookEventsMeta = { invalidateCache: false, err: null }; this.bindActions(WebhookActions); this.registerAsync(WebhookSource); } onFetchWebhooks(invalidateCache) { this.webhookMeta.invalidateCache = invalidateCache; this.getInstance().lookupWebhooks(); } onSuccessFetchWebhooks({ webhooks = [] }) { this.webhookMeta.invalidateCache = false; this.webhookMeta.err = null; this.webhooks = webhooks; this.webhookEventsMeta.invalidateCache = true; this.getInstance().lookupWebhookEvents(); } onFetchWebhookEvents(invalidateCache) { this.webhookEventsMeta.invalidateCache = invalidateCache; this.getInstance().lookupWebhookEvents(); } onSuccessFetchWebhookEvents({ events }) { this.webhookEventsMeta.invalidateCache = false; this.webhookEventsMeta.err = null; // remove all events that have already been used. const usedEvents = this.webhooks .reduce((tempUsedEvents, webhook) => { tempUsedEvents.push(webhook.event.split('.')[0]); return tempUsedEvents; }, []); this.webhookEvents = events.filter((event) => { return usedEvents.indexOf(event) === -1; }); } onRemoveWebhook(id) { this.webhookMeta.invalidateCache = true; this.webhookMeta.idToDelete = id; if(!this.getInstance().isLoading()) { this.getInstance().performRemoveWebhook(); } } onSuccessRemoveWebhook() { this.webhookMeta.idToDelete = null; if(!this.getInstance().isLoading()) { this.getInstance().lookupWebhooks(); } } onErrorWebhooks(err) { console.logGlobal(err); this.webhookMeta.err = err; } onErrorWebhookEvents(err) { console.logGlobal(err); this.webhookEventsMeta.err = err; } } export default alt.createStore(WebhookStore, 'WebhookStore');