mirror of
https://github.com/BoostIo/Boostnote
synced 2025-12-13 17:56:25 +00:00
add name change for planet & fix minor bugs
This commit is contained in:
@@ -4,6 +4,7 @@ module.exports = Reflux.createActions([
|
|||||||
'createPlanet',
|
'createPlanet',
|
||||||
'fetchPlanet',
|
'fetchPlanet',
|
||||||
|
|
||||||
|
'changeName',
|
||||||
'addUser',
|
'addUser',
|
||||||
|
|
||||||
'createSnippet',
|
'createSnippet',
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
var React = require('react')
|
var React = require('react')
|
||||||
var PlanetStore = require('../Stores/PlanetStore')
|
|
||||||
var PlanetActions = require('../Actions/PlanetActions')
|
var PlanetActions = require('../Actions/PlanetActions')
|
||||||
|
|
||||||
var BlueprintDeleteModal = React.createClass({
|
var BlueprintDeleteModal = React.createClass({
|
||||||
@@ -7,20 +7,6 @@ var BlueprintDeleteModal = React.createClass({
|
|||||||
close: React.PropTypes.func,
|
close: React.PropTypes.func,
|
||||||
blueprint: React.PropTypes.object
|
blueprint: React.PropTypes.object
|
||||||
},
|
},
|
||||||
componentDidMount: function () {
|
|
||||||
this.unsubscribe = PlanetStore.listen(this.onListen)
|
|
||||||
React.findDOMNode(this.refs.submit).focus()
|
|
||||||
},
|
|
||||||
componentWillUnmount: function () {
|
|
||||||
this.unsubscribe()
|
|
||||||
},
|
|
||||||
onListen: function (res) {
|
|
||||||
switch (res.status) {
|
|
||||||
case 'articleDeleted':
|
|
||||||
this.props.close()
|
|
||||||
break
|
|
||||||
}
|
|
||||||
},
|
|
||||||
stopPropagation: function (e) {
|
stopPropagation: function (e) {
|
||||||
e.stopPropagation()
|
e.stopPropagation()
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,25 +1,12 @@
|
|||||||
var React = require('react')
|
var React = require('react')
|
||||||
|
|
||||||
var BlueprintForm = require('./BlueprintForm')
|
var BlueprintForm = require('./BlueprintForm')
|
||||||
var PlanetStore = require('../Stores/PlanetStore')
|
|
||||||
|
|
||||||
var BlueprintEditModal = React.createClass({
|
var BlueprintEditModal = React.createClass({
|
||||||
propTypes: {
|
propTypes: {
|
||||||
close: React.PropTypes.func,
|
close: React.PropTypes.func,
|
||||||
blueprint: React.PropTypes.object
|
blueprint: React.PropTypes.object
|
||||||
},
|
},
|
||||||
componentDidMount: function () {
|
|
||||||
this.unsubscribe = PlanetStore.listen(this.onListen)
|
|
||||||
},
|
|
||||||
componentWillUnmount: function () {
|
|
||||||
this.unsubscribe()
|
|
||||||
},
|
|
||||||
onListen: function (res) {
|
|
||||||
switch (res.status) {
|
|
||||||
case 'articleUpdated':
|
|
||||||
this.props.close()
|
|
||||||
break
|
|
||||||
}
|
|
||||||
},
|
|
||||||
stopPropagation: function (e) {
|
stopPropagation: function (e) {
|
||||||
e.stopPropagation()
|
e.stopPropagation()
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
var React = require('react/addons')
|
var React = require('react/addons')
|
||||||
var ReactRouter = require('react-router')
|
var ReactRouter = require('react-router')
|
||||||
var Catalyst = require('../Mixins/Catalyst')
|
var Catalyst = require('../Mixins/Catalyst')
|
||||||
var PlanetStore = require('../Stores/PlanetStore')
|
|
||||||
|
|
||||||
var SnippetForm = require('./SnippetForm')
|
var SnippetForm = require('./SnippetForm')
|
||||||
var BlueprintForm = require('./BlueprintForm')
|
var BlueprintForm = require('./BlueprintForm')
|
||||||
@@ -16,19 +15,6 @@ var LaunchModal = React.createClass({
|
|||||||
currentTab: 'snippet'
|
currentTab: 'snippet'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
componentDidMount: function () {
|
|
||||||
this.unsubscribe = PlanetStore.listen(this.onListen)
|
|
||||||
},
|
|
||||||
componentWillUnmount: function () {
|
|
||||||
this.unsubscribe()
|
|
||||||
},
|
|
||||||
onListen: function (res) {
|
|
||||||
switch (res.status) {
|
|
||||||
case 'articleCreated':
|
|
||||||
this.props.close()
|
|
||||||
break
|
|
||||||
}
|
|
||||||
},
|
|
||||||
stopPropagation: function (e) {
|
stopPropagation: function (e) {
|
||||||
e.stopPropagation()
|
e.stopPropagation()
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
var React = require('react/addons')
|
var React = require('react/addons')
|
||||||
var Select = require('react-select')
|
var Select = require('react-select')
|
||||||
|
|
||||||
var Catalyst = require('../Mixins/Catalyst')
|
var Catalyst = require('../Mixins/Catalyst')
|
||||||
|
|
||||||
|
var PlanetActions = require('../Actions/PlanetActions')
|
||||||
|
|
||||||
module.exports = React.createClass({
|
module.exports = React.createClass({
|
||||||
mixins: [Catalyst.LinkedStateMixin],
|
mixins: [Catalyst.LinkedStateMixin],
|
||||||
propTypes: {
|
propTypes: {
|
||||||
@@ -22,6 +25,10 @@ module.exports = React.createClass({
|
|||||||
activeManageMember: function () {
|
activeManageMember: function () {
|
||||||
this.setState({currentTab: 'manageMember'})
|
this.setState({currentTab: 'manageMember'})
|
||||||
},
|
},
|
||||||
|
saveProfile: function () {
|
||||||
|
var currentPlanet = this.props.currentPlanet
|
||||||
|
PlanetActions.changeName(currentPlanet.userName, currentPlanet.name, this.state.planetName)
|
||||||
|
},
|
||||||
doubleCheckDeletePlanet: function () {
|
doubleCheckDeletePlanet: function () {
|
||||||
if (this.state.isDeletePlanetChecked) {
|
if (this.state.isDeletePlanetChecked) {
|
||||||
console.log('delete it')
|
console.log('delete it')
|
||||||
@@ -44,7 +51,7 @@ module.exports = React.createClass({
|
|||||||
<div className='planetProfileForm'>
|
<div className='planetProfileForm'>
|
||||||
<label>Planet name </label>
|
<label>Planet name </label>
|
||||||
<input valueLink={this.linkState('planetName')} className='inline-input'/>
|
<input valueLink={this.linkState('planetName')} className='inline-input'/>
|
||||||
<button className='saveButton btn-primary'>Save</button>
|
<button onClick={this.saveProfile} className='saveButton btn-primary'>Save</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className='planetDeleteForm'>
|
<div className='planetDeleteForm'>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
var React = require('react')
|
var React = require('react')
|
||||||
var PlanetStore = require('../Stores/PlanetStore')
|
|
||||||
var PlanetActions = require('../Actions/PlanetActions')
|
var PlanetActions = require('../Actions/PlanetActions')
|
||||||
|
|
||||||
var SnippetDeleteModal = React.createClass({
|
var SnippetDeleteModal = React.createClass({
|
||||||
@@ -7,20 +7,6 @@ var SnippetDeleteModal = React.createClass({
|
|||||||
close: React.PropTypes.func,
|
close: React.PropTypes.func,
|
||||||
snippet: React.PropTypes.object
|
snippet: React.PropTypes.object
|
||||||
},
|
},
|
||||||
componentDidMount: function () {
|
|
||||||
this.unsubscribe = PlanetStore.listen(this.onListen)
|
|
||||||
React.findDOMNode(this.refs.submit).focus()
|
|
||||||
},
|
|
||||||
componentWillUnmount: function () {
|
|
||||||
this.unsubscribe()
|
|
||||||
},
|
|
||||||
onListen: function (res) {
|
|
||||||
switch (res.status) {
|
|
||||||
case 'articleDeleted':
|
|
||||||
this.props.close()
|
|
||||||
break
|
|
||||||
}
|
|
||||||
},
|
|
||||||
stopPropagation: function (e) {
|
stopPropagation: function (e) {
|
||||||
e.stopPropagation()
|
e.stopPropagation()
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,25 +1,11 @@
|
|||||||
var React = require('react')
|
var React = require('react')
|
||||||
var SnippetForm = require('./SnippetForm')
|
var SnippetForm = require('./SnippetForm')
|
||||||
var PlanetStore = require('../Stores/PlanetStore')
|
|
||||||
|
|
||||||
var SnippetEditModal = React.createClass({
|
var SnippetEditModal = React.createClass({
|
||||||
propTypes: {
|
propTypes: {
|
||||||
close: React.PropTypes.func,
|
close: React.PropTypes.func,
|
||||||
snippet: React.PropTypes.object
|
snippet: React.PropTypes.object
|
||||||
},
|
},
|
||||||
componentDidMount: function () {
|
|
||||||
this.unsubscribe = PlanetStore.listen(this.onListen)
|
|
||||||
},
|
|
||||||
componentWillUnmount: function () {
|
|
||||||
this.unsubscribe()
|
|
||||||
},
|
|
||||||
onListen: function (res) {
|
|
||||||
switch (res.status) {
|
|
||||||
case 'articleUpdated':
|
|
||||||
this.props.close()
|
|
||||||
break
|
|
||||||
}
|
|
||||||
},
|
|
||||||
stopPropagation: function (e) {
|
stopPropagation: function (e) {
|
||||||
e.stopPropagation()
|
e.stopPropagation()
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ module.exports = React.createClass({
|
|||||||
var planets = this.props.currentUser.Planets.map(function (planet, index) {
|
var planets = this.props.currentUser.Planets.map(function (planet, index) {
|
||||||
return (
|
return (
|
||||||
<li key={planet.id} className={this.props.currentPlanet != null && this.props.currentPlanet.name === planet.name ? 'active' : ''}>
|
<li key={planet.id} className={this.props.currentPlanet != null && this.props.currentPlanet.name === planet.name ? 'active' : ''}>
|
||||||
<Link to='planet' params={{userName: this.props.currentUser.name, planetName: planet.name}} href>{planet.name[0]}</Link>
|
<Link to='planet' params={{userName: planet.userName, planetName: planet.name}} href>{planet.name[0]}</Link>
|
||||||
<div className='shortCut'>⌘{index + 1}</div>
|
<div className='shortCut'>⌘{index + 1}</div>
|
||||||
</li>
|
</li>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ module.exports = React.createClass({
|
|||||||
this.unsubscribe()
|
this.unsubscribe()
|
||||||
},
|
},
|
||||||
componentDidUpdate: function () {
|
componentDidUpdate: function () {
|
||||||
if (this.state.currentPlanet.name !== this.props.params.planetName || this.state.currentPlanet.userName !== this.props.params.userName) {
|
if (this.state.currentPlanet == null || this.state.currentPlanet.name !== this.props.params.planetName || this.state.currentPlanet.userName !== this.props.params.userName) {
|
||||||
PlanetActions.fetchPlanet(this.props.params.userName, this.props.params.planetName)
|
PlanetActions.fetchPlanet(this.props.params.userName, this.props.params.planetName)
|
||||||
this.focus()
|
this.focus()
|
||||||
}
|
}
|
||||||
@@ -162,6 +162,10 @@ module.exports = React.createClass({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
onFetched: function (res) {
|
onFetched: function (res) {
|
||||||
|
if (res == null) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
var articles = this.state.currentPlanet == null ? null : this.state.currentPlanet.Articles
|
var articles = this.state.currentPlanet == null ? null : this.state.currentPlanet.Articles
|
||||||
|
|
||||||
if (res.status === 'planetFetched') {
|
if (res.status === 'planetFetched') {
|
||||||
@@ -195,8 +199,16 @@ module.exports = React.createClass({
|
|||||||
}
|
}
|
||||||
this.state.currentPlanet.Users.push(user)
|
this.state.currentPlanet.Users.push(user)
|
||||||
this.setState({currentPlanet: this.state.currentPlanet}, function () {
|
this.setState({currentPlanet: this.state.currentPlanet}, function () {
|
||||||
this.closeAddUserModal()
|
if (this.state.isAddUserModalOpen) {this.closeAddUserModal()}
|
||||||
})
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (res.status === 'nameChanged') {
|
||||||
|
var params = Object.assign({}, this.props.params)
|
||||||
|
params.planetName = res.data.name
|
||||||
|
this.transitionTo('planet', params)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var article = res.data
|
var article = res.data
|
||||||
@@ -209,6 +221,7 @@ module.exports = React.createClass({
|
|||||||
articles.unshift(article)
|
articles.unshift(article)
|
||||||
|
|
||||||
this.setState({planet: this.state.currentPlanet, search: ''}, function () {
|
this.setState({planet: this.state.currentPlanet, search: ''}, function () {
|
||||||
|
this.closeLaunchModal()
|
||||||
this.selectArticleByIndex(0)
|
this.selectArticleByIndex(0)
|
||||||
})
|
})
|
||||||
break
|
break
|
||||||
@@ -216,7 +229,9 @@ module.exports = React.createClass({
|
|||||||
articles.splice(index, 1)
|
articles.splice(index, 1)
|
||||||
articles.unshift(article)
|
articles.unshift(article)
|
||||||
|
|
||||||
this.setState({planet: this.state.currentPlanet})
|
this.setState({planet: this.state.currentPlanet}, function () {
|
||||||
|
this.closeEditModal()
|
||||||
|
})
|
||||||
break
|
break
|
||||||
case 'articleDeleted':
|
case 'articleDeleted':
|
||||||
articles.splice(index, 1)
|
articles.splice(index, 1)
|
||||||
@@ -241,20 +256,26 @@ module.exports = React.createClass({
|
|||||||
this.setState({isLaunchModalOpen: true})
|
this.setState({isLaunchModalOpen: true})
|
||||||
},
|
},
|
||||||
closeLaunchModal: function () {
|
closeLaunchModal: function () {
|
||||||
this.setState({isLaunchModalOpen: false})
|
this.setState({isLaunchModalOpen: false}, function () {
|
||||||
|
this.focus()
|
||||||
|
})
|
||||||
},
|
},
|
||||||
openAddUserModal: function () {
|
openAddUserModal: function () {
|
||||||
this.setState({isAddUserModalOpen: true})
|
this.setState({isAddUserModalOpen: true})
|
||||||
},
|
},
|
||||||
closeAddUserModal: function () {
|
closeAddUserModal: function () {
|
||||||
this.setState({isAddUserModalOpen: false})
|
this.setState({isAddUserModalOpen: false}, function () {
|
||||||
|
this.focus()
|
||||||
|
})
|
||||||
},
|
},
|
||||||
openEditModal: function () {
|
openEditModal: function () {
|
||||||
if (this.refs.detail.props.article == null) {return}
|
if (this.refs.detail.props.article == null) {return}
|
||||||
this.setState({isEditModalOpen: true})
|
this.setState({isEditModalOpen: true})
|
||||||
},
|
},
|
||||||
closeEditModal: function () {
|
closeEditModal: function () {
|
||||||
this.setState({isEditModalOpen: false})
|
this.setState({isEditModalOpen: false}, function () {
|
||||||
|
this.focus()
|
||||||
|
})
|
||||||
},
|
},
|
||||||
submitEditModal: function () {
|
submitEditModal: function () {
|
||||||
this.setState({isEditModalOpen: false})
|
this.setState({isEditModalOpen: false})
|
||||||
@@ -264,7 +285,9 @@ module.exports = React.createClass({
|
|||||||
this.setState({isDeleteModalOpen: true})
|
this.setState({isDeleteModalOpen: true})
|
||||||
},
|
},
|
||||||
closeDeleteModal: function () {
|
closeDeleteModal: function () {
|
||||||
this.setState({isDeleteModalOpen: false})
|
this.setState({isDeleteModalOpen: false}, function () {
|
||||||
|
this.focus()
|
||||||
|
})
|
||||||
},
|
},
|
||||||
submitDeleteModal: function () {
|
submitDeleteModal: function () {
|
||||||
this.setState({isDeleteModalOpen: false})
|
this.setState({isDeleteModalOpen: false})
|
||||||
@@ -273,7 +296,9 @@ module.exports = React.createClass({
|
|||||||
this.setState({isSettingModalOpen: true})
|
this.setState({isSettingModalOpen: true})
|
||||||
},
|
},
|
||||||
closeSettingModal: function () {
|
closeSettingModal: function () {
|
||||||
this.setState({isSettingModalOpen: false})
|
this.setState({isSettingModalOpen: false}, function () {
|
||||||
|
this.focus()
|
||||||
|
})
|
||||||
},
|
},
|
||||||
focus: function () {
|
focus: function () {
|
||||||
React.findDOMNode(this).focus()
|
React.findDOMNode(this).focus()
|
||||||
@@ -283,28 +308,30 @@ module.exports = React.createClass({
|
|||||||
if (this.state.isLaunchModalOpen) {
|
if (this.state.isLaunchModalOpen) {
|
||||||
if (e.keyCode === 27) {
|
if (e.keyCode === 27) {
|
||||||
this.closeLaunchModal()
|
this.closeLaunchModal()
|
||||||
this.focus()
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (this.state.isEditModalOpen) {
|
if (this.state.isEditModalOpen) {
|
||||||
if (e.keyCode === 27) {
|
if (e.keyCode === 27) {
|
||||||
this.closeEditModal()
|
this.closeEditModal()
|
||||||
this.focus()
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (this.state.isDeleteModalOpen) {
|
if (this.state.isDeleteModalOpen) {
|
||||||
if (e.keyCode === 27) {
|
if (e.keyCode === 27) {
|
||||||
this.closeDeleteModal()
|
this.closeDeleteModal()
|
||||||
this.focus()
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (this.state.isAddUserModalOpen) {
|
if (this.state.isAddUserModalOpen) {
|
||||||
if (e.keyCode === 27) {
|
if (e.keyCode === 27) {
|
||||||
this.closeAddUserModal()
|
this.closeAddUserModal()
|
||||||
this.focus()
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (this.state.isSettingModalOpen) {
|
||||||
|
if (e.keyCode === 27) {
|
||||||
|
this.closeSettingModal()
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ module.exports = React.createClass({
|
|||||||
this.unsubscribe()
|
this.unsubscribe()
|
||||||
},
|
},
|
||||||
onListen: function (res) {
|
onListen: function (res) {
|
||||||
|
if (res.status == null) return
|
||||||
|
|
||||||
if (res.status === 'planetCreated') {
|
if (res.status === 'planetCreated') {
|
||||||
var currentUser = this.state.currentUser
|
var currentUser = this.state.currentUser
|
||||||
currentUser.Planets.push(res.data)
|
currentUser.Planets.push(res.data)
|
||||||
@@ -34,6 +36,10 @@ module.exports = React.createClass({
|
|||||||
localStorage.setItem('user', JSON.stringify(currentUser))
|
localStorage.setItem('user', JSON.stringify(currentUser))
|
||||||
this.setState({currentUser: currentUser})
|
this.setState({currentUser: currentUser})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (res.status === 'nameChanged') {
|
||||||
|
this.setState({currentUser: AuthStore.getUser()})
|
||||||
|
}
|
||||||
},
|
},
|
||||||
render: function () {
|
render: function () {
|
||||||
var currentPlanetName = this.props.params.planetName
|
var currentPlanetName = this.props.params.planetName
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ var PlanetStore = Reflux.createStore({
|
|||||||
init: function () {
|
init: function () {
|
||||||
this.listenTo(PlanetActions.createPlanet, this.createPlanet)
|
this.listenTo(PlanetActions.createPlanet, this.createPlanet)
|
||||||
this.listenTo(PlanetActions.fetchPlanet, this.fetchPlanet)
|
this.listenTo(PlanetActions.fetchPlanet, this.fetchPlanet)
|
||||||
|
this.listenTo(PlanetActions.changeName, this.changeName)
|
||||||
this.listenTo(PlanetActions.addUser, this.addUser)
|
this.listenTo(PlanetActions.addUser, this.addUser)
|
||||||
this.listenTo(PlanetActions.createSnippet, this.createSnippet)
|
this.listenTo(PlanetActions.createSnippet, this.createSnippet)
|
||||||
this.listenTo(PlanetActions.updateSnippet, this.updateSnippet)
|
this.listenTo(PlanetActions.updateSnippet, this.updateSnippet)
|
||||||
@@ -79,6 +80,38 @@ var PlanetStore = Reflux.createStore({
|
|||||||
})
|
})
|
||||||
}.bind(this))
|
}.bind(this))
|
||||||
},
|
},
|
||||||
|
changeName: function (userName, planetName, name) {
|
||||||
|
request
|
||||||
|
.put(apiUrl + userName + '/' + planetName)
|
||||||
|
.set({
|
||||||
|
Authorization: 'Bearer ' + localStorage.getItem('token')
|
||||||
|
})
|
||||||
|
.send({name: name})
|
||||||
|
.end(function (err, res) {
|
||||||
|
if (err) {
|
||||||
|
console.error(err)
|
||||||
|
this.trigger(null)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var planet = res.body
|
||||||
|
|
||||||
|
var user = JSON.parse(localStorage.getItem('user'))
|
||||||
|
user.Planets.some(function (_planet, index) {
|
||||||
|
if (planet.id === _planet.id) {
|
||||||
|
user.Planets[index].name = planet.name
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
})
|
||||||
|
localStorage.setItem('user', JSON.stringify(user))
|
||||||
|
|
||||||
|
this.trigger({
|
||||||
|
status: 'nameChanged',
|
||||||
|
data: planet
|
||||||
|
})
|
||||||
|
}.bind(this))
|
||||||
|
},
|
||||||
addUser: function (planetName, userName) {
|
addUser: function (planetName, userName) {
|
||||||
request
|
request
|
||||||
.post(apiUrl + planetName + '/users')
|
.post(apiUrl + planetName + '/users')
|
||||||
|
|||||||
Reference in New Issue
Block a user