var React = require('react') var Markdown = require('markdown.jsx') var Link = require('react-router').Link var Icon = require('icon.jsx') var GetIPFS = require('getipfs.jsx') var { Loading, Error } = require('status-components.jsx') module.exports = function (boardsAPI) { return React.createClass({ getInitialState () { return { loading: true, boards: [], api: false } }, componentDidMount () { boardsAPI.use(boards => { if (boards.isInit) { this.setState({ api: boards, id: boards.id }) this.init(boards) } var ee = boards.getEventEmitter() ee.on('init', err => { if (!err && this.isMounted()) { this.setState({ api: boards, id: boards.id }) this.init(boards) } }) }) }, componentWillReceiveProps (nextProps) { boardsAPI.use(boards => this.downloadProfile(boards, nextProps)) this.setState({ loading: true }) }, downloadProfile (boards, props) { var ee = boards.getEventEmitter() var uid = props.params.userid if (uid === 'me') uid = boards.id ee.on('boards for ' + uid, l => { var u2id = props.params.userid if (u2id === 'me') u2id = boards.id if (!this.isMounted() || u2id !== uid) return true this.setState({ boards: l }) }) boards.getProfile(uid, (err, res) => { if (!this.isMounted()) return true if (err) { this.setState({ loading: false, error: err }) } else { this.setState({ loading: false, name: res.name, description: res.description }) } }) }, init (boards) { if (this.state.init) return if (boards.isInit || this.state.api) { this.downloadProfile(boards, this.props) this.setState({ init: true }) } }, linkToEditor () { var uid = this.props.params.userid if (uid === 'me' && this.state.id) uid = this.state.id if (uid === this.state.id) { return