1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import {createStore, StoreDefinition} from 'reflux';
- import {SentryAppComponent} from 'sentry/types';
- import {makeSafeRefluxStore} from 'sentry/utils/makeSafeRefluxStore';
- export interface SentryAppComponentsStoreDefinition extends StoreDefinition {
- get: (uuid: string) => SentryAppComponent | undefined;
- getAll: () => SentryAppComponent[];
- getComponentByType: (type: string | undefined) => SentryAppComponent[];
- getInitialState: () => SentryAppComponent[];
- loadComponents: (items: SentryAppComponent[]) => void;
- }
- const storeConfig: SentryAppComponentsStoreDefinition = {
- unsubscribeListeners: [],
- items: [],
- init() {
- 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;
- },
- getComponentByType(type: string | undefined) {
- if (!type) {
- return this.getAll();
- }
- const items: SentryAppComponent[] = this.items;
- return items.filter(item => item.type === type);
- },
- };
- const SentryAppComponentsStore = createStore(makeSafeRefluxStore(storeConfig));
- export default SentryAppComponentsStore;
|