diff --git a/main.js b/main.js index 2217f94..f139395 100644 --- a/main.js +++ b/main.js @@ -1,49 +1,44 @@ var html = require('yo-yo') var through = require('through2') -var ws = require('websocket-stream')('ws://localhost:5000' ) +var EventEmitter = require('events').EventEmitter +var websocket = require('websocket-stream') + +var ws = websocket('ws://localhost:5000' ) + var root = document.body.appendChild(document.createElement('div')) var state = { username: 'hey_joe', rooms: [] } +var bus = new EventEmitter() + +require('./reducer.js')(bus, state) +bus.on('update', update) -update(state) +update() ws.pipe(through(function (buff, enc, next) { var msg = buff.toString() if (/create_chat/.test(msg)) { var room = JSON.parse(msg.split('!')[1]) - state.rooms.push(room) + bus.emit('add-chat-room', room) } else { var data = msg.split('!') var chat_id = data[1] var message = data[2] - var room = state.rooms.find(function (room) { - return room.id === chat_id - }) - - if (room) room.messages.push(message) + bus.emit('add-message-into-chat', chat_id, message) } - update(state) next() })) ws.write('connection!' + state.username) -fetch('http://localhost:5000/chats?user=' + state.username) - .then(function (res) { - return res.json() - }) - .then(function updateRooms (rooms) { - state.rooms = rooms || [] - - update(state) - }) +bus.emit('fetch-chat-rooms') -function update(state) { +function update() { html.update(root, html`