proxy-based Twister client written with react-js
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

101 lines
4.1 KiB

var ReactBootstrap = require('react-bootstrap')
, Grid = ReactBootstrap.Grid
, Col = ReactBootstrap.Col
, Row = ReactBootstrap.Row
, ListGroupItem = ReactBootstrap.ListGroupItem
, ListGroup = ReactBootstrap.ListGroup
, Nav = ReactBootstrap.Nav
, NavItem = ReactBootstrap.NavItem
, Button = ReactBootstrap.Button
, ButtonGroup = ReactBootstrap.ButtonGroup
, Glyphicon = ReactBootstrap.Glyphicon
var React = require('react');
var Router = require('react-router');
var Route = Router.Route; var DefaultRoute = Router.DefaultRoute; var RouteHandler = Router.RouteHandler; var Link = Router.Link;
var SetIntervalMixin = require("../common/SetIntervalMixin.js");
var SafeStateChangeMixin = require('../common/SafeStateChangeMixin.js');
var ProfileMixin = require('../common/ProfileMixin.js');
var FollowButton = require('../common/FollowButton.js');
var EditProfileModalButton = require('../profile/EditProfileModalButton.js');
var EditAvatarModalButton = require('../profile/EditAvatarModalButton.js');
module.exports = Post = React.createClass({
mixins: [
SetIntervalMixin,
SafeStateChangeMixin,
ProfileMixin
],
contextTypes: {
router: React.PropTypes.func
},
getHandlerKey: function () {
var childDepth = 2; // assuming App is top-level route
var router = this.context.router;
//console.log(router.getCurrentParams())
if ( router.getCurrentRoutes()[childDepth] ) {
var key = router.getCurrentRoutes()[childDepth].name;
if (key.indexOf("active")>-1) {key+="/"+this.props.activeAccount;}
var id = JSON.stringify(router.getCurrentParams());
if (id) { key += id; }
//console.log(key);
return key;
} else {return "none"}
},
render: function() {
var routeprefix = "#/profile/"+(this.context.router.getCurrentParams().username ? this.context.router.getCurrentParams().username+"/" : "")
var subroute = this.context.router.getCurrentRoutes()[2].name
//console.log(this.context.router.getCurrentRoutes());
return (
<ListGroup fill>
<ListGroupItem>
<Row className="nomargin">
<Col xs={3} md={3} className="fullytight">
<img className="img-responsive" src={this.state.avatar}/>
<br/>
<EditAvatarModalButton
activeAccount={this.props.activeAccount}
username={this.state.username}
avatar={this.state.avatar}
/>
<FollowButton activeAccount={this.props.activeAccount} username={this.state.username}/>
</Col>
<Col xs={8} md={8}>
<h4 className="nomargin-top">{this.state.fullname}<small> {'@'+this.state.username}</small></h4>
<p className="text-center">{this.state.location}</p>
<p className="text-center">{this.state.bio}</p>
<p className="text-center"><a href={this.state.url}>{this.state.url}</a></p>
<EditProfileModalButton
activeAccount={this.props.activeAccount}
username={this.state.username}
fullname={this.state.fullname}
location={this.state.location}
bio={this.state.bio}
url={this.state.url}
/>
</Col>
<Col xs={1} md={1} className="fullytight text-align-right"></Col>
</Row>
</ListGroupItem>
<ListGroupItem className="fullytight_all">
<ButtonGroup justified>
<Button href={routeprefix+"timeline"} bsStyle={subroute.indexOf("timeline")>-1 ? "primary" : "default"}><Glyphicon glyph="list"/></Button>
<Button href={routeprefix+"followings"} bsStyle={subroute.indexOf("followings")>-1 ? "primary" : "default"}><Glyphicon glyph="eye-open"/></Button>
<Button href={routeprefix+"mentions"} bsStyle={subroute.indexOf("mentions")>-1 ? "primary" : "default"}><Glyphicon glyph="comment"/></Button>
</ButtonGroup>
</ListGroupItem>
<RouteHandler
activeAccount={this.props.activeAccount}
key={this.getHandlerKey()}
/>
</ListGroup>
);
}
});