From 717eb4d66d592fa79bf28ec17a333fbe0f028b6b Mon Sep 17 00:00:00 2001 From: Brooke Date: Wed, 4 Jan 2023 10:37:33 -0800 Subject: [PATCH] TCA-844 Remove obsolete account profile page and redirect to TC main account profile --- .../environment.default.config.ts | 1 + .../environments/environment.prod.config.ts | 1 + src-ts/lib/global-config.model.ts | 1 + src-ts/utils/settings/Settings.tsx | 14 +-- .../settings/account/Account.module.scss | 31 ++--- src-ts/utils/settings/account/Account.tsx | 115 +++--------------- .../change-password/ChangePassword.tsx | 58 --------- .../change-password-form.config.ts | 98 --------------- .../settings/account/change-password/index.ts | 2 - .../settings/account/edit-name/EditName.tsx | 67 ---------- .../edit-name/edit-name-form.config.ts | 53 -------- .../utils/settings/account/edit-name/index.ts | 2 - src-ts/utils/settings/settings.routes.tsx | 4 + start-ssl.sh | 0 14 files changed, 40 insertions(+), 407 deletions(-) delete mode 100644 src-ts/utils/settings/account/change-password/ChangePassword.tsx delete mode 100644 src-ts/utils/settings/account/change-password/change-password-form.config.ts delete mode 100644 src-ts/utils/settings/account/change-password/index.ts delete mode 100644 src-ts/utils/settings/account/edit-name/EditName.tsx delete mode 100644 src-ts/utils/settings/account/edit-name/edit-name-form.config.ts delete mode 100644 src-ts/utils/settings/account/edit-name/index.ts mode change 100644 => 100755 start-ssl.sh diff --git a/src-ts/config/environments/environment.default.config.ts b/src-ts/config/environments/environment.default.config.ts index 525463eda..a3454b9f3 100644 --- a/src-ts/config/environments/environment.default.config.ts +++ b/src-ts/config/environments/environment.default.config.ts @@ -36,6 +36,7 @@ export const EnvironmentConfigDefault: EnvironmentConfigModel = { 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJUb3Bjb2RlciBVc2VyIl0sImlzcyI6Imh0dHBzOi8vYXBpLnRvcGNvZGVyLWRldi5jb20iLCJoYW5kbGUiOiJ0ZXN0MSIsImV4cCI6MjU2MzA3NjY4OSwidXNlcklkIjoiNDAwNTEzMzMiLCJpYXQiOjE0NjMwNzYwODksImVtYWlsIjoidGVzdEB0b3Bjb2Rlci5jb20iLCJqdGkiOiJiMzNiNzdjZC1iNTJlLTQwZmUtODM3ZS1iZWI4ZTBhZTZhNGEifQ.jl6Lp_friVNwEP8nfsfmL-vrQFzOFp2IfM_HC7AwGcg', }, TOPCODER_URLS: { + ACCOUNT_PROFILE: `${COMMUNITY_WEBSITE}/settings/profile`, ACCOUNT_SETTINGS: `${COMMUNITY_WEBSITE}/settings/account`, API_BASE: `${COMMUNITY_WEBSITE}/api`, BLOG_PAGE: `${COMMUNITY_WEBSITE}/blog`, diff --git a/src-ts/config/environments/environment.prod.config.ts b/src-ts/config/environments/environment.prod.config.ts index 222edbb03..5e1dc4f25 100644 --- a/src-ts/config/environments/environment.prod.config.ts +++ b/src-ts/config/environments/environment.prod.config.ts @@ -34,6 +34,7 @@ export const EnvironmentConfigProd: EnvironmentConfigModel = { 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJUb3Bjb2RlciBVc2VyIl0sImlzcyI6Imh0dHBzOi8vYXBpLnRvcGNvZGVyLWRldi5jb20iLCJoYW5kbGUiOiJ0ZXN0MSIsImV4cCI6MjU2MzA3NjY4OSwidXNlcklkIjoiNDAwNTEzMzMiLCJpYXQiOjE0NjMwNzYwODksImVtYWlsIjoidGVzdEB0b3Bjb2Rlci5jb20iLCJqdGkiOiJiMzNiNzdjZC1iNTJlLTQwZmUtODM3ZS1iZWI4ZTBhZTZhNGEifQ.jl6Lp_friVNwEP8nfsfmL-vrQFzOFp2IfM_HC7AwGcg', }, TOPCODER_URLS: { + ACCOUNT_PROFILE: `${COMMUNITY_WEBSITE}/settings/profile`, ACCOUNT_SETTINGS: `${COMMUNITY_WEBSITE}/settings/account`, API_BASE: `${COMMUNITY_WEBSITE}/api`, BLOG_PAGE: `${COMMUNITY_WEBSITE}/blog`, diff --git a/src-ts/lib/global-config.model.ts b/src-ts/lib/global-config.model.ts index 18820b175..8a5ed11b6 100644 --- a/src-ts/lib/global-config.model.ts +++ b/src-ts/lib/global-config.model.ts @@ -29,6 +29,7 @@ export interface GlobalConfig { CUSTOMER_TOKEN: string } TOPCODER_URLS: { + ACCOUNT_PROFILE: string ACCOUNT_SETTINGS: string API_BASE: string BLOG_PAGE: string diff --git a/src-ts/utils/settings/Settings.tsx b/src-ts/utils/settings/Settings.tsx index 1482e0b8d..46f584190 100644 --- a/src-ts/utils/settings/Settings.tsx +++ b/src-ts/utils/settings/Settings.tsx @@ -1,22 +1,18 @@ import { FC, useContext } from 'react' import { Outlet, Routes } from 'react-router-dom' -import { ContentLayout, profileContext, ProfileContextData, routeContext, RouteContextData } from '../../lib' +import { ContentLayout, routeContext, RouteContextData } from '../../lib' export const toolTitle: string = 'Account Settings' +/** + * DEPRECATED + * TODO: Remove after some time, when clear no one links to here... + */ const Settings: FC<{}> = () => { const { getChildRoutes }: RouteContextData = useContext(routeContext) - const profileContextData: ProfileContextData = useContext(profileContext) - const { profile }: ProfileContextData = profileContextData - - // if we don't have a profile, don't show the page - if (!profile) { - return <> - } - return ( <> diff --git a/src-ts/utils/settings/account/Account.module.scss b/src-ts/utils/settings/account/Account.module.scss index d4174753b..1e997c714 100644 --- a/src-ts/utils/settings/account/Account.module.scss +++ b/src-ts/utils/settings/account/Account.module.scss @@ -1,22 +1,15 @@ -@import '../../../lib/styles/includes'; - -:global(.account-settings-modal) { - h2 { - margin-bottom: $space-xxl; - padding: 0 0 $space-xxl; - border-bottom: 1px solid $black-10; - } - -} - +/** + * DEPRECATED + * TODO: Remove after some time, when no used... + */ .cards { - display: grid; - grid-template-columns: repeat(3, 1fr); - column-gap: $space-xxl; - margin: $space-xxl 0 0; - - @include ltemd { - grid-template-columns: 1fr; - row-gap: $space-xxl; + flex: 1; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + + h3 { + margin-bottom: 32px; } } diff --git a/src-ts/utils/settings/account/Account.tsx b/src-ts/utils/settings/account/Account.tsx index bc04d6d75..a4f9ba495 100644 --- a/src-ts/utils/settings/account/Account.tsx +++ b/src-ts/utils/settings/account/Account.tsx @@ -1,112 +1,29 @@ -/* eslint-disable jsx-a11y/tabindex-no-positive */ -import { Dispatch, FC, SetStateAction, useCallback, useContext, useState } from 'react' -import Modal from 'react-responsive-modal' +import { FC, useEffect } from 'react' -import { - Button, - Card, - formGetInputFields, - FormInputModel, - formOnReset, - profileContext, - ProfileContextData, -} from '../../../lib' +import { Button } from '../../../lib' +import { EnvironmentConfig } from '../../../config' -import { ChangePassword } from './change-password' -import { EditName, editNameFormDef } from './edit-name' import styles from './Account.module.scss' +/** + * DEPRECTED + * TODO: Remove after some time, when clear no one links to here... + */ const Account: FC<{}> = () => { - const profileContextData: ProfileContextData = useContext(profileContext) - const { profile }: ProfileContextData = profileContextData - - const [editProfileOpen, setEditNameOpen]: [boolean, Dispatch>] - = useState(false) - const [changePasswordOpen, setChangePasswordOpen]: [boolean, Dispatch>] - = useState(false) - - const toggleEditName = useCallback((): void => { - const inputs: Array = formGetInputFields(editNameFormDef.groups || []) - formOnReset(inputs) - setEditNameOpen(!editProfileOpen) - }, [editProfileOpen]) - - const toggleChangePassword = useCallback((): void => { - const inputs: Array = formGetInputFields(editNameFormDef.groups || []) - formOnReset(inputs) - setChangePasswordOpen(!changePasswordOpen) - }, [changePasswordOpen]) - - // if we don't have a profile, don't show the page - if (!profile) { - return <> - } + // setup auto redirect in 5sec. + useEffect(() => { + setTimeout(() => { + window.location.href = EnvironmentConfig.TOPCODER_URLS.ACCOUNT_SETTINGS + }, 5000) + }, []) return (
- -

- Email: - {' '} - {profile.email} -

-

- Username: - {' '} - {profile.handle} -

-
- - -

- {profile.firstName} - {' '} - {profile.lastName} -

-
) } diff --git a/src-ts/utils/settings/account/change-password/ChangePassword.tsx b/src-ts/utils/settings/account/change-password/ChangePassword.tsx deleted file mode 100644 index 37f967151..000000000 --- a/src-ts/utils/settings/account/change-password/ChangePassword.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import { Dispatch, FC, SetStateAction, useCallback, useContext, useState } from 'react' - -import { - ChangePasswordRequest, - Form, - FormDefinition, - formGetInputModel, - FormInputModel, - profileContext, - ProfileContextData, - UserProfile, -} from '../../../../lib' - -import { ChangePasswordFieldName, changePasswordFormDef } from './change-password-form.config' - -interface ChangePasswordProps { - readonly onClose: () => void -} - -const ChangePassword: FC = (props: ChangePasswordProps) => { - - const profileContextData: ProfileContextData = useContext(profileContext) - const { profile, changePassword }: ProfileContextData = profileContextData - - const [passwordForm]: [FormDefinition, Dispatch>] - = useState(changePasswordFormDef) - - const requestGenerator = useCallback(( - inputs: ReadonlyArray, - ): ChangePasswordRequest => { - const password: string - = formGetInputModel(inputs, ChangePasswordFieldName.currentPassword).value as string - const newPassword: string - = formGetInputModel(inputs, ChangePasswordFieldName.newPassword).value as string - return { - newPassword, - password, - } - }, []) - - const save = useCallback((updatedPassword: ChangePasswordRequest): Promise => ( - changePassword((profile as UserProfile).userId, updatedPassword) - .then(() => { - props.onClose() - }) - ), [changePassword, profile, props.onClose]) - - return ( -
- ) -} - -export default ChangePassword diff --git a/src-ts/utils/settings/account/change-password/change-password-form.config.ts b/src-ts/utils/settings/account/change-password/change-password-form.config.ts deleted file mode 100644 index 8d79ffc5b..000000000 --- a/src-ts/utils/settings/account/change-password/change-password-form.config.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { - FormDefinition, - FormInputAutocompleteOption, - validatorDoesNotMatchOther, - validatorMatchOther, - validatorPassword, - validatorRequired, - validatorRequiredIfOther, -} from '../../../../lib' - -export const changePasswordFormTitle: string = 'Change Password' - -export enum ChangePasswordFieldName { - confirmPassword = 'confirmPassword', - currentPassword = 'password', - newPassword = 'newPassword', -} - -export const changePasswordFormDef: FormDefinition = { - buttons: { - primaryGroup: [ - { - buttonStyle: 'secondary', - isSubmit: true, - label: 'Change password', - size: 'xl', - type: 'submit', - }, - ], - }, - groups: [ - { - inputs: [ - { - autocomplete: FormInputAutocompleteOption.current, - dependentFields: [ - ChangePasswordFieldName.newPassword, - ], - label: 'Current Password', - name: ChangePasswordFieldName.currentPassword, - placeholder: 'Enter your current password', - type: 'password', - validators: [ - { - validator: validatorRequired, - }, - ], - }, - { - autocomplete: FormInputAutocompleteOption.new, - dependentFields: [ - ChangePasswordFieldName.confirmPassword, - ChangePasswordFieldName.currentPassword, - ], - label: 'New Password', - name: ChangePasswordFieldName.newPassword, - placeholder: 'Enter your new password', - type: 'password', - validators: [ - { - validator: validatorRequired, - }, - { - dependentField: ChangePasswordFieldName.currentPassword, - validator: validatorDoesNotMatchOther, - }, - { - validator: validatorPassword, - }, - ], - }, - { - autocomplete: FormInputAutocompleteOption.off, - dependentFields: [ - ChangePasswordFieldName.newPassword, - ], - label: 'Confirm Password', - name: ChangePasswordFieldName.confirmPassword, - placeholder: 'Re-enter your new password', - type: 'password', - validators: [ - { - dependentField: ChangePasswordFieldName.newPassword, - validator: validatorRequiredIfOther, - }, - { - dependentField: ChangePasswordFieldName.newPassword, - validator: validatorMatchOther, - }, - ], - }, - ], - }, - ], - shortName: 'Password', - tabIndexStart: 3, - title: changePasswordFormTitle, -} diff --git a/src-ts/utils/settings/account/change-password/index.ts b/src-ts/utils/settings/account/change-password/index.ts deleted file mode 100644 index d1267be44..000000000 --- a/src-ts/utils/settings/account/change-password/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { default as ChangePassword } from './ChangePassword' -export { changePasswordFormTitle, changePasswordFormDef } from './change-password-form.config' diff --git a/src-ts/utils/settings/account/edit-name/EditName.tsx b/src-ts/utils/settings/account/edit-name/EditName.tsx deleted file mode 100644 index 3af3a36dc..000000000 --- a/src-ts/utils/settings/account/edit-name/EditName.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import { Dispatch, FC, SetStateAction, useCallback, useContext, useState } from 'react' - -import { - EditNameRequest, - Form, - FormDefinition, - formGetInputModel, - FormInputModel, - profileContext, - ProfileContextData, - UserProfile, -} from '../../../../lib' -import '../../../../lib/styles/index.scss' - -import { EditNameFieldName, editNameFormDef } from './edit-name-form.config' - -interface EditNameProps { - onClose: () => void -} - -const EditName: FC = (props: EditNameProps) => { - - const profileContextData: ProfileContextData = useContext(profileContext) - const { profile, updateProfile }: ProfileContextData = profileContextData - - const [profileForm]: [FormDefinition, Dispatch>] - = useState(editNameFormDef) - - const requestGenerator = useCallback(( - inputs: ReadonlyArray, - ): EditNameRequest => { - const firstName: string - = formGetInputModel(inputs, EditNameFieldName.firstName).value as string - const lastName: string - = formGetInputModel(inputs, EditNameFieldName.lastName).value as string - return { - firstName, - lastName, - } - }, []) - - const saveProfile = useCallback((updatedProfile: EditNameRequest): Promise => ( - updateProfile({ - ...profileContextData, - profile: { - ...profileContextData.profile as UserProfile, - firstName: updatedProfile.firstName, - lastName: updatedProfile.lastName, - }, - }) - .then(() => { - props.onClose() - }) - ), [profileContextData, props.onClose, updateProfile]) - - return ( - - ) -} - -export default EditName diff --git a/src-ts/utils/settings/account/edit-name/edit-name-form.config.ts b/src-ts/utils/settings/account/edit-name/edit-name-form.config.ts deleted file mode 100644 index f6da247ed..000000000 --- a/src-ts/utils/settings/account/edit-name/edit-name-form.config.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { FormDefinition, FormInputAutocompleteOption, validatorRequired } from '../../../../lib' - -export const editNameFormTitle: string = 'Edit Name' - -export enum EditNameFieldName { - firstName = 'firstName', - lastName = 'lastName', -} - -export const editNameFormDef: FormDefinition = { - buttons: { - primaryGroup: [ - { - buttonStyle: 'secondary', - isSubmit: true, - label: 'Save', - size: 'lg', - type: 'submit', - }, - ], - }, - groups: [ - { - inputs: [ - { - autocomplete: FormInputAutocompleteOption.off, - label: 'First Name', - name: EditNameFieldName.firstName, - type: 'text', - validators: [ - { - validator: validatorRequired, - }, - ], - }, - { - autocomplete: FormInputAutocompleteOption.off, - label: 'Last Name', - name: EditNameFieldName.lastName, - type: 'text', - validators: [ - { - validator: validatorRequired, - }, - ], - }, - ], - }, - ], - shortName: 'Name', - tabIndexStart: 3, - title: editNameFormTitle, -} diff --git a/src-ts/utils/settings/account/edit-name/index.ts b/src-ts/utils/settings/account/edit-name/index.ts deleted file mode 100644 index f5d882fc2..000000000 --- a/src-ts/utils/settings/account/edit-name/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { default as EditName } from './EditName' -export { editNameFormDef, editNameFormTitle } from './edit-name-form.config' diff --git a/src-ts/utils/settings/settings.routes.tsx b/src-ts/utils/settings/settings.routes.tsx index 728a06002..993fa1976 100644 --- a/src-ts/utils/settings/settings.routes.tsx +++ b/src-ts/utils/settings/settings.routes.tsx @@ -4,6 +4,10 @@ import { lazyLoad, LazyLoadedComponent, PlatformRoute } from '../../lib' const Account: LazyLoadedComponent = lazyLoad(() => import('./account'), 'Account') const Settings: LazyLoadedComponent = lazyLoad(() => import('./Settings')) +/** + * DEPRECATED + * TODO: Remove after some time, when clear no one links to here... + */ export const settingsRoutes: ReadonlyArray = [ { authRequired: true, diff --git a/start-ssl.sh b/start-ssl.sh old mode 100644 new mode 100755