Skip to content

Commit 64c36ca

Browse files
authored
Merge pull request #2994 from adityagarg06/refactor/themeprovider
Refactor ThemeProvider
2 parents 8980fe5 + 8018155 commit 64c36ca

File tree

4 files changed

+18
-31
lines changed

4 files changed

+18
-31
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,18 @@
11
import React from 'react';
22
import PropTypes from 'prop-types';
3-
import { connect } from 'react-redux';
3+
import { useSelector } from 'react-redux';
44
import { ThemeProvider } from 'styled-components';
5+
import theme from '../../../theme';
56

6-
import theme, { Theme } from '../../../theme';
7-
8-
const Provider = ({ children, currentTheme }) => (
9-
<ThemeProvider theme={{ ...theme[currentTheme] }}>{children}</ThemeProvider>
10-
);
7+
const Provider = ({ children }) => {
8+
const currentTheme = useSelector((state) => state.preferences.theme);
9+
return (
10+
<ThemeProvider theme={{ ...theme[currentTheme] }}>{children}</ThemeProvider>
11+
);
12+
};
1113

1214
Provider.propTypes = {
13-
children: PropTypes.node.isRequired,
14-
currentTheme: PropTypes.oneOf(Object.keys(Theme)).isRequired
15+
children: PropTypes.node.isRequired
1516
};
1617

17-
function mapStateToProps(state) {
18-
return {
19-
currentTheme: state.preferences.theme
20-
};
21-
}
22-
23-
export default connect(mapStateToProps)(Provider);
18+
export default Provider;

client/modules/IDE/components/Preferences/Preferences.unit.test.jsx

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React from 'react';
22
import { act, fireEvent, reduxRender, screen } from '../../../../test-utils';
3+
import { initialState } from '../../reducers/preferences';
34
import Preferences from './index';
45
import * as PreferencesActions from '../../actions/preferences';
56

@@ -15,7 +16,10 @@ describe('<Preferences />', () => {
1516
const subject = (initialPreferences = {}) =>
1617
reduxRender(<Preferences />, {
1718
initialState: {
18-
preferences: initialPreferences
19+
preferences: {
20+
...initialState,
21+
...initialPreferences
22+
}
1923
}
2024
});
2125

client/modules/IDE/reducers/preferences.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as ActionTypes from '../../../constants';
22

3-
const initialState = {
3+
export const initialState = {
44
fontSize: 18,
55
autosave: true,
66
linewrap: true,

client/testData/testReduxStore.js

+2-14
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { initialState as initialFilesState } from '../modules/IDE/reducers/files';
2+
import { initialState as initialPrefState } from '../modules/IDE/reducers/preferences';
23

34
const mockProjects = [
45
{
@@ -46,20 +47,7 @@ const initialTestState = {
4647
parentId: undefined
4748
},
4849
files: initialFilesState(),
49-
preferences: {
50-
fontSize: 18,
51-
autosave: true,
52-
linewrap: true,
53-
lineNumbers: true,
54-
lintWarning: false,
55-
textOutput: false,
56-
gridOutput: false,
57-
theme: 'light',
58-
autorefresh: false,
59-
language: 'en-US',
60-
autocloseBracketsQuotes: true,
61-
autocompleteHinter: false
62-
},
50+
preferences: initialPrefState,
6351
user: {
6452
6553
username: 'happydog',

0 commit comments

Comments
 (0)