Skip to content
This repository was archived by the owner on Jan 14, 2022. It is now read-only.

Commit 0780dad

Browse files
committed
fixed too many events bug
1 parent 7ce00d7 commit 0780dad

File tree

4 files changed

+72
-22
lines changed

4 files changed

+72
-22
lines changed

browser/render/layouts/list-and-detail/snippet-detail-multi-file/index.jsx

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,16 @@ export default class SnippetDetailMultiFile extends React.Component {
3131
}
3232

3333
componentDidMount () {
34-
eventEmitter.on('snippets:saveAll', this.handleSaveChangesEvent.bind(this))
35-
eventEmitter.on(
36-
'snippets:unSave',
37-
this.handleDiscardChangesEvent.bind(this)
38-
)
34+
if (this.state.isEditing) {
35+
eventEmitter.on(
36+
'snippets:saveAll',
37+
this.handleSaveChangesEvent.bind(this)
38+
)
39+
eventEmitter.on(
40+
'snippets:unSave',
41+
this.handleDiscardChangesEvent.bind(this)
42+
)
43+
}
3944
}
4045

4146
componentWillUnmount () {

browser/render/layouts/list-and-detail/snippet-detail/index.jsx

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,16 @@ export default class SnippetDetail extends React.Component {
2828
}
2929

3030
componentDidMount () {
31-
eventEmitter.on('snippets:saveAll', this.handleSaveChangesEvent.bind(this))
32-
eventEmitter.on(
33-
'snippets:unSave',
34-
this.handleDiscardChangesEvent.bind(this)
35-
)
31+
if (this.state.isEditing) {
32+
eventEmitter.on(
33+
'snippets:saveAll',
34+
this.handleSaveChangesEvent.bind(this)
35+
)
36+
eventEmitter.on(
37+
'snippets:unSave',
38+
this.handleDiscardChangesEvent.bind(this)
39+
)
40+
}
3641
}
3742

3843
componentWillUnmount () {

browser/render/layouts/original/snippet-item-multi-files/index.jsx

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,11 @@ export default class SnippetItemMultiFiles extends React.Component {
3030
}
3131
}
3232

33-
componentDidMount () {
33+
componentWillUnmount () {
34+
this.unbindEvents()
35+
}
36+
37+
bindEvents () {
3438
eventEmitter.on('snippets:saveAll', () => {
3539
if (this.state.isEditing && this.hasFocus()) {
3640
this.handleSaveChangesClick()
@@ -43,6 +47,19 @@ export default class SnippetItemMultiFiles extends React.Component {
4347
})
4448
}
4549

50+
unbindEvents () {
51+
eventEmitter.off('snippets:saveAll', () => {
52+
if (this.state.isEditing && this.hasFocus()) {
53+
this.handleSaveChangesClick()
54+
}
55+
})
56+
eventEmitter.off('snippets:unSave', () => {
57+
if (this.state.isEditing && this.hasFocus()) {
58+
this.handleDiscardChangesClick()
59+
}
60+
})
61+
}
62+
4663
hasFocus () {
4764
const { editor, lang, name, tags, description } = this.refs
4865
return (
@@ -185,6 +202,7 @@ export default class SnippetItemMultiFiles extends React.Component {
185202
}
186203
this.setState({ isEditing: false })
187204
editor.setOption('readOnly', true)
205+
this.unbindEvents()
188206
}
189207

190208
handleEditButtonClick () {
@@ -194,6 +212,7 @@ export default class SnippetItemMultiFiles extends React.Component {
194212
editor.applyEditorStyle()
195213
this.setState({ editingFiles: snippet.files })
196214
editor.setOption('readOnly', false)
215+
this.bindEvents()
197216
})
198217
}
199218

@@ -208,6 +227,7 @@ export default class SnippetItemMultiFiles extends React.Component {
208227
},
209228
() => {
210229
editor.setOption('readOnly', true)
230+
this.unbindEvents()
211231
}
212232
)
213233
}

browser/render/layouts/original/snippet-item/index.jsx

Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,8 @@ export default class SnippetItem extends React.Component {
2727
}
2828
}
2929

30-
componentDidMount () {
31-
eventEmitter.on('snippets:saveAll', () => {
32-
if (this.state.isEditing && this.hasFocus()) {
33-
this.handleSaveChangesClick()
34-
}
35-
})
36-
eventEmitter.on('snippets:unSave', () => {
37-
if (this.state.isEditing && this.hasFocus()) {
38-
this.handleDiscardChangesClick()
39-
}
40-
})
30+
componentWillUnmount () {
31+
this.unbindEvents()
4132
}
4233

4334
hasFocus () {
@@ -71,6 +62,33 @@ export default class SnippetItem extends React.Component {
7162
const { editor } = this.refs
7263
this.setState({ isEditing: true })
7364
editor.setOption('readOnly', false)
65+
this.bindEvents()
66+
}
67+
68+
bindEvents () {
69+
eventEmitter.on('snippets:saveAll', () => {
70+
if (this.state.isEditing && this.hasFocus()) {
71+
this.handleSaveChangesClick()
72+
}
73+
})
74+
eventEmitter.on('snippets:unSave', () => {
75+
if (this.state.isEditing && this.hasFocus()) {
76+
this.handleDiscardChangesClick()
77+
}
78+
})
79+
}
80+
81+
unbindEvents () {
82+
eventEmitter.off('snippets:saveAll', () => {
83+
if (this.state.isEditing && this.hasFocus()) {
84+
this.handleSaveChangesClick()
85+
}
86+
})
87+
eventEmitter.off('snippets:unSave', () => {
88+
if (this.state.isEditing && this.hasFocus()) {
89+
this.handleDiscardChangesClick()
90+
}
91+
})
7492
}
7593

7694
handleSaveChangesClick () {
@@ -109,6 +127,7 @@ export default class SnippetItem extends React.Component {
109127

110128
this.setState({ isEditing: false })
111129
editor.setOption('readOnly', true)
130+
this.unbindEvents()
112131
}
113132

114133
handleDeleteClick () {
@@ -233,6 +252,7 @@ export default class SnippetItem extends React.Component {
233252
this.setState({ isEditing: false }, () => {
234253
editor.setOption('readOnly', true)
235254
})
255+
this.unbindEvents()
236256
}
237257

238258
renderTagList () {

0 commit comments

Comments
 (0)