sentryAppComponentsStore.tsx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import Reflux from 'reflux';
  2. import SentryAppComponentsActions from 'app/actions/sentryAppComponentActions';
  3. import {SentryAppComponent} from 'app/types';
  4. const SentryAppComponentsStore = Reflux.createStore({
  5. init() {
  6. this.items = [];
  7. this.listenTo(SentryAppComponentsActions.loadComponents, this.onLoadComponents);
  8. },
  9. getInitialState() {
  10. return this.items;
  11. },
  12. onLoadComponents(items: SentryAppComponent[]) {
  13. this.items = items;
  14. this.trigger(items);
  15. },
  16. get(uuid: string) {
  17. const items: SentryAppComponent[] = this.items;
  18. return items.find(item => item.uuid === uuid);
  19. },
  20. getAll() {
  21. return this.items;
  22. },
  23. getComponentByType(type: string | undefined) {
  24. if (!type) {
  25. return this.getAll();
  26. }
  27. const items: SentryAppComponent[] = this.items;
  28. return items.filter(item => item.type === type);
  29. },
  30. });
  31. type SentryAppComponentsStoreType = Reflux.Store & {
  32. onLoadComponents: (items: SentryAppComponent[]) => void;
  33. getComponentByType: (type: string | undefined) => SentryAppComponent[];
  34. getAll: () => SentryAppComponent[];
  35. getInitialState: () => SentryAppComponent[];
  36. get: () => SentryAppComponent | undefined;
  37. };
  38. export default SentryAppComponentsStore as SentryAppComponentsStoreType;