diff --git a/.env.development b/.env.development index 12945fe3..f6a828ca 100644 --- a/.env.development +++ b/.env.development @@ -3,4 +3,8 @@ VITE_LOGIN_URI=/login VITE_LOGOUT_URI=/logout VITE_AVATAR_UPLOAD_URI=/api/v1/upload/avatar VITE_AVATAR_DELETE_URI=/api/v1/avatar +# уберите это, это оч вряд ли поменяется, а если поменяется - то нужно переделать больше чем переменные +# лишние переменные, захардкодить + + VITE_APP_ENDPOINT="http://app-stage.qa.guru:8080" diff --git a/src/config.ts b/src/config.ts index 4b698e6d..5c8b8351 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,3 +1,4 @@ +// про избыточные переменные окружения - слишком много кода это рождает export const GRAPHQL_URI = import.meta.env.VITE_GRAPHQL_URI; export const LOGIN_URI = import.meta.env.VITE_LOGIN_URI; export const LOGOUT_URI = import.meta.env.VITE_LOGOUT_URI; diff --git a/src/features/lecture-detail/containers/answer-comment/answer-comment-container.tsx b/src/features/lecture-detail/containers/answer-comment/answer-comment-container.tsx index 66da08e0..6c186752 100644 --- a/src/features/lecture-detail/containers/answer-comment/answer-comment-container.tsx +++ b/src/features/lecture-detail/containers/answer-comment/answer-comment-container.tsx @@ -6,6 +6,7 @@ import { import { FC } from "react"; import { IAnswerCommentContainer } from "./answer-comment-container.types"; +// уберите релатив импорты начинающиеся с ../ - это плоххая практика import AnswerComment from "../../views/answer-comment"; type AnswerCommentItem = { @@ -25,6 +26,17 @@ const AnswerCommentContainer: FC = (props) => { fragment: SubCommentHomeWorkDtoFragmentDoc, }); + // можно, но пожалуйста, переделайте на state + // так бизнеслогику в слой кэширования запихали, еще + // и сравнение по рефам внутри этого. сделайте плз класс типа + // class CommentsService { + // comments: any[], + // loading: boolean + // + // async fetch() { + // ... + // } + // } cache.modify({ fields: { commentsHomeWorkByHomeWork(existingComments = { items: [] }) { diff --git a/src/features/training-lectures/constants/index.ts b/src/features/training-lectures/constants/index.ts index 2009c147..af7bc2e6 100644 --- a/src/features/training-lectures/constants/index.ts +++ b/src/features/training-lectures/constants/index.ts @@ -1 +1,3 @@ +// вам норм такие конструкции писать?) убираем папку и файл index.ts - +// ничего не меняется. Тогда ради чего модуль? export { INDEX_OFFSET, ROUTES } from "./constants"; diff --git a/src/features/training-lectures/views/training-lectures/training-lectures.tsx b/src/features/training-lectures/views/training-lectures/training-lectures.tsx index b3f26c79..696653f7 100644 --- a/src/features/training-lectures/views/training-lectures/training-lectures.tsx +++ b/src/features/training-lectures/views/training-lectures/training-lectures.tsx @@ -18,6 +18,7 @@ import { INDEX_OFFSET } from "../../constants"; const TrainingLectures: FC = (props) => { const { dataTrainingLectures, trainingId, dataTraining } = props; const { trainingLectures } = dataTrainingLectures; + // передавайте во вьюххи дату уже выковыряную из объекта квери const name = dataTraining?.training?.name; return ( diff --git a/src/features/training-purchases/containers/trainig-calendar-container/trainig-calendar-container.tsx b/src/features/training-purchases/containers/trainig-calendar-container/trainig-calendar-container.tsx index 8ea4aac0..4244298f 100644 --- a/src/features/training-purchases/containers/trainig-calendar-container/trainig-calendar-container.tsx +++ b/src/features/training-purchases/containers/trainig-calendar-container/trainig-calendar-container.tsx @@ -15,6 +15,7 @@ const TrainingCalendarContainer: React.FC = () => { useEffect(() => { setData({ + // эээ, что это за захардкоженые даты? classes: [ "2023-12-07", "2023-12-09", diff --git a/src/features/training-purchases/views/training-purchases/training-purchases.tsx b/src/features/training-purchases/views/training-purchases/training-purchases.tsx index 18a720b6..76f75ad0 100644 --- a/src/features/training-purchases/views/training-purchases/training-purchases.tsx +++ b/src/features/training-purchases/views/training-purchases/training-purchases.tsx @@ -34,6 +34,8 @@ const TrainingPurchases: FC = ({ data }) => { } }; + // очень очень странное место. не useEffect, так еще и динамический массив Ref + // ... что? обсудить отдельно. очень сложная конструкция trainingPurchases?.forEach((item) => { const id = item?.trainingTariff.training?.id; if (id !== undefined) { @@ -56,6 +58,10 @@ const TrainingPurchases: FC = ({ data }) => { Мои курсы + {/* + дело вкуса, но я бы этот мап написал так + trainingPurchases?.map(({trainingTariff: {training: { id, name }}}) => <>other + */} {trainingPurchases?.map((item) => { const { id, name } = item?.trainingTariff.training || {}; diff --git a/src/features/user-detail/views/user-detail/user-detail.tsx b/src/features/user-detail/views/user-detail/user-detail.tsx index 23e8456d..1e213afd 100644 --- a/src/features/user-detail/views/user-detail/user-detail.tsx +++ b/src/features/user-detail/views/user-detail/user-detail.tsx @@ -2,12 +2,12 @@ import { FC } from "react"; import { Box, Container, Stack, Typography } from "@mui/material"; import useRatingColor from "shared/hooks/use-rating-color"; import { formatDate } from "shared/helpers"; -import { ReactComponent as WorkIcon } from "assets/icons/work-field.svg"; -import { ReactComponent as StackOverflowIcon } from "assets/icons/stack-overflow.svg"; -import { ReactComponent as GitIcon } from "assets/icons/git-hub.svg"; -import { ReactComponent as LinkedIn } from "assets/icons/linked-in.svg"; -import { ReactComponent as Telegram } from "assets/icons/telegram.svg"; -import { ReactComponent as WebSiteIcon } from "assets/icons/website.svg"; +import WorkIcon from "assets/icons/work-field.svg"; +import StackOverflowIcon from "assets/icons/stack-overflow.svg"; +import GitIcon from "assets/icons/git-hub.svg"; +import LinkedIn from "assets/icons/linked-in.svg"; +import Telegram from "assets/icons/telegram.svg"; +import WebSiteIcon from "assets/icons/website.svg"; import AvatarCustom from "shared/components/avatar-custom"; import { diff --git a/src/i18n/config.ts b/src/i18n/config.ts index c81daf2f..3b60a45c 100644 --- a/src/i18n/config.ts +++ b/src/i18n/config.ts @@ -12,6 +12,8 @@ const DETECTION_OPTIONS = { checkWhitelist: true, }; +// Q: зачем вам интернационализация? +// A: выпилить и писать пока все по русски, запуститесь сначала полностью как продукт use(initReactI18next) .use(LanguageDetector) .init({ diff --git a/src/pages/auth/index.ts b/src/pages/auth/index.ts index 3d722299..c25b89ea 100644 --- a/src/pages/auth/index.ts +++ b/src/pages/auth/index.ts @@ -3,3 +3,9 @@ export { default as SignUpPage } from "./sign-up"; export { default as ResetPage } from "./reset"; export { default as SetPasswordPage } from "./set-password"; export { default as ConfirmTokenPage } from "./confirm-token"; +// причина по которой export default плохо + + +// а еще, вся эта папка pages - бойлерплейтный однотипный код. не нужно +// нужно то что у вас называется container (в основном это все таки page) +// класть прям сюда и импортировать хуки и view из features diff --git a/src/pages/auth/set-password.tsx b/src/pages/auth/set-password.tsx index dc7c8f21..d7f43810 100644 --- a/src/pages/auth/set-password.tsx +++ b/src/pages/auth/set-password.tsx @@ -5,4 +5,6 @@ const SetPasswordPage: FC = () => { return ; }; +// export default запрещаем на уровне линтера, оставляем только экспорты вида +// export {}, export const и etc. export default SetPasswordPage; diff --git a/src/routes/index.tsx b/src/routes/index.tsx index 4161a81c..f0c95fcd 100644 --- a/src/routes/index.tsx +++ b/src/routes/index.tsx @@ -27,7 +27,7 @@ interface IRoutnig { roles?: Maybe[]>; } -const ProtectedRoute: FC = ({ children }) => { +const ProtectedRoute: FC = ({ children }) => { const { isAuth } = useAuth(); if (isAuth) {