Skip to content

Commit a884750

Browse files
committed
Don't store the IntlShape in AnnouncementBuilder
1 parent b89d1c4 commit a884750

4 files changed

Lines changed: 36 additions & 46 deletions

File tree

src/AnnouncementBuilder.js

Lines changed: 16 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,65 +9,59 @@ type AnnouncementData = {|
99
|};
1010

1111
export default class AnnouncementBuilder {
12-
intl: IntlShape;
13-
14-
constructor(intl: IntlShape) {
15-
this.intl = intl;
16-
}
17-
18-
buildSelectActionAnnouncement(action: string): AnnouncementData {
12+
buildSelectActionAnnouncement(action: string, intl: IntlShape): AnnouncementData {
1913
let commandType = null;
2014
if (action === 'loop') {
21-
commandType = this.intl.formatMessage({
15+
commandType = intl.formatMessage({
2216
id: 'Announcement.control'
2317
});
2418
} else {
25-
commandType = this.intl.formatMessage({
19+
commandType = intl.formatMessage({
2620
id: 'Announcement.movement'
2721
});
2822
}
2923
return {
3024
messageIdSuffix: 'actionSelected',
3125
values: {
3226
commandType: commandType,
33-
command: this.intl.formatMessage({
27+
command: intl.formatMessage({
3428
id: `Announcement.${action}`
3529
}),
3630
}
3731
};
3832
}
3933

40-
buildAddStepAnnouncement(action: string): AnnouncementData {
34+
buildAddStepAnnouncement(action: string, intl: IntlShape): AnnouncementData {
4135
let commandType = null;
4236
if (action === 'loop') {
43-
commandType = this.intl.formatMessage({
37+
commandType = intl.formatMessage({
4438
id: 'Announcement.control'
4539
});
4640
} else {
47-
commandType = this.intl.formatMessage({
41+
commandType = intl.formatMessage({
4842
id: 'Announcement.movement'
4943
});
5044
}
5145
return {
5246
messageIdSuffix: 'add',
5347
values: {
5448
commandType: commandType,
55-
command: this.intl.formatMessage({
49+
command: intl.formatMessage({
5650
id: `Announcement.${action}`
5751
}),
5852
}
5953
};
6054
}
6155

62-
buildDeleteStepAnnouncement(programBlock: ProgramBlock): AnnouncementData {
56+
buildDeleteStepAnnouncement(programBlock: ProgramBlock, intl: IntlShape): AnnouncementData {
6357
if (programBlock.block === 'startLoop' || programBlock.block === 'endLoop') {
6458
return {
6559
messageIdSuffix: 'delete',
6660
values: {
67-
commandType: this.intl.formatMessage({
61+
commandType: intl.formatMessage({
6862
id: "Announcement.control"
6963
}),
70-
command: this.intl.formatMessage(
64+
command: intl.formatMessage(
7165
{
7266
id: `Announcement.${programBlock.block}`
7367
},
@@ -81,10 +75,10 @@ export default class AnnouncementBuilder {
8175
return {
8276
messageIdSuffix: 'delete',
8377
values: {
84-
commandType: this.intl.formatMessage({
78+
commandType: intl.formatMessage({
8579
id: "Announcement.movement"
8680
}),
87-
command: this.intl.formatMessage(
81+
command: intl.formatMessage(
8882
{
8983
id: `Announcement.${programBlock.block}`
9084
}
@@ -95,15 +89,15 @@ export default class AnnouncementBuilder {
9589
}
9690

9791
buildReplaceStepAnnouncement(programBlock: ProgramBlock,
98-
selectedAction: string): AnnouncementData {
92+
selectedAction: string, intl: IntlShape): AnnouncementData {
9993

10094
return {
10195
messageIdSuffix: 'replace',
10296
values: {
103-
oldCommand: this.intl.formatMessage({
97+
oldCommand: intl.formatMessage({
10498
id: `Announcement.${programBlock.block}`
10599
}),
106-
newCommand: this.intl.formatMessage({
100+
newCommand: intl.formatMessage({
107101
id: `Announcement.${selectedAction}`
108102
})
109103
}

src/AnnouncementBuilder.test.js

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,20 @@ const intl = createIntl({
1010
messages: messages.en
1111
});
1212

13-
function createAnnouncementBuilder() {
14-
return new AnnouncementBuilder(intl);
15-
}
16-
1713
test('Test buildSelectActionAnnouncement()', () => {
1814
expect.assertions(2);
1915

20-
const announcementBuilder = createAnnouncementBuilder();
16+
const announcementBuilder = new AnnouncementBuilder();
2117

22-
expect(announcementBuilder.buildSelectActionAnnouncement('loop')).toStrictEqual({
18+
expect(announcementBuilder.buildSelectActionAnnouncement('loop', intl)).toStrictEqual({
2319
messageIdSuffix: 'actionSelected',
2420
values: {
2521
commandType: 'control',
2622
command: 'loop'
2723
}
2824
});
2925

30-
expect(announcementBuilder.buildSelectActionAnnouncement('forward1')).toStrictEqual({
26+
expect(announcementBuilder.buildSelectActionAnnouncement('forward1', intl)).toStrictEqual({
3127
messageIdSuffix: 'actionSelected',
3228
values: {
3329
commandType: 'movement',
@@ -39,17 +35,17 @@ test('Test buildSelectActionAnnouncement()', () => {
3935
test('Test buildAddStepAnnouncement()', () => {
4036
expect.assertions(2);
4137

42-
const announcementBuilder = createAnnouncementBuilder();
38+
const announcementBuilder = new AnnouncementBuilder();
4339

44-
expect(announcementBuilder.buildAddStepAnnouncement('loop')).toStrictEqual({
40+
expect(announcementBuilder.buildAddStepAnnouncement('loop', intl)).toStrictEqual({
4541
messageIdSuffix: 'add',
4642
values: {
4743
commandType: 'control',
4844
command: 'loop'
4945
}
5046
});
5147

52-
expect(announcementBuilder.buildAddStepAnnouncement('forward1')).toStrictEqual({
48+
expect(announcementBuilder.buildAddStepAnnouncement('forward1', intl)).toStrictEqual({
5349
messageIdSuffix: 'add',
5450
values: {
5551
commandType: 'movement',
@@ -60,15 +56,15 @@ test('Test buildAddStepAnnouncement()', () => {
6056

6157
describe('Test buildDeleteStepAnnouncement()', () => {
6258
test('startLoop', () => {
63-
const announcementBuilder = createAnnouncementBuilder();
59+
const announcementBuilder = new AnnouncementBuilder();
6460

6561
const startLoopBlock = {
6662
block: 'startLoop',
6763
label: 'A',
6864
iterations: 1
6965
};
7066

71-
expect(announcementBuilder.buildDeleteStepAnnouncement(startLoopBlock)).toStrictEqual({
67+
expect(announcementBuilder.buildDeleteStepAnnouncement(startLoopBlock, intl)).toStrictEqual({
7268
messageIdSuffix: 'delete',
7369
values: {
7470
commandType: 'control',
@@ -78,14 +74,14 @@ describe('Test buildDeleteStepAnnouncement()', () => {
7874
});
7975

8076
test('endLoop', () => {
81-
const announcementBuilder = createAnnouncementBuilder();
77+
const announcementBuilder = new AnnouncementBuilder();
8278

8379
const endLoopBlock = {
8480
block: 'endLoop',
8581
label: 'A'
8682
};
8783

88-
expect(announcementBuilder.buildDeleteStepAnnouncement(endLoopBlock)).toStrictEqual({
84+
expect(announcementBuilder.buildDeleteStepAnnouncement(endLoopBlock, intl)).toStrictEqual({
8985
messageIdSuffix: 'delete',
9086
values: {
9187
commandType: 'control',
@@ -95,13 +91,13 @@ describe('Test buildDeleteStepAnnouncement()', () => {
9591
});
9692

9793
test('forward1', () => {
98-
const announcementBuilder = createAnnouncementBuilder();
94+
const announcementBuilder = new AnnouncementBuilder();
9995

10096
const forwardBlock = {
10197
block: 'forward1'
10298
};
10399

104-
expect(announcementBuilder.buildDeleteStepAnnouncement(forwardBlock)).toStrictEqual({
100+
expect(announcementBuilder.buildDeleteStepAnnouncement(forwardBlock, intl)).toStrictEqual({
105101
messageIdSuffix: 'delete',
106102
values: {
107103
commandType: 'movement',
@@ -114,13 +110,13 @@ describe('Test buildDeleteStepAnnouncement()', () => {
114110
test('Test buildReplaceStepAnnouncement()', () => {
115111
expect.assertions(1);
116112

117-
const announcementBuilder = createAnnouncementBuilder();
113+
const announcementBuilder = new AnnouncementBuilder();
118114

119115
const forwardBlock = {
120116
block: 'forward1'
121117
};
122118

123-
expect(announcementBuilder.buildReplaceStepAnnouncement(forwardBlock, 'right45')).toStrictEqual({
119+
expect(announcementBuilder.buildReplaceStepAnnouncement(forwardBlock, 'right45', intl)).toStrictEqual({
124120
messageIdSuffix: 'replace',
125121
values: {
126122
oldCommand: 'forward 1 square',

src/App.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ export class App extends React.Component<AppProps, AppState> {
257257

258258
this.focusTrapManager = new FocusTrapManager();
259259

260-
this.announcementBuilder = new AnnouncementBuilder(this.props.intl);
260+
this.announcementBuilder = new AnnouncementBuilder();
261261

262262
this.characterDescriptionBuilder = new CharacterDescriptionBuilder();
263263

@@ -1997,7 +1997,7 @@ export class App extends React.Component<AppProps, AppState> {
19971997
19981998
if (this.state.selectedAction !== prevState.selectedAction
19991999
&& this.state.selectedAction != null) {
2000-
const announcementData = this.announcementBuilder.buildSelectActionAnnouncement(this.state.selectedAction);
2000+
const announcementData = this.announcementBuilder.buildSelectActionAnnouncement(this.state.selectedAction, this.props.intl);
20012001
this.audioManager.playAnnouncement(announcementData.messageIdSuffix,
20022002
this.props.intl, announcementData.values);
20032003
}

src/ProgramChangeController.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export default class ProgramChangeController {
2626
this.app = app;
2727
this.intl = intl;
2828
this.audioManager = audioManager;
29-
this.announcementBuilder = new AnnouncementBuilder(intl);
29+
this.announcementBuilder = new AnnouncementBuilder();
3030
}
3131

3232
insertSelectedActionIntoProgram(programBlockEditor: ?ProgramBlockEditor,
@@ -73,7 +73,7 @@ export default class ProgramChangeController {
7373
const currentStep = state.programSequence.getProgramStepAt(index);
7474
if (command === currentStep.block) {
7575
// Play the announcement
76-
const announcementData = this.announcementBuilder.buildDeleteStepAnnouncement(currentStep);
76+
const announcementData = this.announcementBuilder.buildDeleteStepAnnouncement(currentStep, this.intl);
7777
this.audioManager.playAnnouncement(announcementData.messageIdSuffix,
7878
this.intl, announcementData.values);
7979

@@ -125,7 +125,7 @@ export default class ProgramChangeController {
125125
} else if (selectedAction) {
126126
// Play the announcement
127127
const announcementData = this.announcementBuilder.buildReplaceStepAnnouncement(
128-
currentStep, selectedAction);
128+
currentStep, selectedAction, this.intl);
129129
this.audioManager.playAnnouncement(announcementData.messageIdSuffix,
130130
this.intl, announcementData.values);
131131

@@ -215,7 +215,7 @@ export default class ProgramChangeController {
215215
// Internal methods
216216

217217
playAnnouncementForAdd(action: string) {
218-
const announcementData = this.announcementBuilder.buildAddStepAnnouncement(action);
218+
const announcementData = this.announcementBuilder.buildAddStepAnnouncement(action, this.intl);
219219
this.audioManager.playAnnouncement(announcementData.messageIdSuffix,
220220
this.intl, announcementData.values);
221221
}

0 commit comments

Comments
 (0)