summaryrefslogtreecommitdiffstats
path: root/front/odiparpack/app/containers/Pages/Chat
diff options
context:
space:
mode:
authorgabrhr <[email protected]>2022-04-20 10:19:29 -0500
committergabrhr <[email protected]>2022-04-20 10:19:29 -0500
commite13e630cd6e4fc0b1ff92098a28a770794c7bb9a (patch)
treee68ad2f947d1b3ec454529b35f37ca2f223e5431 /front/odiparpack/app/containers/Pages/Chat
parent457816ac1129fcc6019d2fc795b6693ee6776d59 (diff)
downloadDP1_project-e13e630cd6e4fc0b1ff92098a28a770794c7bb9a.tar.gz
DP1_project-e13e630cd6e4fc0b1ff92098a28a770794c7bb9a.tar.bz2
DP1_project-e13e630cd6e4fc0b1ff92098a28a770794c7bb9a.zip
AƱadir plantilla
Base para front
Diffstat (limited to 'front/odiparpack/app/containers/Pages/Chat')
-rw-r--r--front/odiparpack/app/containers/Pages/Chat/index.js123
1 files changed, 123 insertions, 0 deletions
diff --git a/front/odiparpack/app/containers/Pages/Chat/index.js b/front/odiparpack/app/containers/Pages/Chat/index.js
new file mode 100644
index 0000000..99cf875
--- /dev/null
+++ b/front/odiparpack/app/containers/Pages/Chat/index.js
@@ -0,0 +1,123 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import { withStyles } from '@material-ui/core/styles';
+import { bindActionCreators } from 'redux';
+import { connect } from 'react-redux';
+import contactData from 'ba-api/contactData';
+import chatData from 'ba-api/chatData';
+import { Helmet } from 'react-helmet';
+import brand from 'ba-api/brand';
+import { fetchAction, searchAction } from 'ba-actions/ContactActions';
+import {
+ fetchChatAction,
+ showChatAction,
+ sendAction,
+ hideDetailAction,
+ deleteAction
+} from 'ba-actions/ChatActions';
+import { ContactList, ChatHeader, ChatRoom } from 'ba-components';
+import styles from 'ba-components/Contact/contact-jss';
+
+class Chat extends React.Component {
+ componentDidMount() {
+ this.props.fetchChatData(chatData);
+ this.props.fetchContactData(contactData);
+ }
+
+ render() {
+ const title = brand.name + ' - Chat App';
+ const description = brand.desc;
+ const {
+ classes,
+ dataContact,
+ showDetail,
+ hideDetail,
+ keyword,
+ search,
+ dataChat,
+ chatSelected,
+ sendMessage,
+ remove,
+ showMobileDetail
+ } = this.props;
+ return (
+ <div>
+ <Helmet>
+ <title>{title}</title>
+ <meta name="description" content={description} />
+ <meta property="og:title" content={title} />
+ <meta property="og:description" content={description} />
+ <meta property="twitter:title" content={title} />
+ <meta property="twitter:description" content={description} />
+ </Helmet>
+ <div className={classes.root}>
+ <ChatHeader
+ dataContact={dataContact}
+ chatSelected={chatSelected}
+ remove={remove}
+ showMobileDetail={showMobileDetail}
+ hideDetail={hideDetail}
+ />
+ <ContactList
+ itemSelected={chatSelected}
+ dataContact={dataContact}
+ showDetail={showDetail}
+ search={search}
+ keyword={keyword}
+ />
+ <ChatRoom
+ showMobileDetail={showMobileDetail}
+ dataChat={dataChat}
+ chatSelected={chatSelected}
+ dataContact={dataContact}
+ sendMessage={sendMessage}
+ />
+ </div>
+ </div>
+ );
+ }
+}
+
+Chat.propTypes = {
+ classes: PropTypes.object.isRequired,
+ fetchContactData: PropTypes.func.isRequired,
+ fetchChatData: PropTypes.func.isRequired,
+ showDetail: PropTypes.func.isRequired,
+ hideDetail: PropTypes.func.isRequired,
+ sendMessage: PropTypes.func.isRequired,
+ search: PropTypes.func.isRequired,
+ remove: PropTypes.func.isRequired,
+ keyword: PropTypes.string.isRequired,
+ dataContact: PropTypes.object.isRequired,
+ dataChat: PropTypes.object.isRequired,
+ chatSelected: PropTypes.number.isRequired,
+ showMobileDetail: PropTypes.bool.isRequired,
+};
+
+const reducerContact = 'contact';
+const reducerChat = 'chat';
+const mapStateToProps = state => ({
+ force: state, // force state from reducer
+ dataContact: state.getIn([reducerContact, 'contactList']),
+ dataChat: state.getIn([reducerChat, 'activeChat']),
+ chatSelected: state.getIn([reducerChat, 'chatSelected']),
+ showMobileDetail: state.getIn([reducerChat, 'showMobileDetail']),
+ keyword: state.getIn([reducerContact, 'keywordValue']),
+});
+
+const dispatchToProps = dispatch => ({
+ fetchContactData: bindActionCreators(fetchAction, dispatch),
+ hideDetail: () => dispatch(hideDetailAction),
+ fetchChatData: bindActionCreators(fetchChatAction, dispatch),
+ showDetail: bindActionCreators(showChatAction, dispatch),
+ search: bindActionCreators(searchAction, dispatch),
+ sendMessage: bindActionCreators(sendAction, dispatch),
+ remove: () => dispatch(deleteAction),
+});
+
+const ChatMapped = connect(
+ mapStateToProps,
+ dispatchToProps
+)(Chat);
+
+export default withStyles(styles)(ChatMapped);