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

Merged
merged 43 commits into from
Oct 23, 2023
Merged

Sprint 3 #9

merged 43 commits into from
Oct 23, 2023

Conversation

LevanovaElena
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.

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

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

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

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

  • При добавлении пользователя в чат через нажатие на Enter страница перезагружается. Это нужно предотвращать во время сабмита формы. И при попытке добавить новый чат это происходит
  • Нужно отображать историю сообщений при входе в чат
  • По заданию эндпоинты в проекте должны быть определённые. Скрин из задания https://disk.yandex.ru/i/5EcJYattAj8NJA
  • JSON.parse 16 раз дублируется под каждый запрос. Нужно было 1 раз это сделать внутри HTTPTransport
  • JSON.parse может выкинуть исключение, если данные невалидные. Стоит добавить блок try/catch для отлова возможной ошибки

Можно лучше

  • Обработчик сабмита нужно навешивать только на тег form с событием submit, а не на кнопку сабмита с событием click, так как сабмит формы происходит ещё при нажатии Enter, и он не будет работать, если навесить обработчик клика на кнопку только. Это нужно исправить везде, где есть инпуты и форма
  • Для любых запросов на сервер в самом конце цепочки запроса нужно осуществлять проверку на возможные ошибки с помощью catch.

@@ -0,0 +1,27 @@
import HTTPTransport from "../core/http.ts";
import {IAuthData, IUser} from "../models/IUser.ts";

Choose a reason for hiding this comment

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

  • При добавлении пользователя в чат через нажатие на Enter страница перезагружается. Это нужно предотвращать во время сабмита формы. И при попытке добавить новый чат это происходит

server.js Outdated
@@ -1,5 +1,6 @@
// server.js
const express = require('express');
const path = require('path');
const PORT = 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 по умолчанию.

@@ -0,0 +1,27 @@
import HTTPTransport from "../core/http.ts";
import {IAuthData, IUser} from "../models/IUser.ts";

Choose a reason for hiding this comment

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

  • Нужно отображать историю сообщений при входе в чат

@@ -0,0 +1,27 @@
import HTTPTransport from "../core/http.ts";
import {IAuthData, IUser} from "../models/IUser.ts";

Choose a reason for hiding this comment

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

password,
phone
} as IUser;
await signUp(data);

Choose a reason for hiding this comment

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

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

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

const result = await authApi.signUp(data);
const error=responseHasError(result);
if(!error) {
setStateUser(JSON.parse(result.responseText));

Choose a reason for hiding this comment

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

JSON.parse 16 раз дублируется под каждый запрос. Нужно было 1 раз это сделать внутри HTTPTransport

method: METHODS.GET
}, options.timeout);
}, options.timeout)as Promise<XMLHttpRequest> ;
};

put: HTTPMethod = (url, options = {}) => {

Choose a reason for hiding this comment

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

Хорошая типизация методов с HTTPMethod

@@ -34,8 +34,6 @@ export class Block {

Choose a reason for hiding this comment

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

export class Block {

Можно лучше

Лучше всего передавать тип пропсов в виде дженерика в Block, чтобы можно было конкретный тип пропсов всегда иметь под каждый отдельный экземпляр класса Block. Будет очень универсально

abstract class Block<Props extends Record<string, any> = unknown> {

Обратите внимание на abstract. Это не дает создать экземпляр напрямую из класса Block. Только для наследования подходит

Copy link
Owner Author

Choose a reason for hiding this comment

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

Ок, да я так делала, но что-то не получилось тогда. Давайте я вместе с тестами в 4ом это исправлю.

})
socket.message((event: MessageEvent) => {
//console.log('Message!', event.data);
const message = 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.

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

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

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

@LevanovaElena LevanovaElena merged commit 01c81c9 into main Oct 23, 2023
4 checks passed
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