debugMetaStore.tsx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import {createActions, createStore, StoreDefinition} from 'reflux';
  2. import {
  3. makeSafeRefluxStore,
  4. SafeRefluxStore,
  5. SafeStoreDefinition,
  6. } from 'sentry/utils/makeSafeRefluxStore';
  7. const DebugMetaActions = createActions(['updateFilter']);
  8. type State = {
  9. filter: string | null;
  10. };
  11. interface DebugMetaStoreInterface extends StoreDefinition {
  12. get(): State;
  13. init(): void;
  14. reset(): void;
  15. updateFilter(word: string): void;
  16. }
  17. type Internals = {
  18. filter: string | null;
  19. };
  20. const storeConfig: StoreDefinition &
  21. DebugMetaStoreInterface &
  22. Internals &
  23. SafeStoreDefinition = {
  24. filter: null,
  25. unsubscribeListeners: [],
  26. init() {
  27. this.reset();
  28. this.unsubscribeListeners.push(
  29. this.listenTo(DebugMetaActions.updateFilter, this.updateFilter)
  30. );
  31. },
  32. reset() {
  33. this.filter = null;
  34. this.trigger(this.get());
  35. },
  36. updateFilter(word) {
  37. this.filter = word;
  38. this.trigger(this.get());
  39. },
  40. get() {
  41. return {
  42. filter: this.filter,
  43. };
  44. },
  45. };
  46. const DebugMetaStore = createStore(makeSafeRefluxStore(storeConfig)) as SafeRefluxStore &
  47. DebugMetaStoreInterface;
  48. export {DebugMetaActions, DebugMetaStore};
  49. export default DebugMetaStore;