mirror of
https://github.com/reduxjs/redux-devtools.git
synced 2024-11-24 18:43:54 +03:00
96ac1f291a
This change splits out the main logic from the Redux Devtools App into a new core package but keeps the socket connection management in @redux-devtools/app. The aim is to allow for easier reuse of the rest of the app in other envioronments with their own transport methods, such as React Native or Electron.
57 lines
1.5 KiB
TypeScript
57 lines
1.5 KiB
TypeScript
import React, { Component } from 'react';
|
|
import { connect, ResolveThunks } from 'react-redux';
|
|
import { Container, Notification } from '@redux-devtools/ui';
|
|
import { clearNotification } from '../actions';
|
|
import Header from '../components/Header';
|
|
import Actions from './Actions';
|
|
import Settings from '../components/Settings';
|
|
import { CoreStoreState } from '../reducers';
|
|
|
|
type StateProps = ReturnType<typeof mapStateToProps>;
|
|
type DispatchProps = ResolveThunks<typeof actionCreators>;
|
|
type OwnProps = {
|
|
extraSettingsTabs?: { name: string; component: React.ComponentType }[];
|
|
};
|
|
type Props = StateProps & DispatchProps & OwnProps;
|
|
|
|
class App extends Component<Props> {
|
|
render() {
|
|
const { extraSettingsTabs, section, theme, notification } = this.props;
|
|
let body;
|
|
switch (section) {
|
|
case 'Settings':
|
|
body = <Settings extraTabs={extraSettingsTabs} />;
|
|
break;
|
|
default:
|
|
body = <Actions />;
|
|
}
|
|
|
|
return (
|
|
<Container themeData={theme}>
|
|
<Header section={section} />
|
|
{body}
|
|
{notification && (
|
|
<Notification
|
|
type={notification.type}
|
|
onClose={this.props.clearNotification}
|
|
>
|
|
{notification.message}
|
|
</Notification>
|
|
)}
|
|
</Container>
|
|
);
|
|
}
|
|
}
|
|
|
|
const mapStateToProps = (state: CoreStoreState) => ({
|
|
section: state.section,
|
|
theme: state.theme,
|
|
notification: state.notification,
|
|
});
|
|
|
|
const actionCreators = {
|
|
clearNotification,
|
|
};
|
|
|
|
export default connect(mapStateToProps, actionCreators)(App);
|