From 01d7c3676d91381c6a0224b5a78993cd30a71f67 Mon Sep 17 00:00:00 2001 From: Shekar Siri Date: Mon, 12 Jun 2023 16:54:10 +0200 Subject: [PATCH] fix(ui): account details updates --- .../Client/ProfileSettings/Settings.js | 58 ++++---- frontend/app/duck/user.js | 126 ++++++++---------- 2 files changed, 87 insertions(+), 97 deletions(-) diff --git a/frontend/app/components/Client/ProfileSettings/Settings.js b/frontend/app/components/Client/ProfileSettings/Settings.js index e8343ebda..12272763c 100644 --- a/frontend/app/components/Client/ProfileSettings/Settings.js +++ b/frontend/app/components/Client/ProfileSettings/Settings.js @@ -4,70 +4,70 @@ import { Button, Input, Form } from 'UI'; import { updateAccount, updateClient } from 'Duck/user'; import styles from './profileSettings.module.css'; -@connect(state => ({ - accountName: state.getIn([ 'user', 'account', 'name' ]), - organizationName: state.getIn([ 'user', 'account', 'tenantName' ]), - loading: state.getIn([ 'user', 'updateAccountRequest', 'loading' ]) || - state.getIn([ 'user', 'putClientRequest', 'loading' ]), -}), { - updateAccount, - updateClient, -}) +@connect( + (state) => ({ + accountName: state.getIn(['user', 'account', 'name']), + organizationName: state.getIn(['user', 'account', 'tenantName']), + loading: + state.getIn(['user', 'updateAccountRequest', 'loading']) || + state.getIn(['user', 'putClientRequest', 'loading']), + }), + { + updateAccount, + updateClient, + } +) export default class Settings extends React.PureComponent { state = { accountName: this.props.accountName, organizationName: this.props.organizationName, - } + }; onChange = ({ target: { value, name } }) => { - this.setState({ changed: true, [ name ]: value }); - } + this.setState({ changed: true, [name]: value }); + }; handleSubmit = (e) => { e.preventDefault(); const { accountName, organizationName } = this.state; - const promises = []; - if (accountName !== this.props.accountName) { - promises.push(this.props.updateAccount({ name: accountName })); - } - if (organizationName !== this.props.organizationName) { - promises.push(this.props.updateClient({ name: organizationName })); - } - Promise.all(promises) + this.props + .updateClient({ name: accountName, tenantName: organizationName }) .then(() => this.setState({ changed: false })); - } + }; render() { const { loading } = this.props; const { accountName, organizationName, changed, copied } = this.state; return ( -
+ - + - + - +
); } diff --git a/frontend/app/duck/user.js b/frontend/app/duck/user.js index d56ea4265..2a00b9c19 100644 --- a/frontend/app/duck/user.js +++ b/frontend/app/duck/user.js @@ -33,17 +33,17 @@ export const initialState = Map({ errors: List(), loginRequest: { loading: false, - errors: [], + errors: [] }, }); const setClient = (state, data) => { const client = Client(data); - return state.set('client', client); -}; + return state.set('client', client) +} export const UPDATE_JWT = 'jwt/UPDATE'; -export const DELETE = new RequestTypes('jwt/DELETE'); +export const DELETE = new RequestTypes('jwt/DELETE') export function setJwt(data) { return { type: UPDATE_JWT, @@ -51,6 +51,7 @@ export function setJwt(data) { }; } + const reducer = (state = initialState, action = {}) => { switch (action.type) { case RESET_ERRORS: @@ -58,15 +59,13 @@ const reducer = (state = initialState, action = {}) => { case UPDATE_JWT: return state.set('jwt', action.data); case LOGIN.REQUEST: - return state.set('loginRequest', { loading: true, errors: [] }); + return state.set('loginRequest', { loading: true, errors: [] }) case RESET_PASSWORD.SUCCESS: case LOGIN.SUCCESS: - return state - .set('account', Account({ ...action.data.user })) - .set('loginRequest', { loading: false, errors: [] }); + return state.set('account', Account({...action.data.user })).set('loginRequest', { loading: false, errors: [] }) case UPDATE_PASSWORD.REQUEST: case UPDATE_PASSWORD.SUCCESS: - return state.set('passwordErrors', List()); + return state.set('passwordErrors', List()) case SIGNUP.SUCCESS: state.set('account', Account(action.data.user)).set('onboarding', true); case REQUEST_RESET_PASSWORD.SUCCESS: @@ -77,99 +76,90 @@ const reducer = (state = initialState, action = {}) => { case FETCH_TENANTS.SUCCESS: return state.set('authDetails', action.data); case UPDATE_PASSWORD.FAILURE: - return state.set('passwordErrors', List(action.errors)); + return state.set('passwordErrors', List(action.errors)) case LOGIN.FAILURE: console.log('login failed', action); - deleteCookie('jwt', '/', 'openreplay.com'); + deleteCookie('jwt', '/', 'openreplay.com') return state.set('loginRequest', { loading: false, errors: action.errors }); case FETCH_ACCOUNT.FAILURE: case DELETE.SUCCESS: case DELETE.FAILURE: - deleteCookie('jwt', '/', 'openreplay.com'); + deleteCookie('jwt', '/', 'openreplay.com') return initialState; case PUT_CLIENT.REQUEST: - const _data = { ...action.params }; - if (_data.name) { - _data.tenantName = _data.name; - delete _data.name; - } - return state.mergeIn(['account'], _data); + console.log('put client request', action); + return state.mergeIn([ 'account' ], action.params); case FETCH_CLIENT.SUCCESS: return setClient(state, action.data); case PUSH_NEW_SITE: - return state.updateIn(['site', 'list'], (list) => list.push(action.newSite)); + return state.updateIn([ 'site', 'list' ], list => + list.push(action.newSite)); case SET_ONBOARDING: - return state.set('onboarding', action.state); + return state.set('onboarding', action.state) } return state; }; -export default withRequestState( - { - signupRequest: SIGNUP, - // loginRequest: LOGIN, - updatePasswordRequest: UPDATE_PASSWORD, - requestResetPassowrd: REQUEST_RESET_PASSWORD, - resetPassword: RESET_PASSWORD, - fetchUserInfoRequest: [FETCH_ACCOUNT, FETCH_CLIENT, FETCH_TENANTS], - putClientRequest: PUT_CLIENT, - updateAccountRequest: UPDATE_ACCOUNT, - }, - reducer -); -export const login = (params) => ({ +export default withRequestState({ + signupRequest: SIGNUP, + // loginRequest: LOGIN, + updatePasswordRequest: UPDATE_PASSWORD, + requestResetPassowrd: REQUEST_RESET_PASSWORD, + resetPassword: RESET_PASSWORD, + fetchUserInfoRequest: [ FETCH_ACCOUNT, FETCH_CLIENT, FETCH_TENANTS ], + putClientRequest: PUT_CLIENT, + updateAccountRequest: UPDATE_ACCOUNT, +}, reducer); + +export const login = params => ({ types: LOGIN.toArray(), - call: (client) => client.post('/login', params), + call: client => client.post('/login', params), }); -export const signup = (params) => (dispatch) => - dispatch({ - types: SIGNUP.toArray(), - call: (client) => client.post('/signup', params), - }); +export const signup = params => dispatch => dispatch({ + types: SIGNUP.toArray(), + call: client => client.post('/signup', params), +}); -export const resetPassword = (params) => (dispatch) => - dispatch({ - types: RESET_PASSWORD.toArray(), - call: (client) => client.post('/password/reset', params), - }); +export const resetPassword = params => dispatch => dispatch({ + types: RESET_PASSWORD.toArray(), + call: client => client.post('/password/reset', params) +}); -export const requestResetPassword = (params) => (dispatch) => - dispatch({ - types: REQUEST_RESET_PASSWORD.toArray(), - call: (client) => client.post('/password/reset-link', params), - }); +export const requestResetPassword = params => dispatch => dispatch({ + types: REQUEST_RESET_PASSWORD.toArray(), + call: client => client.post('/password/reset-link', params), +}); -export const updatePassword = (params) => (dispatch) => - dispatch({ - types: UPDATE_PASSWORD.toArray(), - call: (client) => client.post('/account/password', params), - }); +export const updatePassword = params => dispatch => dispatch({ + types: UPDATE_PASSWORD.toArray(), + call: client => client.post('/account/password', params), +}) export function fetchTenants() { return { types: FETCH_TENANTS.toArray(), - call: (client) => client.get('/signup'), - }; + call: client => client.get('/signup') + } } export const fetchUserInfo = () => ({ - types: FETCH_ACCOUNT.toArray(), - call: (client) => client.get('/account'), -}); + types: FETCH_ACCOUNT.toArray(), + call: client => client.get('/account'), + }); export function logout() { return { types: DELETE.toArray(), - call: (client) => client.get('/logout'), + call: client => client.get('/logout') }; } export function updateClient(params) { return { types: PUT_CLIENT.toArray(), - call: (client) => client.put('/client', params), + call: client => client.put('/client', params), params, }; } @@ -177,15 +167,15 @@ export function updateClient(params) { export function updateAccount(params) { return { types: UPDATE_ACCOUNT.toArray(), - call: (client) => client.post('/account', params), - }; + call: client => client.post('/account', params), + } } export function resendEmailVerification(email) { return { types: RESEND_EMAIL_VERIFICATION.toArray(), - call: (client) => client.post('/re-validate', { email }), - }; + call: client => client.post('/re-validate', { email }), + } } export function pushNewSite(newSite) { @@ -198,7 +188,7 @@ export function pushNewSite(newSite) { export function setOnboarding(state = false) { return { type: SET_ONBOARDING, - state, + state }; } @@ -206,4 +196,4 @@ export function resetErrors() { return { type: RESET_ERRORS, }; -} +} \ No newline at end of file