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

Sprint 3 #7

Open
wants to merge 49 commits into
base: main
Choose a base branch
from
Open

Sprint 3 #7

wants to merge 49 commits into from

Conversation

zloegucci
Copy link
Owner

No description provided.

Copy link

@gennady-bars gennady-bars left a comment

Choose a reason for hiding this comment

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

Здравствуйте. (Нужно развернуть общий комментарий ↓)

Работа проделана огромная

  • Отлично, что фиксируете версии зависимостей (почти все)
  • Хорошая структура папок и файлов
  • Хороший роутинг
  • Отлично, что базовый урл вынесен в константу
  • Отлично, что ловите возможные ошибки в конце каждого запроса к серверу

но есть некоторые недочеты:

  • нет ссылки на задеплоенное приложение на Нетлифай в Readme
  • По семантике нужно помещать весь главный контент страницы в тег main.
  • я могу добавить пустое сообщение в чат. А валидация не должна мне позволять это. Скрин https://disk.yandex.ru/i/-blLZ4Kx_iKtUw . Нужно проверять, что оно не пустое
  • не подгружается история сообщений в чатах
  • при изменении профиля нужно вставлять данные в инпуты, иначе придется все впечатывать опять, хотя я одну букву хочу изменить в имени https://disk.yandex.ru/i/X4gXqLuz-9yB1w
  • нет валидации в инпутах профиля. Она должна появляться при blur или focus
  • не могу добавить новый чат. Требуется id пользователя, а я его не знаю. Я хочу создать чат, а потом только добавлять пользователей туда (не одного)
  • Не могу удалить чат. Нет такого функционала
  • меню с тремя точками не работает https://disk.yandex.ru/i/loKgYvPQer_g8w
  • В проекте в некоторых файлах есть ошибка EOF. Для git важно наличие пустой строки в конце файла. Подробнее тут: https://stackoverflow.com/questions/5813311/whats-the-significance-of-the-no-newline-at-end-of-file-log Можно в настройки IDE добавить insert_final_newline = true
  • JSON.parse может выкинуть исключение, если данные невалидные. Стоит добавить блок try/catch для отлова возможной ошибки

Можно лучше

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

Исправьте, пожалуйста, недочеты и работа будет принята. Пожалуйста, проверьте работоспособность проекта и наличие возможных ошибок в консоли браузера (кнопка F12) перед отправкой на ревью.

Напоминаю, что работа может быть принята только после исправления всех критических замечаний Нужно исправить.

Удачного рефакторинга кода.

.then(() => {
MyRouter.go(routs.chatsPage);
})
.catch(() => {

Choose a reason for hiding this comment

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

Отлично, что ловите возможные ошибки в конце каждого запроса к серверу

Copy link
Owner Author

Choose a reason for hiding this comment

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

Весь обязательный функционал реализован, мелкие ошибки исправлены, код залит на нетлифай. Для исправления ошибок с чатом необходимо полностью переработать шаблоны. Прошу одобрить проект. Начну работу над новыми шаблонами и буду собирать уже на webpack

package.json Outdated
"assert": "2.0.0",
"browserify-zlib": "0.2.0",
"buffer": "6.0.3",
"console-browserify": "^1.2.0",

Choose a reason for hiding this comment

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

Можно лучше

Лучше задавать фиксированные версии зависимостям. Если нечаянно удалить package-lock.json и попытаться повторно установить зависимости с помощью команды npm install, то npm установит последние версии зависимостей, что может привести к ошибкам.

@@ -0,0 +1,2 @@
a(class="button-back")
p(class="arrow") ←

Choose a reason for hiding this comment

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

В проекте в некоторых файлах есть ошибка EOF. Для git важно наличие пустой строки в конце файла. Подробнее тут: https://stackoverflow.com/questions/5813311/whats-the-significance-of-the-no-newline-at-end-of-file-log Можно в настройки IDE добавить insert_final_newline = true

}

class HTTPTransport {
get(url: string, options: OptionsWithoutMethod = {}) {

Choose a reason for hiding this comment

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

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

// создаем тип метода
type HTTPMethod = (url: string, options?: OptionsWithoutMethod) => Promise<XMLHttpRequest>

export class HTTPTransport {

  // используем тип и удаляем дублирование в аргументах
  get: HTTPMethod = (url, options = {}) => (
    this.request(url, {...options, method: METHODS.GET}, options.timeout)
  )
  // используем тип и удаляем дублирование в аргументах
  put: HTTPMethod = (url, options = {}) => (
    this.request(url, {...options, method: METHODS.PUT}, options.timeout)
  )
  // используем тип и удаляем дублирование в аргументах
  post: HTTPMethod = (url, options = {}) => (
    this.request(url, {...options, method: METHODS.POST}, options.timeout)
  )
  // используем тип и удаляем дублирование в аргументах
  delete: HTTPMethod = (url, options = {}) => (
    this.request(url, {...options, method: METHODS.DELETE}, options.timeout)
  )

}

if (method === Methods.GET) {
url += queryStringify(data);

Choose a reason for hiding this comment

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

Можно лучше

queryStringify лучше сразу в методе get вызывать, чтобы не проверять METHODS.GET при каждом запросе


type HTTPOption = Record<string, any>

const host = 'https://ya-praktikum.tech/api/v2'

Choose a reason for hiding this comment

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

Отлично, что базовый урл вынесен в константу


this.socket.addEventListener("message", async (event) => {
const messages = store.getState().currentDialog || [];
const ans = JSON.parse(event.data);

Choose a reason for hiding this comment

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

JSON.parse может выкинуть исключение, если данные невалидные. Стоит добавить блок try/catch для отлова возможной ошибки

Copy link

@gennady-bars gennady-bars left a comment

Choose a reason for hiding this comment

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

Здравствуйте. (Нужно развернуть общий комментарий ↓)

К сожалению, работу придется отклонить без потери итерации

  • не могу запустить проект локально. Скрин https://disk.yandex.ru/i/WNvE8m8SjIdt9w
  • по чек-листу нужно задеплоить приложение на Нетлифай и показать ссылку в Readme

@netlify
Copy link

netlify bot commented Dec 20, 2022

Deploy Preview for bucolic-paprenjak-cebd36 ready!

Name Link
🔨 Latest commit 382e90a
🔍 Latest deploy log https://app.netlify.com/sites/bucolic-paprenjak-cebd36/deploys/63a2226c6c7e870008b695da
😎 Deploy Preview https://deploy-preview-7--bucolic-paprenjak-cebd36.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site settings.

Copy link

@gennady-bars gennady-bars left a comment

Choose a reason for hiding this comment

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

Здравствуйте. (Нужно развернуть общий комментарий ↓)

К сожалению, работу придется отклонить без потери итерации, так как не исправлены все замечания:

  • Скрин https://disk.yandex.ru/i/nziDpP9Og71DqA я могу добавить пустое сообщение в чат. А валидация не должна мне позволять это.
  • не подгружается история сообщений в чатах
  • не могу добавить новый чат. Требуется id пользователя, а я его не знаю. Я хочу создать чат, а потом только добавлять пользователей туда (не одного)
  • Не могу удалить чат. Нет такого функционала
  • меню с тремя точками не работает https://disk.yandex.ru/i/loKgYvPQer_g8w
  • при изменении профиля нужно вставлять данные в инпуты, иначе придется все впечатывать опять, хотя я одну букву хочу изменить в имени https://disk.yandex.ru/i/X4gXqLuz-9yB1w

Copy link

@gennady-bars gennady-bars left a comment

Choose a reason for hiding this comment

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

Поздравляю! Ваша работа принята.

Вы отлично потрудились. В 4м спринте нужно обязательно подправить то, что не исправлено в 3м

Удачного дальнейшего обучения.

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.

None yet

2 participants