fix: Refactor challenge mounting and updating
componentDidMount and componentDidUpdate share a lot of code. This just DRYs them out.
This commit is contained in:
committed by
mrugesh
parent
a8c86f6168
commit
6a2974e55e
@ -97,23 +97,7 @@ export class BackEnd extends Component {
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
const {
|
||||
challengeMounted,
|
||||
initConsole,
|
||||
initTests,
|
||||
updateChallengeMeta,
|
||||
data: {
|
||||
challengeNode: {
|
||||
fields: { tests },
|
||||
challengeType
|
||||
}
|
||||
},
|
||||
pageContext: { challengeMeta }
|
||||
} = this.props;
|
||||
initConsole('');
|
||||
initTests(tests);
|
||||
updateChallengeMeta({ ...challengeMeta, challengeType });
|
||||
challengeMounted(challengeMeta.id);
|
||||
this.initializeComponent();
|
||||
window.addEventListener('resize', this.updateDimensions);
|
||||
}
|
||||
|
||||
@ -131,6 +115,17 @@ export class BackEnd extends Component {
|
||||
challengeNode: { title: prevTitle }
|
||||
}
|
||||
} = prevProps;
|
||||
const {
|
||||
data: {
|
||||
challengeNode: { title: currentTitle }
|
||||
}
|
||||
} = this.props;
|
||||
if (prevTitle !== currentTitle) {
|
||||
this.initializeComponent();
|
||||
}
|
||||
}
|
||||
|
||||
initializeComponent() {
|
||||
const {
|
||||
challengeMounted,
|
||||
initConsole,
|
||||
@ -138,19 +133,16 @@ export class BackEnd extends Component {
|
||||
updateChallengeMeta,
|
||||
data: {
|
||||
challengeNode: {
|
||||
title: currentTitle,
|
||||
fields: { tests },
|
||||
challengeType
|
||||
}
|
||||
},
|
||||
pageContext: { challengeMeta }
|
||||
} = this.props;
|
||||
if (prevTitle !== currentTitle) {
|
||||
initConsole('');
|
||||
initTests(tests);
|
||||
updateChallengeMeta({ ...challengeMeta, challengeType });
|
||||
challengeMounted(challengeMeta.id);
|
||||
}
|
||||
initConsole('');
|
||||
initTests(tests);
|
||||
updateChallengeMeta({ ...challengeMeta, challengeType });
|
||||
challengeMounted(challengeMeta.id);
|
||||
}
|
||||
|
||||
handleSubmit(values) {
|
||||
|
@ -104,6 +104,31 @@ class ShowClassic extends Component {
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
const {
|
||||
data: {
|
||||
challengeNode: { title }
|
||||
}
|
||||
} = this.props;
|
||||
this.initializeComponent(title);
|
||||
}
|
||||
|
||||
componentDidUpdate(prevProps) {
|
||||
const {
|
||||
data: {
|
||||
challengeNode: { title: prevTitle }
|
||||
}
|
||||
} = prevProps;
|
||||
const {
|
||||
data: {
|
||||
challengeNode: { title: currentTitle }
|
||||
}
|
||||
} = this.props;
|
||||
if (prevTitle !== currentTitle) {
|
||||
this.initializeComponent(currentTitle);
|
||||
}
|
||||
}
|
||||
|
||||
initializeComponent(title) {
|
||||
const {
|
||||
challengeMounted,
|
||||
createFiles,
|
||||
@ -113,7 +138,6 @@ class ShowClassic extends Component {
|
||||
data: {
|
||||
challengeNode: {
|
||||
files,
|
||||
title,
|
||||
fields: { tests },
|
||||
challengeType
|
||||
}
|
||||
@ -127,41 +151,6 @@ class ShowClassic extends Component {
|
||||
challengeMounted(challengeMeta.id);
|
||||
}
|
||||
|
||||
componentDidUpdate(prevProps) {
|
||||
const {
|
||||
data: {
|
||||
challengeNode: { title: prevTitle }
|
||||
}
|
||||
} = prevProps;
|
||||
const {
|
||||
challengeMounted,
|
||||
createFiles,
|
||||
initConsole,
|
||||
initTests,
|
||||
updateChallengeMeta,
|
||||
data: {
|
||||
challengeNode: {
|
||||
files,
|
||||
title: currentTitle,
|
||||
fields: { tests },
|
||||
challengeType
|
||||
}
|
||||
},
|
||||
pageContext: { challengeMeta }
|
||||
} = this.props;
|
||||
if (prevTitle !== currentTitle) {
|
||||
initConsole('');
|
||||
createFiles(files);
|
||||
initTests(tests);
|
||||
updateChallengeMeta({
|
||||
...challengeMeta,
|
||||
title: currentTitle,
|
||||
challengeType
|
||||
});
|
||||
challengeMounted(challengeMeta.id);
|
||||
}
|
||||
}
|
||||
|
||||
componentWillUnmount() {
|
||||
const { createFiles } = this.props;
|
||||
createFiles({});
|
||||
|
Reference in New Issue
Block a user