index.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. import React, { useState, useEffect } from 'react'
  2. import { CEditAvatar } from '../../components/EditAvatar'
  3. import { Input } from '../../components/Input'
  4. import { message, Image, Button } from 'antd'
  5. import { connect } from 'react-redux'
  6. import {
  7. actionUploadFile, actionSetAvatar,
  8. actionUserUpsert, actionUserUpdate,
  9. actionChangePassword,actionClearPromise
  10. } from '../../actions'
  11. import { Basic, ConstructorModal } from '../../helpers'
  12. import { SpoilerButton } from '../../components/Comment'
  13. export const EditAccount = ({showModalEdit }) => {
  14. return (
  15. <Button
  16. type="primary" style={{
  17. fontWeight: '600',
  18. fontSize: '15px',
  19. transition: ".3s",
  20. boxShadow: "0 5px 15px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22)",
  21. }}
  22. onClick={showModalEdit}>Edit Setting</Button>
  23. )
  24. }
  25. const EditSetting = ({ info, myId, onSaveUserUpsert,
  26. onSaveNewPassword, changePassword, onClearPromise}) => {
  27. const [state, setState] = useState(info)
  28. const [changePass, setChangePass] = useState(changePassword)
  29. const [isModalVisibleEdit, setIsModalVisibleEdit] = useState(false);
  30. // actionChangePassword
  31. console.log('all info ', info)
  32. console.log('login ', info?.login)
  33. const showModalEdit = () => {
  34. setIsModalVisibleEdit(true);
  35. };
  36. const handleCancelEdit = () => {
  37. setIsModalVisibleEdit(false)
  38. }
  39. const onChangeLogin = (event) =>
  40. setState({
  41. ...state,
  42. login: event.target.value,
  43. })
  44. const onChangeNick = (event) =>
  45. setState({
  46. ...state,
  47. nick: event.target.value,
  48. })
  49. const onChangePassLogin = (event) =>
  50. setChangePass({
  51. ...changePass,
  52. login: event.target.value,
  53. })
  54. const onChangePassPassword = (event) =>
  55. setChangePass({
  56. ...changePass,
  57. password: event.target.value,
  58. })
  59. const onChangePassNew = (event) =>
  60. setChangePass({
  61. ...changePass,
  62. newPassword: event.target.value,
  63. })
  64. const saveChange = () => {
  65. onSaveUserUpsert(state, myId)
  66. && message.success(`Successfully saved changed new login!`)
  67. && setIsModalVisibleEdit(false)
  68. &&onClearPromise('userUpsert')
  69. }
  70. // const saveChangeNick = () => {
  71. // onSaveUserUpsert(state?.nick, myId)
  72. // && message.success(`Successfully saved changed new nick!`)
  73. // && setIsModalVisibleEdit(false)
  74. // }
  75. const saveNewPassword = () => {
  76. onSaveNewPassword(changePass.login, changePass.password, changePass.newPassword)
  77. if (changePassword?.payload == null || changePass.login != info?.login) {
  78. message.error(`You entered wrong login/password! Try again!`) &&
  79. onClearPromise('newPassword')
  80. }
  81. else {
  82. message.success(`Successfully saved changed new password!`)
  83. && setIsModalVisibleEdit(false) && onClearPromise('newPassword')
  84. }
  85. }
  86. return (
  87. <div>
  88. <EditAccount showModalEdit={showModalEdit}/>
  89. <ConstructorModal title={'Edit setting'}
  90. isModalVisible={isModalVisibleEdit}
  91. setIsModalVisible={setIsModalVisibleEdit}
  92. handleCancel={handleCancelEdit}
  93. >
  94. <h2> Edit avatar </h2>
  95. <SpoilerButton text={'Change avatar'} style={{width:'100%'}}>
  96. <CEditAvatar setIsModalVisibleEdit={setIsModalVisibleEdit} />
  97. </SpoilerButton>
  98. <h2> Edit login </h2>
  99. <SpoilerButton text={'Change login'} style={{width:'100%'}}>
  100. <div style={{ display: 'flex', alignItems: 'center', flexDirection: 'row' }}>
  101. <Input
  102. state={state?.login || ''}
  103. onChangeText={onChangeLogin}
  104. />
  105. <Button size="large" style={{ margin: '10px' }}
  106. onClick={saveChange}
  107. disabled={state?.login ? false : true}
  108. type="primary"> Save login </Button>
  109. </div>
  110. </SpoilerButton>
  111. <h2> Edit nick </h2>
  112. <SpoilerButton text={'Change nick'} style={{width:'100%'}}>
  113. <div style={{ display: 'flex', alignItems: 'center', flexDirection: 'row' }}>
  114. <Input
  115. state={state?.nick || ''}
  116. onChangeText={onChangeNick}
  117. />
  118. <Button style={{ margin: '10px' }}
  119. disabled={state?.nick ? false : true}
  120. onClick={saveChange}
  121. size="large"
  122. type="primary"
  123. >
  124. Save nick
  125. </Button>
  126. </div>
  127. </SpoilerButton>
  128. <h2> Edit password </h2>
  129. <SpoilerButton text={'Change password'} style={{width:'100%'}}>
  130. <h3> Login</h3>
  131. <div style={{ display: 'flex', alignItems: 'center', flexDirection: 'row' }}>
  132. <Input
  133. state={changePass?.login || ''}
  134. onChangeText={onChangePassLogin}
  135. />
  136. </div>
  137. <h3> Old password</h3>
  138. <div style={{ display: 'flex', alignItems: 'center', flexDirection: 'row' }}>
  139. <Input
  140. state={changePass?.password || ''}
  141. onChangeText={onChangePassPassword}
  142. />
  143. </div>
  144. <h3> New password</h3>
  145. <div style={{ display: 'flex', alignItems: 'center', flexDirection: 'row' }}>
  146. <Input
  147. state={changePass?.newPassword || ''}
  148. onChangeText={onChangePassNew}
  149. />
  150. </div>
  151. <div style={{
  152. display: 'flex',
  153. alignItems: 'center',
  154. flexDirection: 'column',
  155. }}>
  156. <Button style={{ margin: '10px' }}
  157. disabled={changePass?.login&&changePass?.password && changePass?.newPassword ? false : true}
  158. onClick={saveNewPassword}
  159. size="large"
  160. type="primary"
  161. >
  162. Save new password
  163. </Button>
  164. </div>
  165. </SpoilerButton>
  166. </ConstructorModal>
  167. </div>
  168. )
  169. }
  170. export const CEditSetting = connect(
  171. (state) => ({
  172. myId: state?.auth.payload.sub?.id,
  173. info: state?.myData?.aboutMe,
  174. changePassword : state.promise?.newPassword
  175. }),
  176. {
  177. onSaveUserUpsert: actionUserUpdate,
  178. onSaveNewPassword: actionChangePassword,
  179. onClearPromise:actionClearPromise
  180. },
  181. )(EditSetting)