Skip to content

Commit 2f054cd

Browse files
authored
TS types for reducers (#5495)
* feature: TS types for reducers * fix: remove useless `any` annotations
1 parent 7273d1d commit 2f054cd

24 files changed

Lines changed: 408 additions & 150 deletions

static/js/publisher/pages/Releases/reducers/architectures.js

Lines changed: 0 additions & 10 deletions
This file was deleted.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { UPDATE_ARCHITECTURES } from "../actions/architectures";
2+
import {
3+
ReleasesAction,
4+
ReleasesReduxState,
5+
} from "../../../types/releaseTypes";
6+
7+
type UpdateArchitecturesAction = ReleasesAction & {
8+
payload: {
9+
architectures: ReleasesReduxState["architectures"];
10+
};
11+
};
12+
13+
export default function architectures(state: ReleasesReduxState["architectures"] = [], action: UpdateArchitecturesAction) {
14+
switch (action.type) {
15+
case UPDATE_ARCHITECTURES:
16+
return [...action.payload.architectures];
17+
default:
18+
return state;
19+
}
20+
}

static/js/publisher/pages/Releases/reducers/availableRevisionsSelect.js

Lines changed: 0 additions & 14 deletions
This file was deleted.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { AVAILABLE_REVISIONS_SELECT_UNRELEASED } from "../constants";
2+
import { SET_AVAILABLE_REVISIONS_SELECT } from "../actions/availableRevisionsSelect";
3+
import {
4+
AvailableRevisionsSelect,
5+
ReleasesAction,
6+
ReleasesReduxState,
7+
} from "../../../types/releaseTypes";
8+
9+
type AvailableRevisionsSelectAction = ReleasesAction & {
10+
payload: {
11+
value: AvailableRevisionsSelect;
12+
};
13+
};
14+
15+
export default function availableRevisionsSelect(
16+
state: ReleasesReduxState["availableRevisionsSelect"] = AVAILABLE_REVISIONS_SELECT_UNRELEASED,
17+
action: AvailableRevisionsSelectAction
18+
) {
19+
switch (action.type) {
20+
case SET_AVAILABLE_REVISIONS_SELECT:
21+
return action.payload.value;
22+
default:
23+
return state;
24+
}
25+
}

static/js/publisher/pages/Releases/reducers/branches.js renamed to static/js/publisher/pages/Releases/reducers/branches.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,17 @@
1+
import {
2+
ReleasesAction,
3+
ReleasesReduxState,
4+
} from "../../../types/releaseTypes";
15
import { OPEN_BRANCHES, CLOSE_BRANCHES } from "../actions/branches";
26

3-
export default function branches(state = [], action) {
7+
type BranchesAction = ReleasesAction & {
8+
payload: string;
9+
};
10+
11+
export default function branches(
12+
state: ReleasesReduxState["branches"] = [],
13+
action: BranchesAction
14+
) {
415
switch (action.type) {
516
case OPEN_BRANCHES: {
617
const newState = state.slice(0);

static/js/publisher/pages/Releases/reducers/channelMap.js renamed to static/js/publisher/pages/Releases/reducers/channelMap.ts

Lines changed: 56 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,48 @@ import {
66
RELEASE_REVISION_SUCCESS,
77
CLOSE_CHANNEL_SUCCESS,
88
} from "../actions/channelMap";
9+
import {
10+
ReleasesAction,
11+
ReleasesReduxState,
12+
} from "../../../types/releaseTypes";
13+
14+
type ChannelMapAction = ReleasesAction &
15+
(
16+
| {
17+
type: typeof INIT_CHANNEL_MAP;
18+
payload: { channelMap: ReleasesReduxState["channelMap"] };
19+
}
20+
| {
21+
type: typeof SELECT_REVISION;
22+
payload: {
23+
revision: ReleasesReduxState["revisions"][string];
24+
toggle: boolean;
25+
};
26+
}
27+
| {
28+
type: typeof CLEAR_SELECTED_REVISIONS;
29+
payload: never;
30+
}
31+
| {
32+
type: typeof RELEASE_REVISION_SUCCESS;
33+
payload: {
34+
revision: ReleasesReduxState["revisions"][string];
35+
channel: string;
36+
};
37+
}
38+
| {
39+
type: typeof CLOSE_CHANNEL_SUCCESS;
40+
payload: {
41+
channel: string;
42+
};
43+
}
44+
);
945

10-
function selectRevision(state, revision, toggle) {
46+
function selectRevision(
47+
state: ReleasesReduxState["channelMap"],
48+
revision: ReleasesReduxState["revisions"][string],
49+
toggle: boolean
50+
) {
1151
const arch = revision.architectures[0];
1252

1353
state = {
@@ -28,7 +68,11 @@ function selectRevision(state, revision, toggle) {
2868
return state;
2969
}
3070

31-
function releaseRevision(state, revision, channel) {
71+
function releaseRevision(
72+
state: ReleasesReduxState["channelMap"],
73+
revision: ReleasesReduxState["revisions"][string],
74+
channel: string
75+
) {
3276
state = {
3377
...state,
3478
[channel]: { ...state[channel] },
@@ -49,7 +93,10 @@ function releaseRevision(state, revision, channel) {
4993
return state;
5094
}
5195

52-
function closeChannel(state, channel) {
96+
function closeChannel(
97+
state: ReleasesReduxState["channelMap"],
98+
channel: string
99+
) {
53100
// if channel is already closed do nothing
54101
if (!state[channel]) {
55102
return state;
@@ -63,7 +110,10 @@ function closeChannel(state, channel) {
63110

64111
// contains channel map for each channel in current track
65112
// also includes 'unassigned' fake channel to show selected unassigned revision
66-
export default function channelMap(state = {}, action) {
113+
export default function channelMap(
114+
state: ReleasesReduxState["channelMap"] = {},
115+
action: ChannelMapAction
116+
) {
67117
switch (action.type) {
68118
case INIT_CHANNEL_MAP:
69119
return {
@@ -73,7 +123,7 @@ export default function channelMap(state = {}, action) {
73123
return selectRevision(
74124
state,
75125
action.payload.revision,
76-
action.payload.toggle,
126+
action.payload.toggle
77127
);
78128
case CLEAR_SELECTED_REVISIONS:
79129
return {
@@ -84,7 +134,7 @@ export default function channelMap(state = {}, action) {
84134
return releaseRevision(
85135
state,
86136
action.payload.revision,
87-
action.payload.channel,
137+
action.payload.channel
88138
);
89139
case CLOSE_CHANNEL_SUCCESS:
90140
return closeChannel(state, action.payload.channel);

static/js/publisher/pages/Releases/reducers/currentTrack.js

Lines changed: 0 additions & 10 deletions
This file was deleted.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import {
2+
ReleasesAction,
3+
ReleasesReduxState,
4+
} from "../../../types/releaseTypes";
5+
import { SET_CURRENT_TRACK } from "../actions/currentTrack";
6+
7+
type CurrentTrackAction = ReleasesAction & {
8+
payload: {
9+
track: ReleasesReduxState["currentTrack"];
10+
};
11+
};
12+
13+
export default function currentTrack(
14+
state: ReleasesReduxState["currentTrack"] = "",
15+
action: CurrentTrackAction
16+
) {
17+
switch (action.type) {
18+
case SET_CURRENT_TRACK:
19+
return action.payload.track;
20+
default:
21+
return state;
22+
}
23+
}

static/js/publisher/pages/Releases/reducers/defaultTrack.js

Lines changed: 0 additions & 10 deletions
This file was deleted.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import {
2+
ReleasesAction,
3+
ReleasesReduxState,
4+
} from "../../../types/releaseTypes";
5+
import { SET_DEFAULT_TRACK_SUCCESS } from "../actions/defaultTrack";
6+
7+
type DefaultTrackAction = ReleasesAction & {
8+
payload: ReleasesReduxState["defaultTrack"];
9+
};
10+
11+
export default function defaultTrack(
12+
state: ReleasesReduxState["defaultTrack"] = "latest",
13+
action: DefaultTrackAction
14+
) {
15+
switch (action.type) {
16+
case SET_DEFAULT_TRACK_SUCCESS:
17+
return action.payload;
18+
default:
19+
return state;
20+
}
21+
}

0 commit comments

Comments
 (0)