wip/format event objects to human readable form

This commit is contained in:
Riku Rouvila
2015-01-28 21:59:26 +02:00
parent 16065d88f0
commit ab8648920a
3 changed files with 70 additions and 12 deletions

View File

@@ -18,8 +18,10 @@
"dependencies": {
"axios": "^0.4.2",
"lodash": "^2.4.1",
"parse-github-event": "^0.2.0",
"react": "^0.12.2",
"timeago": "^0.2.0"
"timeago": "^0.2.0",
"twitter-text": "^1.11.0"
},
"devDependencies": {
"6to5ify": "^3.1.2",

View File

@@ -1,24 +1,37 @@
'use strict';
var React = require('react');
var faker = require('faker');
var request = require('axios');
var _ = require('lodash');
var transformers = require('../util');
function throwError(err) {
setTimeout(() => {
throw err;
});
}
module.exports = React.createClass({
getInitialState() {
return {
messages: _.range(10).map(() => {
return {
image: faker.image.avatar(),
body: faker.hacker.phrase(),
timestamp: faker.date.recent(),
type: _.sample(['twitter', 'slack', 'github']),
meta: `Retweeted by @${faker.internet.userName()}`
}
})
messages: []
};
},
componentDidMount() {
request.get('/api/feeds').then((res) => {
var feeds = res.data;
var messages = [];
for(var type in feeds) {
var feedMessages = feeds[type].map(transformers[type]);
messages = messages.concat(feedMessages);
}
this.setState({
messages: messages
});
}).catch(throwError);
},
render() {
var messages = this.state.messages.map((message) => {
@@ -26,7 +39,7 @@ module.exports = React.createClass({
<div className="message">
<img className="message__image" src={message.image} />
<div className="message__content">
<div className="message__body">{message.body}</div>
<div className="message__body" dangerouslySetInnerHTML={{__html:message.body}}></div>
<div className="message__icon">
<i className={`fa fa-${message.type}`}></i>
</div>
@@ -46,3 +59,18 @@ module.exports = React.createClass({
)
}
});
// <div className="message">
// <img className="message__image" src={message.image} />
// <div className="message__content">
// <div className="message__body">{message.body}</div>
// <div className="message__icon">
// <i className={`fa fa-${message.type}`}></i>
// </div>
// <div className="message__details">
// <span className="message__timestamp">
// {require('timeago')(message.timestamp)}
// </span>
// <span className="message__meta">{message.meta}</span>
// </div>
// </div>
// </div>

28
src/js/util.js Normal file
View File

@@ -0,0 +1,28 @@
'use strict';
var githubEvent = require('parse-github-event');
var twitterText = require('twitter-text');
module.exports = {
github(item) {
var message = githubEvent.parse(item);
console.log(item);
console.log(message.data);
return {
image: item.actor.avatar_url,
body: `${item.actor.login} ${message.text}`,
timestamp: item.created_at,
url: message.url,
highlights: message.data,
type: 'github'
};
},
twitter(item) {
return {
image: item.user.profile_image_url,
body: twitterText.autoLink(item.text),
timestamp: item.created_at,
type: 'twitter'
};
}
};