@@ -3,6 +3,7 @@ var ReactRouter = require('react-router')
33var ModalBase = require ( '../Components/ModalBase' )
44var LaunchModal = require ( '../Components/LaunchModal' )
55var CodeViewer = require ( '../Components/CodeViewer' )
6+ var SnippetEditModal = require ( '../Components/SnippetEditModal' )
67
78var AuthStore = require ( '../Stores/AuthStore' )
89var PlanetStore = require ( '../Stores/PlanetStore' )
@@ -160,6 +161,20 @@ var PlanetArticleDetail = React.createClass({
160161 propTypes : {
161162 snippet : React . PropTypes . object
162163 } ,
164+ getInitialState : function ( ) {
165+ return {
166+ isEditModalOpen : false
167+ }
168+ } ,
169+ openEditModal : function ( ) {
170+ this . setState ( { isEditModalOpen : true } )
171+ } ,
172+ closeEditModal : function ( ) {
173+ this . setState ( { isEditModalOpen : false } )
174+ } ,
175+ submitEditModal : function ( ) {
176+ this . setState ( { isEditModalOpen : false } )
177+ } ,
163178 render : function ( ) {
164179 var snippet = this . props . snippet
165180
@@ -174,9 +189,13 @@ var PlanetArticleDetail = React.createClass({
174189 < div className = 'viewer-header' >
175190 < i className = 'fa fa-code' > </ i > { snippet . callSign } < small className = 'updatedAt' > { snippet . updatedAt } </ small >
176191 < span className = 'control-group' >
177- < button className = 'btn-default btn-square btn-sm' > < i className = 'fa fa-edit fa-fw' > </ i > </ button >
192+ < button onClick = { this . openEditModal } className = 'btn-default btn-square btn-sm' > < i className = 'fa fa-edit fa-fw' > </ i > </ button >
178193 < button className = 'btn-default btn-square btn-sm' > < i className = 'fa fa-trash fa-fw' > </ i > </ button >
179194 </ span >
195+
196+ < ModalBase isOpen = { this . state . isEditModalOpen } close = { this . closeEditModal } >
197+ < SnippetEditModal snippet = { snippet } submit = { this . submitEditModal } close = { this . closeEditModal } />
198+ </ ModalBase >
180199 </ div >
181200 < div className = 'viewer-body' >
182201 < div className = 'viewer-detail' >
@@ -212,6 +231,9 @@ module.exports = React.createClass({
212231 this . unsubscribe ( )
213232 } ,
214233 onFetched : function ( res ) {
234+ var snippets = this . state . currentPlanet == null ? null : this . state . currentPlanet . Snippets
235+ var snippet = res . data
236+
215237 switch ( res . status ) {
216238 case 'planetFetched' :
217239 var planet = res . data
@@ -225,18 +247,26 @@ module.exports = React.createClass({
225247 } )
226248 break
227249 case 'snippetCreated' :
228- var snippet = res . data
229-
230250 if ( snippet . PlanetId === this . state . currentPlanet . id ) {
231- var snippets = this . state . currentPlanet . Snippets
232251 snippets . unshift ( snippet )
233252 this . setState ( { planet : this . state . currentPlanet } , function ( ) {
234253 var params = this . getParams ( )
235254 params . localId = snippet . localId
236255 this . transitionTo ( 'snippets' , params )
237256 } )
238257 }
239-
258+ break
259+ case 'snippetUpdated' :
260+ if ( snippet . PlanetId === this . state . currentPlanet . id ) {
261+ snippets . some ( function ( _snippet , index ) {
262+ if ( _snippet . id === snippet . id ) {
263+ snippets [ index ] = snippet
264+ this . setState ( { snippets : snippets } )
265+ return true
266+ }
267+ return false
268+ } . bind ( this ) )
269+ }
240270 }
241271
242272 } ,
0 commit comments