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.

81 lines
2.3 KiB

var ReactBootstrap = require('react-bootstrap')
, OverlayMixin = ReactBootstrap.OverlayMixin
, Button = ReactBootstrap.Button
, ButtonGroup = ReactBootstrap.ButtonGroup
, Glyphicon = ReactBootstrap.Glyphicon
, Modal = ReactBootstrap.Modal
, Input = ReactBootstrap.Input
9 years ago
, Button = ReactBootstrap.Button
var React = require('react');
var SafeStateChangeMixin = require('../common/SafeStateChangeMixin.js');
module.exports = FollowButton = React.createClass({
mixins: [SafeStateChangeMixin],
getInitialState: function () {
return {
hasLoaded: false,
isCurrentlyFollowing: false
};
},
handleClick: function (e) {
thisComponent = this;
e.preventDefault();
if(this.state.hasLoaded){
var methodName = thisComponent.state.isCurrentlyFollowing ? "unfollow" : "follow";
var newValForState = !thisComponent.state.isCurrentlyFollowing;
var eventName = thisComponent.state.isCurrentlyFollowing ? "unfollowbyuser" : "followbyuser";
Twister.getAccount(thisComponent.props.activeAccount)[methodName](
thisComponent.props.username,
function(following){
thisComponent.setStateSafe({isCurrentlyFollowing:newValForState});
Twister.getAccount(thisComponent.props.activeAccount).activateTorrent(thisComponent.props.username)
});
}
return;
},
componentDidMount: function () {
thisComponent = this;
if(thisComponent.props.activeAccount){
Twister.getUser(thisComponent.props.activeAccount).doFollowings(function(followings){
if(followings.map(function(fol){
return fol.getUsername();
}).indexOf(thisComponent.props.username)<0){
thisComponent.setStateSafe({isCurrentlyFollowing: false, hasLoaded: true});
}else{
thisComponent.setStateSafe({isCurrentlyFollowing: true, hasLoaded: true});
}
})
}
},
render: function() {
if(!this.state.hasLoaded || this.props.activeAccount==this.props.username){
return (
<span/>
)
}
var methodName = this.state.isCurrentlyFollowing ? "Unfollow" : "Follow";
return (
9 years ago
<Button onClick={this.handleClick}>{methodName}</Button>
);
}
});