var React = require('react') var Markdown = require('markdown.jsx') var Link = require('react-router').Link var Icon = require('icon.jsx') module.exports = function(boardsAPI){ var GetIPFS = require('getipfs.jsx')(boardsAPI) return React.createClass({ getInitialState: function(){ return { name: '...', boards: [], api: false } }, componentDidMount: function(){ boardsAPI.use(boards => { if(boards.isInit){ this.setState({ api: true, id: boards.id }) this.init() } var ee = boards.getEventEmitter() ee.on('init',err => { if(!err && this.isMounted()){ this.setState({ api: true, id: boards.id }) this.init() } }) }) }, init: function(){ if(this.state.init) return boardsAPI.use(boards => { var ee = boards.getEventEmitter() if(boards.isInit || this.state.api){ var uid = this.props.params.userid if(uid === 'me') uid = boards.id console.log('About to ask for profile for',uid) ee.on('boards for '+uid,l => { if(!this.isMounted()) return true this.setState({ boards: l }) }) boards.getProfile(uid,(err,res) => { if(!this.isMounted()) return true if(err){ this.setState({ name: <Icon name="ban" />, description: err }) } else { this.setState({ name: res.name, description: res.description }) } }) this.setState({ init: true }) } }) }, linkToEditor: function(){ var uid = this.props.params.userid if(uid === 'me' && this.state.id) uid = this.state.id if(uid === this.state.id){ return <div> <h6>This is your profile</h6> <hr/> </div> } return '' }, render: function(){ if(this.state.api){ var uid = this.props.params.userid if(uid === 'me') uid = this.state.id return (<div className="profile"> {this.linkToEditor()} <h1>{this.state.name}</h1> <Markdown source={this.state.description} skipHtml={true} /> <hr/> <div className="light breaker">@{uid}</div> {this.state.boards.map(n => { return <h6 className="light" key={uid+'/'+n.name}> <Link to={'/@'+uid+'/'+n.name}># {n.name}</Link> </h6> })} </div>) } else return <GetIPFS /> } }) }