@@ -7,35 +7,89 @@ import {connect} from "react-redux"
7
7
8
8
import './css/settingsPage-media.scss'
9
9
import ShareBtn from "../sharedComponents/sharePostBTN" ;
10
+ import { updateUser } from "../../actions/userAction" ;
11
+
12
+
10
13
class SettingPage extends React . Component {
11
14
render ( ) {
12
15
console . log ( "user from settings" , this . props . user ) ;
13
16
return (
14
17
< div className = { "settings-page" } >
15
18
< div className = "settings-window" >
16
19
< div className = "avatar" >
17
- < img src = { require ( "../sharedComponents/postComment/img/laura-comment.png" ) } alt = "" className = { "setting-page-avatar" } />
20
+ < img src = { this . props . user . profile_photo } alt = "" className = { "setting-page-avatar" } />
18
21
< button className = "change-photo-button" > Change Profile Picture</ button >
19
22
</ div >
20
- < div className = "settings-username" > anna_white</ div >
21
- < form action = "" className = { "settings-form" } >
23
+ < div className = "settings-username" > { this . props . user . username } </ div >
24
+ < form action = "" className = { "settings-form" } onSubmit = { async ( event ) => {
25
+ event . preventDefault ( ) ;
26
+ const formInputs = event . target . querySelectorAll ( "input" ) ;
27
+ let oldPassword = formInputs [ 6 ] . value ;
28
+ let newPassword = formInputs [ 7 ] . value ;
29
+ let newPasswordConfrim = formInputs [ 8 ] . value ;
30
+ const userUpdated = {
31
+ name : formInputs [ 0 ] . value ,
32
+ username : formInputs [ 1 ] . value ,
33
+ description : formInputs [ 2 ] . value ,
34
+ gender : event . target . querySelector ( "select" ) . value ,
35
+ birthdate : formInputs [ 3 ] . value ,
36
+ mail : formInputs [ 4 ] . value ,
37
+ phone_number : formInputs [ 5 ] . value ,
38
+ } ;
39
+ if ( oldPassword === "" && newPassword === "" && newPasswordConfrim === "" ) {
40
+ await fetch ( `https://fp-instagram.herokuapp.com/users/${ this . props . user . id } ` , {
41
+ headers : {
42
+ "Content-Type" : "application/json" ,
43
+ "Accept" : "application/json" ,
44
+ "Origin" : "http://localhost:3000"
45
+ } ,
46
+ method : "PUT" ,
47
+ body : JSON . stringify ( userUpdated )
48
+ } ) . then ( response => {
49
+ this . props . userUpdateToProps ( this . props . user . id ) ;
50
+ alert ( "Updated is added" ) ;
51
+ } )
52
+ . then ( ( ) => {
53
+ this . props . history . goBack ( ) ;
54
+ } ) ;
55
+ }
56
+ else if ( oldPassword === this . props . user . password && newPassword === newPasswordConfrim && newPassword !== "" ) {
57
+ userUpdated . password = newPassword ;
58
+ await fetch ( `https://fp-instagram.herokuapp.com/users/${ this . props . user . id } ` , {
59
+ headers : {
60
+ "Content-Type" : "application/json" ,
61
+ "Accept" : "application/json" ,
62
+ "Origin" : "http://localhost:3000"
63
+ } ,
64
+ method : "PUT" ,
65
+ body : JSON . stringify ( userUpdated )
66
+ } ) . then ( response => {
67
+ this . props . userUpdateToProps ( this . props . user . id ) ;
68
+ alert ( "Updated is added" ) ;
69
+ } )
70
+ . then ( ( ) => {
71
+ this . props . history . goBack ( ) ;
72
+ } ) ;
73
+ }
74
+ else {
75
+ alert ( "Please check the data" ) ;
76
+ }
77
+ } } >
22
78
< fieldset className = { "personal-info" } >
23
79
< label htmlFor = "change-name" className = { "settings-labels" } > Name
24
- < input id = { "change-name" } type = "text" className = { "personal-info-fields" } />
80
+ < input id = { "change-name" } type = "text" className = { "personal-info-fields" } defaultValue = { this . props . user . name } />
25
81
</ label >
26
82
< label htmlFor = "change-username" className = { "settings-labels" } > Username
27
- < input id = { "change-username" } type = "text" className = { "personal-info-fields" } />
83
+ < input id = { "change-username" } type = "text" className = { "personal-info-fields" } defaultValue = { this . props . user . username } />
28
84
</ label >
29
85
< label htmlFor = "change-bio" className = { "settings-labels" } > Bio
30
- < input id = { "change-bio" } type = "text" className = { "personal-info-fields" } />
86
+ < input id = { "change-bio" } type = "text" className = { "personal-info-fields" } defaultValue = { this . props . user . description } />
31
87
</ label >
32
88
< label htmlFor = "change-gender " className = { "gender-select-holder settings-labels" } > Gender
33
- { /*<input id={"change-gender"} type="text" className={"personal-info-fields"}/>*/ }
34
89
< select name = "change-gender" id = "change-gender" className = { "personal-info-fields" } >
35
- < option value = "default-select-option" > -Please select your gender</ option >
36
- < option value = "male" > Male</ option >
37
- < option value = "male" > Female</ option >
38
-
90
+ { /*<option value="default-select-option" disabled={true}>-Please select your gender</option>*/ }
91
+ < option value = "M" selected = { this . props . user . gender === "M" } > Male</ option >
92
+ < option value = "F" selected = { this . props . user . gender === "F" } > Female</ option >
39
93
</ select >
40
94
</ label >
41
95
< label className = { "settings-labels" } htmlFor = "change-birthdate" > Birthday
@@ -45,10 +99,10 @@ class SettingPage extends React.Component{
45
99
46
100
< fieldset className = { "change-contact-info" } >
47
101
< label className = { "settings-labels" } htmlFor = "change-email" > E-mail
48
- < input id = { "change-email" } type = "text" className = { "contact-info-fields" } />
102
+ < input id = { "change-email" } type = "text" className = { "contact-info-fields" } defaultValue = { this . props . user . mail } />
49
103
</ label >
50
104
< label className = { "settings-labels" } htmlFor = "change-phone" > Phone Number
51
- < input id = { "change-phone" } type = "text" className = { "contact-info-fields" } />
105
+ < input id = { "change-phone" } type = "text" className = { "contact-info-fields" } defaultValue = { this . props . user . phone_number } />
52
106
</ label >
53
107
</ fieldset >
54
108
@@ -84,4 +138,10 @@ const mapStateToProps = store => {
84
138
}
85
139
} ;
86
140
87
- export default connect ( mapStateToProps ) ( SettingPage ) ;
141
+ const mapDispatchToProps = dispatch => {
142
+ return {
143
+ userUpdateToProps : userId => dispatch ( updateUser ( userId ) )
144
+ }
145
+ } ;
146
+
147
+ export default connect ( mapStateToProps , mapDispatchToProps ) ( SettingPage ) ;
0 commit comments