Skip to content

Commit 9fa168a

Browse files
committed
Reset game progress on visiting a pattern reference
1 parent 4565c9a commit 9fa168a

File tree

1 file changed

+51
-37
lines changed

1 file changed

+51
-37
lines changed

src/components/Pattern.jsx

Lines changed: 51 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import js from 'react-syntax-highlighter/dist/languages/hljs/javascript';
88
import styleLight from '../styles/hljs/hljs.light';
99
import styleDark from '../styles/hljs/hljs.dark';
1010
import { patterns } from '../static/patterns';
11+
import { restart } from '../actions/restart';
1112
import { getMode } from '../selectors';
1213

1314
SyntaxHighlighter.registerLanguage('javascript', js);
@@ -39,50 +40,63 @@ const StyledLink = styled(Link)`
3940
}
4041
`;
4142

42-
const Pattern = ({ match, mode }) => {
43-
const {
44-
params: { id }
45-
} = match;
43+
// const Pattern = ({ match, mode }) => {
44+
class Pattern extends React.Component {
45+
componentDidMount() {
46+
this.props.reset();
47+
}
4648

47-
const pattern = patterns.filter(item => item.id === id)[0];
49+
render() {
50+
const {
51+
params: { id }
52+
} = this.props.match;
4853

49-
const style = mode === 'dark' ? styleDark : styleLight;
54+
const pattern = patterns.filter(item => item.id === id)[0];
5055

51-
return (
52-
<StyledPattern>
53-
<StyledLink to="/patterns">&larr; Back to Patterns List</StyledLink>
54-
{pattern && (
55-
<React.Fragment>
56-
<h2>{pattern.name}</h2>
57-
<p>
58-
<Memo>Type:</Memo>
59-
{pattern.type} pattern
60-
</p>
61-
<p>
62-
<Memo>Description:</Memo>
63-
{`This pattern ${pattern.hint}.`}
64-
</p>
56+
const style = this.props.mode === 'dark' ? styleDark : styleLight;
6557

66-
<h3>ES5</h3>
67-
<SyntaxHighlighter language="javascript" style={style}>
68-
{pattern.codeES5}
69-
</SyntaxHighlighter>
58+
return (
59+
<StyledPattern>
60+
<StyledLink to="/patterns">&larr; Back to Patterns List</StyledLink>
61+
{pattern && (
62+
<React.Fragment>
63+
<h2>{pattern.name}</h2>
64+
<p>
65+
<Memo>Type:</Memo>
66+
{pattern.type} pattern
67+
</p>
68+
<p>
69+
<Memo>Description:</Memo>
70+
{`This pattern ${pattern.hint}.`}
71+
</p>
7072

71-
<h3>ES6</h3>
72-
<SyntaxHighlighter language="javascript" style={style}>
73-
{pattern.codeES6}
74-
</SyntaxHighlighter>
75-
</React.Fragment>
76-
)}
77-
</StyledPattern>
78-
);
79-
};
73+
<h3>ES5</h3>
74+
<SyntaxHighlighter language="javascript" style={style}>
75+
{pattern.codeES5}
76+
</SyntaxHighlighter>
77+
78+
<h3>ES6</h3>
79+
<SyntaxHighlighter language="javascript" style={style}>
80+
{pattern.codeES6}
81+
</SyntaxHighlighter>
82+
</React.Fragment>
83+
)}
84+
</StyledPattern>
85+
);
86+
}
87+
}
8088

8189
Pattern.propTypes = {
8290
match: PropTypes.object.isRequired,
83-
mode: PropTypes.string.isRequired
91+
mode: PropTypes.string.isRequired,
92+
reset: PropTypes.func.isRequired
8493
};
8594

86-
export default connect(state => ({
87-
mode: getMode(state)
88-
}))(Pattern);
95+
export default connect(
96+
state => ({
97+
mode: getMode(state)
98+
}),
99+
{
100+
reset: () => restart()
101+
}
102+
)(Pattern);

0 commit comments

Comments
 (0)