Skip to content

Commit c4369cc

Browse files
authored
ref(reflux): remove index signature (#33407)
* ref(reflux): remove index signature * fix(groupingStore): fix state call * fix(store): no need to extend * fix(store): add methods to interace * ref(mergedToolbar): add ts-ignore comment
1 parent cf63cf1 commit c4369cc

File tree

5 files changed

+25
-3
lines changed

5 files changed

+25
-3
lines changed

static/app/stores/groupingStore.tsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import pick from 'lodash/pick';
2-
import {createStore, StoreDefinition} from 'reflux';
2+
import {createStore} from 'reflux';
33

44
import {mergeGroups} from 'sentry/actionCreators/group';
55
import {
@@ -13,6 +13,8 @@ import {Group, Organization, Project} from 'sentry/types';
1313
import {Event} from 'sentry/types/event';
1414
import {makeSafeRefluxStore} from 'sentry/utils/makeSafeRefluxStore';
1515

16+
import {CommonStoreDefinition} from './types';
17+
1618
// Between 0-100
1719
const MIN_SCORE = 0.6;
1820

@@ -114,7 +116,9 @@ type InternalDefinition = {
114116
api: Client;
115117
};
116118

117-
interface GroupingStoreDefinition extends StoreDefinition, InternalDefinition {
119+
interface GroupingStoreDefinition
120+
extends CommonStoreDefinition<State>,
121+
InternalDefinition {
118122
getInitialState(): State;
119123
init(): void;
120124
isAllUnmergedSelected(): boolean;
@@ -615,6 +619,10 @@ const storeConfig: GroupingStoreDefinition = {
615619
this.trigger(state);
616620
return state;
617621
},
622+
623+
getState(): State {
624+
return this.state;
625+
},
618626
};
619627

620628
const GroupingStore = createStore(makeSafeRefluxStore(storeConfig));

static/app/stores/guideStore.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,14 @@ const defaultState: GuideStoreState = {
7676
interface GuideStoreDefinition extends StoreDefinition {
7777
browserHistoryListener: null | (() => void);
7878

79+
closeGuide(dismissed?: boolean): void;
7980
fetchSucceeded(data: GuidesServerData): void;
8081
nextStep(): void;
8182
recordCue(guide: string): void;
8283
registerAnchor(target: string): void;
8384
setForceHide(forceHide: boolean): void;
8485
state: GuideStoreState;
86+
toStep(step: number): void;
8587
unregisterAnchor(target: string): void;
8688
updatePrevGuide(nextGuide: Guide | null): void;
8789
}

static/app/types/reflux.d.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@ import type {
44
} from 'sentry/utils/makeSafeRefluxStore';
55
import type {Store, StoreDefinition} from 'reflux';
66

7+
type RemoveIndex<T> = {
8+
[P in keyof T as string extends P ? never : P]: T[P];
9+
};
10+
711
declare module 'reflux' {
812
function createStore<T extends SafeStoreDefinition | StoreDefinition>(
913
storeDefinition: T
10-
): Store & T;
14+
): RemoveIndex<Store & T>;
1115
}

static/app/views/organizationGroupDetails/groupMerged/mergedToolbar.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class MergedToolbar extends React.Component<Props, State> {
3030
state: State = this.getInitialState();
3131

3232
getInitialState() {
33+
// @ts-ignore GroupingStore types are not correct, store.init dinamically sets these
3334
const {unmergeList, unmergeLastCollapsed, unmergeDisabled, enableFingerprintCompare} =
3435
GroupingStore;
3536

tests/js/spec/views/organizationGroupDetails/groupMergedView.spec.jsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import * as PropTypes from 'prop-types';
33
import {mountWithTheme} from 'sentry-test/enzyme';
44

55
import {Client} from 'sentry/api';
6+
import GroupingStore from 'sentry/stores/groupingStore';
67
import {GroupMergedView} from 'sentry/views/organizationGroupDetails/groupMerged';
78

89
jest.mock('sentry/api');
@@ -37,6 +38,12 @@ describe('Issues -> Merged View', function () {
3738
});
3839
});
3940

41+
beforeEach(() => {
42+
GroupingStore.init();
43+
});
44+
afterEach(() => {
45+
GroupingStore.teardown();
46+
});
4047
it('renders initially with loading component', function () {
4148
const wrapper = mountWithTheme(
4249
<GroupMergedView

0 commit comments

Comments
 (0)