From 5dbfb24f1cb82d5e1abc89778763f7a3ef0d9c0a Mon Sep 17 00:00:00 2001 From: Rokt33r Date: Sat, 25 Jul 2015 12:39:09 +0900 Subject: [PATCH] add delete planet request --- browser/main/Actions/PlanetActions.js | 1 + .../main/Components/PlanetSettingModal.jsx | 2 +- browser/main/Containers/PlanetContainer.jsx | 11 +++++++++- browser/main/Containers/UserContainer.jsx | 20 ++++++++++++++++++- browser/main/Stores/PlanetStore.js | 20 +++++++++++++++++++ 5 files changed, 51 insertions(+), 3 deletions(-) diff --git a/browser/main/Actions/PlanetActions.js b/browser/main/Actions/PlanetActions.js index 930825bb..21ec67e5 100644 --- a/browser/main/Actions/PlanetActions.js +++ b/browser/main/Actions/PlanetActions.js @@ -3,6 +3,7 @@ var Reflux = require('reflux') module.exports = Reflux.createActions([ 'createPlanet', 'fetchPlanet', + 'deletePlanet', 'changeName', 'addUser', diff --git a/browser/main/Components/PlanetSettingModal.jsx b/browser/main/Components/PlanetSettingModal.jsx index 87fcea21..f196811c 100644 --- a/browser/main/Components/PlanetSettingModal.jsx +++ b/browser/main/Components/PlanetSettingModal.jsx @@ -66,7 +66,7 @@ module.exports = React.createClass({ }, doubleCheckDeletePlanet: function () { if (this.state.isDeletePlanetChecked) { - console.log('delete it') + PlanetActions.deletePlanet(this.props.currentPlanet.userName, this.props.currentPlanet.name) return } this.setState({isDeletePlanetChecked: true}) diff --git a/browser/main/Containers/PlanetContainer.jsx b/browser/main/Containers/PlanetContainer.jsx index f6e66ee1..bacd9714 100644 --- a/browser/main/Containers/PlanetContainer.jsx +++ b/browser/main/Containers/PlanetContainer.jsx @@ -224,8 +224,9 @@ module.exports = React.createClass({ var articles = this.state.currentPlanet == null ? null : this.state.currentPlanet.Articles + var planet if (res.status === 'planetFetched') { - var planet = res.data + planet = res.data this.setState({isFetched: true, currentPlanet: planet, filteredArticles: planet.Articles}, function () { if (this.refs.detail.props.article == null) { var params = this.props.params @@ -248,6 +249,14 @@ module.exports = React.createClass({ return } + if (res.status === 'planetDeleted') { + planet = res.data + this.transitionTo('user', { + userName: this.props.params.userName + }) + return + } + var user if (res.status === 'userAdded') { user = res.data diff --git a/browser/main/Containers/UserContainer.jsx b/browser/main/Containers/UserContainer.jsx index 732072c2..c9e653be 100644 --- a/browser/main/Containers/UserContainer.jsx +++ b/browser/main/Containers/UserContainer.jsx @@ -58,20 +58,38 @@ module.exports = React.createClass({ onListen: function (res) { if (res == null || res.status == null) return + var currentUser = this.state.currentUser + if (res.status === 'planetCreated') { - var currentUser = this.state.currentUser currentUser.Planets.push(res.data) localStorage.setItem('user', JSON.stringify(currentUser)) this.setState({currentUser: currentUser}) + return + } + + if (res.status === 'planetDeleted') { + currentUser.Planets.some(function (_planet, index) { + if (res.data.id === _planet.id) { + currentUser.Planets.splice(index, 1) + return true + } + return false + }) + + localStorage.setItem('user', JSON.stringify(currentUser)) + this.setState({currentUser: currentUser}) + return } if (res.status === 'nameChanged') { this.setState({currentUser: AuthStore.getUser()}) + return } if (res.status === 'userProfileUpdated') { this.setState({currentUser: AuthStore.getUser()}) + return } }, render: function () { diff --git a/browser/main/Stores/PlanetStore.js b/browser/main/Stores/PlanetStore.js index 6facbbb3..56dbd025 100644 --- a/browser/main/Stores/PlanetStore.js +++ b/browser/main/Stores/PlanetStore.js @@ -10,6 +10,7 @@ var PlanetStore = Reflux.createStore({ init: function () { this.listenTo(PlanetActions.createPlanet, this.createPlanet) this.listenTo(PlanetActions.fetchPlanet, this.fetchPlanet) + this.listenTo(PlanetActions.deletePlanet, this.deletePlanet) this.listenTo(PlanetActions.changeName, this.changeName) this.listenTo(PlanetActions.addUser, this.addUser) this.listenTo(PlanetActions.removeUser, this.removeUser) @@ -81,6 +82,25 @@ var PlanetStore = Reflux.createStore({ }) }.bind(this)) }, + deletePlanet: function (userName, planetName) { + request + .del(apiUrl + userName + '/' + planetName) + .send() + .end(function (err, res) { + if (err) { + console.error(err) + this.trigger(null) + return + } + + var planet = res.body + + this.trigger({ + status: 'planetDeleted', + data: planet + }) + }.bind(this)) + }, changeName: function (userName, planetName, name) { request .put(apiUrl + userName + '/' + planetName)