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 #67

Closed
wants to merge 31 commits into from
Closed

Sprint 3 #67

wants to merge 31 commits into from

Conversation

Pillowbee
Copy link

No description provided.

@Pillowbee
Copy link
Author

Pillowbee commented Apr 16, 2024

Я создавал форк по инструкции, автоматические тесты проходят и 2 предыдущих спринта всё было нормально
И у меня в коде ни одного any

Данные в форме изменения профиля добавлю

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 хорошо оформлен
  • Проект задеплоен и отлично работает
  • Отлично, что нет EOF ошибок в гите
  • Хорошая структура папок и файлов
  • Отлично, что указываете понятный текст ошибки под инпутом
  • Хорошая логика удаления пользователя из чата
  • Хорошая логика сокетов

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

  • Клик по стрелке возле инпута сообщения не отправляет сообщение в чат https://disk.yandex.ru/i/dyaP7mku9z9O8g
  • Скрин https://disk.yandex.ru/i/8LX-AWdsISRUig Я могу добавить пустое сообщение в чат, а валидация не должна мне этого давать
  • По заданию требуется: При обновлении страницы с определённым URL должна отображаться та же самая страница. Если я перезагружаю страницу в профиле, то должен попадать в профиль. На Нетлифай это у Вас не работает
  • https://ya-praktikum.tech/api/v2 везде повторяется в запросах. Нужно вынести в константу BASE_URL и импортировать везде в коде проекта, добавляя в конце изменяющуюся часть (эндпоит). Это обычная практика, чтобы одним движением можно было сменить адрес, но не менять эндпоинты.
  • Для любых запросов на сервер в самом конце цепочки запроса нужно осуществлять проверку на возможные ошибки с помощью catch.
  • JSON.parse может выкинуть исключение, если данные невалидные. Стоит добавить блок try/catch для отлова возможной ошибки

Можно лучше (Это совет. Необязательно к исправлению)

  • Если типизация повторяется в каждом методе (функции), то нужно типизировать сам метод (функцию), а не дублировать типизацию аргументов. Код станет чище
  • Нужна возможность менять картинку чата
  • Должна быть возможность удалить сам чат
  • При редактировании профиля нужно вставлять в инпуты все актуальные данные пользователя, чтобы он мог изменить одну букву без необходимости опять впечатывать все его данные. А то это только расстроит пользователя, и он не будет использовать этот сервис больше.

})


app.listen(3000, () => {

Choose a reason for hiding this comment

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

Можно лучше

Лучше дать возможность поменять порт из консоли, если понадобится: const PORT = process.env.PORT || 3000; . Если не задан порт, тогда будет 3000 по умолчанию.

}

export class AuthService {
baseURL: string = 'https://ya-praktikum.tech/api/v2/auth'

Choose a reason for hiding this comment

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

https://ya-praktikum.tech/api/v2 везде повторяется в запросах. Нужно вынести в константу BASE_URL и импортировать везде в коде проекта, добавляя в конце изменяющуюся часть (эндпоит). Это обычная практика, чтобы одним движением можно было сменить адрес, но не менять эндпоинты.

А еще лучше поместить этот базовый урл 1 раз внутрь класса HTTPTransport, а в конструктор экземпляров передавать только эндпоинт

new HTTPTransport('/auth/');

}

export class ChatService {
baseURL: string = 'https://ya-praktikum.tech/api/v2/chats'

Choose a reason for hiding this comment

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

https://ya-praktikum.tech/api/v2 везде повторяется в запросах. Нужно вынести в константу BASE_URL и импортировать везде в коде проекта, добавляя в конце изменяющуюся часть (эндпоит). Это обычная практика, чтобы одним движением можно было сменить адрес, но не менять эндпоинты.

А еще лучше поместить этот базовый урл 1 раз внутрь класса HTTPTransport, а в конструктор экземпляров передавать только эндпоинт

new HTTPTransport('/auth/');

import HTTPTransport from '@/core/HTTPTransport.ts'

export class UserService {
baseURL: string = 'https://ya-praktikum.tech/api/v2/user'

Choose a reason for hiding this comment

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

https://ya-praktikum.tech/api/v2 везде повторяется в запросах. Нужно вынести в константу BASE_URL и импортировать везде в коде проекта, добавляя в конце изменяющуюся часть (эндпоит). Это обычная практика, чтобы одним движением можно было сменить адрес, но не менять эндпоинты.

А еще лучше поместить этот базовый урл 1 раз внутрь класса HTTPTransport, а в конструктор экземпляров передавать только эндпоинт

new HTTPTransport('/auth/');

@@ -0,0 +1,4 @@
export default (resourceURL: string) => {
const url = resourceURL.replaceAll('/', '%2F')
return `https://ya-praktikum.tech/api/v2/resources/${url}`

Choose a reason for hiding this comment

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

https://ya-praktikum.tech/api/v2 везде повторяется в запросах. Нужно вынести в константу BASE_URL и импортировать везде в коде проекта, добавляя в конце изменяющуюся часть (эндпоит). Это обычная практика, чтобы одним движением можно было сменить адрес, но не менять эндпоинты.

Для картинок такой же урл базовый

if (resp.status === 200) {
router.go(routes.login)
}
})

Choose a reason for hiding this comment

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

Для любых запросов на сервер в самом конце цепочки запроса нужно осуществлять проверку на возможные ошибки с помощью catch.

Нужно исправить это везде по коду в конце запросов.

}, 10000)

socket.addEventListener('message', (event) => {
const data = 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 для отлова возможной ошибки

const data = JSON.parse(event.data)

if (Array.isArray(data)) {
store.set('messages', 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(event.data) 4 раза используете в коде тут. Нужно было 1 раз распасить и в переменную записать

И у Вас уже есть эта переменная в виде data на 36й строчке

}
if (data.type === 'message') {
const messages = store.getState().messages
const message: MessageItemProps = 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(event.data) 4 раза используете в коде тут. Нужно было 1 раз распасить и в переменную записать

И у Вас уже есть эта переменная в виде data на 36й строчке

}
if (data.type === 'user connected') {
const messages = store.getState().messages
const message: MessageItemProps = 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(event.data) 4 раза используете в коде тут. Нужно было 1 раз распасить и в переменную записать

И у Вас уже есть эта переменная в виде data на 36й строчке #

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.

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

Вы отлично потрудились.

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

@Pillowbee Pillowbee closed this by deleting the head repository Apr 24, 2024
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.

2 participants