mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-09-29 22:34:33 +00:00
51 lines
1.3 KiB
TypeScript
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;
|