Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(23UG-19): добавляет раздел со сменой пароля #36

Merged
merged 6 commits into from
Apr 4, 2023

Conversation

MakhovRoman
Copy link
Contributor

Какую задачу решаем

  • добавлен раздел со сменой пароля
  • добавлена валидация полей

@vercel
Copy link

vercel bot commented Mar 21, 2023

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
uno-game-client ✅ Ready (Inspect) Visit Preview 💬 Add feedback Apr 3, 2023 3:55am

@MakhovRoman MakhovRoman changed the base branch from main to dev March 21, 2023 14:44
Copy link
Contributor

@cap-Bernardito cap-Bernardito left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Проверки - такая форма, либо другая форма, такая кнопка, либо другая кнопка - это нездорово. По сути выглядит, как будто 2 страницы в одну объединены.
Ну и визуально на сайте похоже на смену страницы. По этим причинам предлагаю вынести эту историю в отдельный роут.

@EAbashin
Copy link
Contributor

Ещё, как вариант, можно вынести в отдельный компонент, сделать в виде модального окна и вызывать его при клике по кнопке. Модальное окно будет просто загораживать контент профиля. В общем, сделать как предложил Алексей, только без роута.
Плюсы такого решения: после смены пароля логично будет возвращаться на страницу профиля и в этом случае не надо будет её отрисовывать заново и отправлять запрос за аватаркой.

@cap-Bernardito
Copy link
Contributor

Плюсы такого решения: после смены пароля логично будет возвращаться на страницу профиля и в этом случае не надо будет её отрисовывать заново и отправлять запрос за аватаркой.

Но только он не должен возвращаться сразу. Нужно будет дождаться ответа, показать оповещение Ок или не ОК все прошло (т.к. должно быть понятно сменился пароль или нет). Ну и по крестику наверное закрываться... или по таймауту после отображения оповещения.

@MakhovRoman
Copy link
Contributor Author

Хорошо, я тогда вынесу все в отдельный компонент и модалкой реализую на странице

Comment on lines 7 to 13
import { UpdateUserPassword } from "../../services/api/types";
import {
ERROR_MESSAGE,
InputNames,
REQUIRED_MESSAGE,
validationTemplate,
} from "../../utils/validation/validation";
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

import { UpdateUserPassword } from "services/api/types";
import {
  ERROR_MESSAGE,
  InputNames,
  REQUIRED_MESSAGE,
  validationTemplate,
} from "utils/validation/validation";

Comment on lines 1 to 4
.changePassword {
position: absolute;
top: -6rem;
left: 0;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А зачем верстать свою модалку, когда у нас библиотека компонентов подключена и там полно их?

Ну и если уж на то пошло, то 100% модальное окно должно быть отдельным компонентом, получающим содержимое в качестве чилдренов... А не монолитом с формой. Завтра еще одна форма в модалке понадобится - как ты будешь ее реализовывать?

Comment on lines 24 to 26

export const ChangePassword: React.FC<Props> = (props: Props) => {
const updatedUserPassword = {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В качестве названия компонента обычно выбирают существительное.

Comment on lines 32 to 41
const {
control,
handleSubmit,
formState: { errors, isValid },
} = useForm({
defaultValues: {
...updatedUserPassword,
},
mode: "onChange",
});
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А для чего тут переменная updatedUserPassword, если она используется в одном месте сразу после своего объявления?
Почему не написать так?

  const {
    control,
    handleSubmit,
    formState: { errors, isValid },
  } = useForm({
    defaultValues: {
      oldPassword: "",
      newPassword: "",
      confirmPassword: "",
    },
    mode: "onChange",
  });

Comment on lines 165 to 171

{isPasswordSend && (
<Box mt={2} textAlign={"center"}>
Пароль успешно изменен
</Box>
)}
</form>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

У нас во всех формах уведомления о статусе запроса выводятся между полями и кнопкой. Давай так же сделаем, чтобы единообразно было.

@@ -11,6 +12,7 @@ import { authSelect } from "services/slices/auth-slice";
import { userSelect, userSlice, userThunks } from "services/slices/user-slice";
import { InputNames, validationTemplate } from "utils/validation/validation";

import { ChangePassword } from "../../components/changePassword/ChangePassword";
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

import { ChangePassword } from "components/changePassword/ChangePassword";

Comment on lines 40 to 66
const updatedUserPassword = {
oldPassword: "",
newPassword: "",
confirmPassword: "",
};

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Страницу профиля нужно вернуть в исходный вид. На ней только кнопка вызова модалки должна поменяться.

Comment on lines 296 to 307
onClick={onOpenFormChangePassword}
>
"Сменить пароль"
</Typography>
</Link>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В "Сменить пароль" не нужны кавычки

Comment on lines 11 to 19
export type UpdateUserPassword = {
oldPassword: string;
newPassword: string;
};

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

С названием опять же беда. Пример названия можно посмотреть выше, можно посмотреть ниже в этом же файле.

Comment on lines 39 to 42
}}
>
{props.children}
</DialogContent>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Думаю, имеет смысл вынести ModalForm в отдельный компонент и сменить название на Modal, т.к. он не имеет никакого отношения к форме (что ему в чилдрены подашь, то и отрисуется)

Comment on lines 136 to 147

{isPasswordSend && (
<Box
textAlign={"center"}
sx={{
marginTop: 3,
}}
>
Пароль успешно изменен
</Box>
)}

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Если это только для демонстрации, то ок, но вообще так не верно делать. Сам факт отправки пароля не говорит о том, что он успешно изменен. Может прийти сообщение с ошибкой и его надо будет тоже показать в таком случае.
Когда будешь приделывать отправку запроса, учти этот момент. И если ошибка будет, то не должно окно по таймауту закрываться.

Comment on lines 294 to 340

<ModalForm
onClick={onOpenFormChangePassword}
isOpen={isChangePassword}
setIsOpen={setIsChangePassword}
>
<PasswordChangeForm
className={styles.profile__form}
isOpen={isChangePassword}
setIsOpen={setIsChangePassword}
/>
</ModalForm>
</Container>
Copy link
Contributor

@cap-Bernardito cap-Bernardito Mar 31, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ну, о чем выше и писал - это 2 разных компонента должны быть.

@MakhovRoman MakhovRoman requested a review from Olegas April 4, 2023 04:44
@MakhovRoman MakhovRoman merged commit e65213f into dev Apr 4, 2023
@cap-Bernardito cap-Bernardito deleted the dev-app-changePassword branch April 26, 2023 03:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants