var React = require('react')
var GetIPFS = require('getipfs.jsx')
var Icon = require('icon.jsx')
var Link = require('react-router').Link
var { Error, Loading, Saving } = require('status-components.jsx')
module.exports = function (boardsAPI) {
return React.createClass({
getInitialState () {
return { }
},
componentDidMount () {
boardsAPI.use(boards => {
boards.init()
boards.getEventEmitter().on('init', err => {
if (!err && this.isMounted()) {
this.init(boards)
}
})
if (this.isMounted() && boards.isInit) {
this.init(boards)
}
})
},
init (boards) {
if (this.state.init) return
this.setState({ api: boards, init: true })
this.getBoardSettings(boards)
},
getBoardSettings (boards) {
if (!this.props.params.boardname) return
this.setState({ loading: true })
boards.getBoardSettings(boards.getMyID(), this.props.params.boardname, (err, s) => {
if (err) {
this.setState({ error: err, loading: false })
} else if (this.state.loading) {
this.setState({
id: this.props.params.boardname,
name: s.fullname,
desc: s.description,
loading: false
})
}
})
},
handleChange (event) {
var obj = {}
obj[event.target.id] = event.target.value
this.setState(obj)
},
skip () {
this.setState({ loading: false, updating: false, error: false })
},
refresh () {
this.setState({ loading: true })
boardsAPI.use(b => this.getBoardSettings(b))
},
save () {
var boards = this.state.api
var board = {
id: this.state.shortname || this.props.params.boardname,
fullname: this.state.name,
description: this.state.desc
}
this.setState({ updating: true })
boards.createBoard(board, (err) => {
this.setState({ updating: false })
console.log('CREATE:', err)
})
},
additionalButtons () {
if (this.state.api && this.props.params.boardname) {
var url = '/@' + this.state.api.getMyID() + '/' + this.props.params.boardname
return
View
} else {
return
}
},
render () {
if (this.state.api) {
if (this.state.error) {
return Pressing the Skip button will not abort the publish operation.
This App uses IPFS to store your Boards. When you are offline, other users or servers that viewed your content will serve it to others.
Warning: due to a bug in go-ipfs, it may take up to a minute for your changes to be visibile. Your Boards will appear unchanged during this time.