@@ -117,6 +117,10 @@ class Member extends React.PureComponent {
117117 id = this . getIdFromPath ( ) ;
118118 }
119119
120+ if ( window . location . search . includes ( "edit=true" ) ) {
121+ this . setState ( { edit : true } ) ;
122+ }
123+
120124 this . props . client
121125 . query ( {
122126 query : getUserQuery ,
@@ -159,6 +163,10 @@ class Member extends React.PureComponent {
159163 if ( ( prevProps . user . user || { } ) . id !== ( this . props . user . user || { } ) . id ) {
160164 this . setState ( { editable : ! ! this . isCurrentUser ( ) } ) ;
161165 }
166+ const urlHasEdit = window . location . search . includes ( "edit=true" ) ;
167+ if ( urlHasEdit !== this . state . edit ) {
168+ this . setState ( { edit : urlHasEdit } ) ;
169+ }
162170 }
163171
164172 /**
@@ -215,20 +223,23 @@ class Member extends React.PureComponent {
215223 * Updates the state's user edit state
216224 */
217225 handleEdit = ( ) => {
226+ navigate ( `${ window . location . pathname } ?edit=true` ) ;
218227 this . setState ( state => ( { history : { ...state } , edit : true } ) ) ;
219228 } ;
220229
221230 /**
222231 * Updates the state's user edit state to false and reverts changes.
223232 */
224233 handleCancel = ( ) => {
234+ navigate ( `${ window . location . pathname } ` ) ;
225235 this . setState ( state => ( { ...state . history , edit : false } ) ) ;
226236 } ;
227237
228238 /**
229239 * Updates state's user object and edit state.
230240 */
231241 handleSave = ( ) => {
242+ navigate ( `${ window . location . pathname } ` ) ;
232243 this . setState ( ( { clubsToPreserve, clubs } ) => ( {
233244 clubs : clubs . filter ( club => clubsToPreserve . includes ( club . id ) ) ,
234245 edit : false
@@ -251,8 +262,9 @@ class Member extends React.PureComponent {
251262
252263 render ( ) {
253264 const snapshot = this . state ;
265+ const isEditing = snapshot . edit && this . isCurrentUser ( ) ;
254266
255- const name = snapshot . edit ? (
267+ const name = isEditing ? (
256268 < TextInput
257269 label = "Name"
258270 name = "name"
@@ -267,7 +279,7 @@ class Member extends React.PureComponent {
267279 < div > { snapshot . name } </ div >
268280 ) ;
269281
270- const sortDescription = snapshot . edit ? (
282+ const sortDescription = isEditing ? (
271283 < TextInput
272284 label = "Short Description"
273285 name = "sortDescription"
@@ -285,7 +297,7 @@ class Member extends React.PureComponent {
285297 )
286298 ) ;
287299
288- const description = snapshot . edit ? (
300+ const description = isEditing ? (
289301 < TextInput
290302 multiline
291303 label = "Description"
@@ -299,7 +311,7 @@ class Member extends React.PureComponent {
299311 snapshot . description && < div > { snapshot . description } </ div >
300312 ) ;
301313
302- const club = snapshot . edit ? (
314+ const club = isEditing ? (
303315 < div >
304316 { snapshot . clubs . length > 0 && (
305317 < h2 className = "member__checkbox-title" > Unsubscribe from club</ h2 >
@@ -338,7 +350,7 @@ class Member extends React.PureComponent {
338350 )
339351 ) ;
340352
341- const newsletter = snapshot . edit && (
353+ const newsletter = isEditing && (
342354 < div className = "member__newsletter" >
343355 < div className = "member__checkbox member__checkbox--with-icon" >
344356 < Inbox className = "member__icon" />
@@ -356,7 +368,7 @@ class Member extends React.PureComponent {
356368 </ div >
357369 ) ;
358370
359- const isOverTheLegalLimit = snapshot . edit && (
371+ const isOverTheLegalLimit = isEditing && (
360372 < div className = "member__legal" >
361373 < Shape seafoamBlue waveLarge divider className = "member__divider" />
362374
@@ -377,7 +389,7 @@ class Member extends React.PureComponent {
377389 </ div >
378390 ) ;
379391
380- const github = snapshot . edit ? (
392+ const github = isEditing ? (
381393 < div className = "member__text-field--wrapper-with-icon" >
382394 < GitHub className = "member__icon" />
383395 < TextInput
@@ -397,7 +409,7 @@ class Member extends React.PureComponent {
397409 )
398410 ) ;
399411
400- const personalUrl = snapshot . edit ? (
412+ const personalUrl = isEditing ? (
401413 < div className = "member__text-field--wrapper-with-icon" >
402414 < Link className = "member__icon" />
403415 < TextInput
@@ -423,7 +435,7 @@ class Member extends React.PureComponent {
423435
424436 let buttonList = [ ] ;
425437
426- if ( snapshot . edit ) {
438+ if ( isEditing ) {
427439 buttonList . push (
428440 < div
429441 tabIndex = { 0 }
@@ -445,7 +457,7 @@ class Member extends React.PureComponent {
445457 < Check size = { 16 } /> Save changes
446458 </ button >
447459 ) ;
448- } else if ( snapshot . editable ) {
460+ } else if ( this . isCurrentUser ( ) ) {
449461 buttonList . push (
450462 < div
451463 tabIndex = { 0 }
@@ -516,8 +528,8 @@ class Member extends React.PureComponent {
516528 </ div >
517529 ) }
518530
519- { isOverTheLegalLimit && isOverTheLegalLimit }
520- { newsletter && newsletter }
531+ { isOverTheLegalLimit }
532+ { newsletter }
521533 </ div >
522534 </ ShadowBox >
523535
@@ -534,7 +546,7 @@ class Member extends React.PureComponent {
534546 { `${ snapshot . name } | ${ GatsbyConfig . siteMetadata . title } ` }
535547 </ title >
536548 </ Helmet >
537- { snapshot . edit ? (
549+ { isEditing ? (
538550 < form onSubmit = { e => e . preventDefault ( ) || this . handleSubmit ( e ) } >
539551 { memberInner }
540552 </ form >
0 commit comments