This commit is contained in:
Nathan Bierema 2020-09-11 12:37:55 -04:00
parent 11add6a54c
commit c746f29e9d

View File

@ -8,16 +8,20 @@ import {
Notification, Notification,
Dialog, Dialog,
} from 'devui'; } from 'devui';
import { formSchema, uiSchema, defaultFormData } from './templateForm';
import { MdAdd } from 'react-icons/md'; import { MdAdd } from 'react-icons/md';
import { MdEdit } from 'react-icons/md'; import { MdEdit } from 'react-icons/md';
import { Action } from 'redux';
import { TabComponentProps } from 'redux-devtools-inspector-monitor';
import { formSchema, uiSchema, defaultFormData } from './templateForm';
import TestGenerator from './TestGenerator'; import TestGenerator from './TestGenerator';
import jestTemplate from './redux/jest/template'; import jestTemplate from './redux/jest/template';
import mochaTemplate from './redux/mocha/template'; import mochaTemplate from './redux/mocha/template';
import tapeTemplate from './redux/tape/template'; import tapeTemplate from './redux/tape/template';
import avaTemplate from './redux/ava/template'; import avaTemplate from './redux/ava/template';
import { Template } from './types';
import { DevtoolsInspectorState } from 'redux-devtools-inspector-monitor/lib/redux';
export const getDefaultTemplates = (/* lib */) => export const getDefaultTemplates = (/* lib */): Template[] =>
/* /*
if (lib === 'redux') { if (lib === 'redux') {
return [mochaTemplate, tapeTemplate, avaTemplate]; return [mochaTemplate, tapeTemplate, avaTemplate];
@ -26,15 +30,27 @@ export const getDefaultTemplates = (/* lib */) =>
*/ */
[jestTemplate, mochaTemplate, tapeTemplate, avaTemplate]; [jestTemplate, mochaTemplate, tapeTemplate, avaTemplate];
export default class TestTab extends Component { interface TestGeneratorMonitorState {
constructor(props) { hideTip?: boolean;
super(props); selected?: number;
this.state = { dialogStatus: null }; templates: Template[];
} }
getPersistedState = () => this.props.monitorState.testGenerator || {}; interface State {
dialogStatus: 'Add' | 'Edit' | null;
}
handleSelectTemplate = (selectedTemplate) => { export default class TestTab<S, A extends Action<unknown>> extends Component<
TabComponentProps<S, A>,
State
> {
state: State = { dialogStatus: null };
getPersistedState = (): TestGeneratorMonitorState =>
(this.props.monitorState as { testGenerator?: TestGeneratorMonitorState })
.testGenerator || {};
handleSelectTemplate = (selectedTemplate: Template) => {
const { templates = getDefaultTemplates() } = this.getPersistedState(); const { templates = getDefaultTemplates() } = this.getPersistedState();
this.updateState({ selected: templates.indexOf(selectedTemplate) }); this.updateState({ selected: templates.indexOf(selectedTemplate) });
}; };
@ -93,10 +109,12 @@ export default class TestTab extends Component {
updateState = (newState) => { updateState = (newState) => {
this.props.updateMonitorState({ this.props.updateMonitorState({
testGenerator: { testGenerator: {
...this.props.monitorState.testGenerator, ...(this.props.monitorState as {
testGenerator?: TestGeneratorMonitorState;
}).testGenerator,
...newState, ...newState,
}, },
}); } as Partial<DevtoolsInspectorState>);
}; };
render() { render() {
@ -164,20 +182,20 @@ export default class TestTab extends Component {
</Container> </Container>
); );
} }
}
TestTab.propTypes = { static propTypes = {
monitorState: PropTypes.shape({ monitorState: PropTypes.shape({
testGenerator: PropTypes.shape({ testGenerator: PropTypes.shape({
templates: PropTypes.array, templates: PropTypes.array,
selected: PropTypes.number, selected: PropTypes.number,
hideTip: PropTypes.bool, hideTip: PropTypes.bool,
}), }),
}).isRequired, }).isRequired,
/* /*
options: PropTypes.shape({ options: PropTypes.shape({
lib: PropTypes.string lib: PropTypes.string
}).isRequired, }).isRequired,
*/ */
updateMonitorState: PropTypes.func.isRequired, updateMonitorState: PropTypes.func.isRequired,
}; };
}