var ReactBootstrap = require('react-bootstrap')
, Grid = ReactBootstrap.Grid
, Col = ReactBootstrap.Col
, Row = ReactBootstrap.Row
, ListGroupItem = ReactBootstrap.ListGroupItem
, Glyphicon = ReactBootstrap.Glyphicon
, OverlayTrigger = ReactBootstrap.OverlayTrigger
, Tooltip = ReactBootstrap.Tooltip
var React = require('react');
var SetIntervalMixin = require("../common/SetIntervalMixin.js");
var SafeStateChangeMixin = require('../common/SafeStateChangeMixin.js');
var PostContent = require('../common/PostContent.js');
var ReplyModalButton = require('../common/ReplyModalButton.js');
var RetwistModalButton = require('../common/RetwistModalButton.js');
var EventListenerMixin = require('../common/EventListenerMixin.js');
module.exports = Post = React.createClass({
mixins: [
SetIntervalMixin,
SafeStateChangeMixin,
EventListenerMixin('profileupdatebyuser'),
EventListenerMixin('avatarupdatebyuser')
],
onprofileupdatebyuser: function(event){
//console.log("catched event",this.state.username,event.detail)
var profile =event.detail;
if(profile.getUsername()==this.props.post.username){
this.setState(function(state){
state.fullname = profile.getField("fullname");
return state;
})
}
if(profile.getUsername()==this.state.retwistingUsername){
this.setState(function(state){
state.retwistingUserFullname = profile.getField("fullname");
return state;
})
}
},
onavatarupdatebyuser: function(event){
//console.log("catched event",this.state.username,event.detail)
var avatar =event.detail;
if(avatar.getUsername()==this.state.username){
this.setState(function(state){
state.avatar = avatar.getUrl();
return state;
})
}
},
getInitialState: function() {
return {
username: this.props.post.username,
avatar: "img/genericPerson.png",
fullname: "",
timeAgo: "",
retwistingUsername: this.props.post.username,
retwistingUserFullname: this.props.post.username,
retwistingUserAvatar: "img/genericPerson.png",
};
},
updateTimeAgo: function() {
var secondsAgo = Date.now()/1000-this.props.post.timestamp;
var newTimeAgo = "";
if (secondsAgo<45) {newTimeAgo="1m"}
else if (secondsAgo<45*60) {newTimeAgo=Math.round(secondsAgo/60)+"m"}
else if (secondsAgo<18*60*60) {newTimeAgo=Math.round(secondsAgo/60/60)+"h"}
else if (secondsAgo<26*24*60*60) {newTimeAgo=Math.round(secondsAgo/24/60/60)+"d"}
else if (secondsAgo<9*30.5*24*60*60) {newTimeAgo=Math.round(secondsAgo/30.5/24/60/60)+"mo"}
else {newTimeAgo=Math.round(secondsAgo/365/24/60/60)+"y"}
this.setStateSafe({timeAgo: newTimeAgo});
},
componentDidMount: function () {
var thisComponent = this;
var post = Twister.getUser(this.props.post.username).getPost(this.props.post.id);
if (post.isRetwist()) {
post.getUser().doProfile(function(profile){
thisComponent.setStateSafe({
retwistingUsername: profile.getUsername(),
retwistingUserFullname: profile.getField("fullname")
});
});
post.getUser().doAvatar(function(avatar){
thisComponent.setStateSafe({
retwistingUserAvatar: avatar.getUrl()
});
});
post=post.getRetwistedPost();
}
//console.log(this.props.post.username+":post"+this.props.post.id);
post.getUser().doAvatar(function(avatar){
if (avatar.getUrl()) {
thisComponent.setStateSafe({avatar: avatar.getUrl()});
}
});
post.getUser().doProfile(function(profile){
thisComponent.setStateSafe({fullname: profile.getField("fullname")});
});
this.updateTimeAgo();
this.setInterval(this.updateTimeAgo,60000);
},
render: function() {
var post = Twister.getUser(this.props.post.username).getPost(this.props.post.id);
if(!post){
return (
)
}
var retwist = false;
var retwistWithComment = false;
var comment = "";
if (post.isRetwist()) {
retwist = true;
if(post.isRetwistWithComment()){
retwistWithComment=true;
comment = post.getContent();
}
post=post.getRetwistedPost();
}
if (post.isReply()) {
var conversationLink = (