diff --git a/package.json b/package.json index 133cbba..e51fc87 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "shortid": "^2.2.8", "style-loader": "^0.18.2", "webpack": "^3.5.4", - "webpack-dev-server": "^2.7.1" + "webpack-dev-server": "^2.7.1", + "whatwg-fetch": "^2.0.3" } } diff --git a/src/index.js b/src/index.js index e4848ba..504cfa3 100644 --- a/src/index.js +++ b/src/index.js @@ -59,17 +59,25 @@ const onComposeChange = store.actionFactory( payload => ({ payload, })); -const onSendMessage = store.actionFactory( state => ({ +const createMessagePayload = (text, self) => ({ type: 'ADD_MESSAGE', payload: fromJS({ id: shortid.generate(), - name: 'You', - avatar: 'http://assets.rikerchat.joshdavidmiller.com/troi.jpg', - self: true, - text: state.getIn([ 'compose', 'message' ]), + name: self ? 'You' : 'Riker', + avatar: `http://assets.rikerchat.joshdavidmiller.com/${self ? 'troi' : 'riker'}.jpg`, + self, + text, }), -})); +}); + +const onSendMessage = store.actionFactory(state => (dispatch, getState) => { + dispatch(createMessagePayload(state.getIn(['compose', 'message']), true)); + fetch('https://api.rikerchat.joshdavidmiller.com/messages/random') + .then(response => response.json()) + .then(response => createMessagePayload(response.message, false)) + .then(action => dispatch(action)) +}); const render = state => ReactDOM.render( this.dispatch(...args), () => this.getState); + } + return this._dispatch(action); + }, + actionFactory ( fn ) { return ( ...args ) => this.dispatch( fn( ...args, this.state ) ); },