Files
sentinel/static/app/stores/demoWalkthroughStore.tsx
2024-02-15 17:01:50 +00:00

51 lines
1.3 KiB
TypeScript

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;