import type {StoreDefinition} from 'reflux'; import {createStore} from 'reflux'; import {OnboardingTaskKey} from 'sentry/types'; interface DemoWalkthroughStoreDefinition extends StoreDefinition { activateGuideAnchor(guide: string): void; get(guide: string): boolean; } const storeConfig: DemoWalkthroughStoreDefinition = { issueGuideAnchor: false, sidebarGuideAnchor: false, init() { // XXX: Do not use `this.listenTo` in this store. We avoid usage of reflux // listeners due to their leaky nature in tests. }, activateGuideAnchor(task: OnboardingTaskKey) { switch (task) { case OnboardingTaskKey.ISSUE_GUIDE: this.issueGuideAnchor = true; this.trigger(this.issueGuideAnchor); break; case OnboardingTaskKey.SIDEBAR_GUIDE: this.sidebarGuideAnchor = true; this.trigger(this.sidebarGuideAnchor); break; default: } }, get(guide: string) { switch (guide) { case 'issue': return this.issueGuideAnchor; case 'sidebar': return this.sidebarGuideAnchor; default: return false; } }, }; /** * This store is used to hold local user preferences * Side-effects (like reading/writing to cookies) are done in associated actionCreators */ const DemoWalkthroughStore = createStore(storeConfig); export default DemoWalkthroughStore;