11import React from 'react' ;
22import io from 'socket.io-client' ;
3+ import uid from 'uid' ;
34import MessageList from './MessageList' ;
45
56
@@ -10,32 +11,42 @@ export default class Discussions extends React.Component {
1011 this . state = { messages : [ ] } ;
1112 this . _dataValue = this . _dataValue . bind ( this ) ;
1213 this . _MessageSend = this . _MessageSend . bind ( this ) ;
14+ this . user = uid ( 10 ) ;
1315 }
1416
1517 componentDidMount ( ) {
1618 this . socket = io ( 'localhost:3000' ) ;
19+
20+ this . socket . on ( 'message' , ( message ) => {
21+ if ( message . user !== this . user ) {
22+ this . _MessageSend ( message ) ;
23+ }
24+ } )
1725 }
1826
19- _dataValue ( text ) {
20- let textValue = text . target . value ;
27+ _dataValue ( ev ) {
28+
29+ ev . preventDefault ( ) ;
30+
31+ let textValue = document . getElementById ( 'textarea' ) . value ;
2132 const avatar = this . props . avatar ;
2233 const username = this . props . username ;
2334
24- let message = { avatar : avatar , username : username , message : textValue } ;
25- this . state . messages . push ( message ) ;
35+ if ( textValue !== '' ) {
36+
37+ let message = { avatar : avatar , username : username , message : textValue } ;
38+ this . _MessageSend ( message ) ;
39+ this . socket . emit ( 'new-message' , message ) ;
40+ document . getElementById ( 'textarea' ) . value = '' ;
41+ }
42+
2643 }
2744
28- _MessageSend ( ev ) {
29- ev . preventDefault ( ) ;
30- let MessageGlobal = this . state . messages ;
45+ _MessageSend ( message ) {
3146
32- for ( let cont = 0 ; cont <= MessageGlobal . length - 1 ; cont ++ ) {
33- if ( cont === MessageGlobal . length - 1 ) {
34- let dataMessage = [ MessageGlobal [ cont ] ] ;
35- this . setState ( { messages : dataMessage } )
36- }
37- }
38- document . getElementById ( 'textarea' ) . value = '' ;
47+ this . state . messages . push ( message ) ;
48+ let MessageGlobal = this . state . messages ;
49+ this . setState ( { messages : MessageGlobal } ) ;
3950 }
4051
4152 render ( ) {
@@ -56,8 +67,8 @@ export default class Discussions extends React.Component {
5667
5768
5869 < form className = "Message-form" method = "POST" >
59- < textarea id = "textarea" placeholder = "Write message..." onChange = { this . _dataValue } > </ textarea >
60- < button type = "submit" onClick = { this . _MessageSend } > Click </ button >
70+ < textarea id = "textarea" placeholder = "Write message..." > </ textarea >
71+ < button type = "submit" onClick = { this . _dataValue } > Send </ button >
6172 </ form >
6273
6374 </ div >
0 commit comments