1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- import type {StoreDefinition} from 'reflux';
- import {createStore} from 'reflux';
- import type {SentryAppComponent} from 'sentry/types/integrations';
- export interface SentryAppComponentsStoreDefinition extends StoreDefinition {
- get: (uuid: string) => SentryAppComponent | undefined;
- getAll: () => SentryAppComponent[];
- getInitialState: () => SentryAppComponent[];
- init: () => void;
- loadComponents: (items: SentryAppComponent[]) => void;
- }
- const storeConfig: SentryAppComponentsStoreDefinition = {
- items: [],
- init() {
- // XXX: Do not use `this.listenTo` in this store. We avoid usage of reflux
- // listeners due to their leaky nature in tests.
- this.items = [];
- },
- getInitialState() {
- return this.items;
- },
- loadComponents(items: SentryAppComponent[]) {
- this.items = items;
- this.trigger(items);
- },
- get(uuid: string) {
- const items: SentryAppComponent[] = this.items;
- return items.find(item => item.uuid === uuid);
- },
- getAll() {
- return this.items;
- },
- };
- const SentryAppComponentsStore = createStore(storeConfig);
- export default SentryAppComponentsStore;
|