From 5849e6825834ca226ee9472d731a875d40acf084 Mon Sep 17 00:00:00 2001 From: Fedor Katurov Date: Sat, 8 Jan 2022 16:40:48 +0700 Subject: [PATCH] removed messages reducer --- .../messages/api.ts => api/messages/index.ts} | 2 +- src/{redux => api}/messages/types.ts | 0 .../boris/BorisContactItem/index.tsx | 6 +- src/components/boris/BorisStatsGit/index.tsx | 10 +- .../boris/BorisStatsGitCard/index.tsx | 10 +- .../comment/CommentEmbedBlock/index.tsx | 12 +- .../CommentFormFormatButtons/index.tsx | 10 +- .../containers/CoverBackdrop/index.tsx | 12 +- src/components/containers/Sticky/index.tsx | 4 +- src/components/editors/AudioGrid/index.tsx | 16 +- .../editors/EditorUploadCoverButton/index.tsx | 20 +- src/components/editors/ImageGrid/index.tsx | 16 +- src/components/main/GodRays/index.tsx | 2 +- src/components/main/SidePane/index.tsx | 8 +- .../node/NodeDeletedBadge/index.tsx | 4 +- src/components/node/NodeTagsBlock/index.tsx | 6 +- src/components/node/NodeVideoBlock/index.tsx | 8 +- src/components/profile/Message/index.tsx | 68 +----- .../profile/Message/styles.module.scss | 4 - src/components/profile/MessageForm/index.tsx | 106 --------- .../profile/MessageForm/styles.module.scss | 61 ----- src/constants/modal/index.ts | 4 +- src/containers/boris/BorisComments/index.tsx | 20 +- .../dialogs/BetterScrollDialog/index.tsx | 10 +- src/containers/dialogs/EditorDialog/index.tsx | 38 ++-- .../dialogs/LoadingDialog/index.tsx | 2 +- .../dialogs/LoginDialogButtons/index.tsx | 12 +- .../LoginSocialRegisterButtons/index.tsx | 6 +- .../dialogs/ProfileDialog/index.tsx | 9 +- .../dialogs/RestoreRequestDialog/index.tsx | 4 +- src/containers/flow/FlowStamp/index.tsx | 26 +-- src/containers/lab/LabStats/index.tsx | 18 +- src/containers/main/BottomContainer/index.tsx | 6 +- src/containers/main/Container/index.tsx | 6 +- src/containers/main/MainRouter/index.tsx | 22 +- src/containers/main/SidebarRouter/index.tsx | 16 +- src/containers/node/NodeComments/index.tsx | 18 +- src/containers/player/PlayerView/index.tsx | 6 +- src/containers/profile/ProfileInfo/index.tsx | 16 +- .../profile/ProfileMessages/index.tsx | 136 +++-------- .../ProfileMessages/styles.module.scss | 18 +- .../profile/ProfilePageLeft/index.tsx | 16 +- .../profile/ProfilePageStats/index.tsx | 8 +- src/containers/profile/ProfileTabs/index.tsx | 8 +- .../sidebars/SidebarWrapper/index.tsx | 10 +- src/containers/tags/Tags/index.tsx | 14 +- src/hooks/dom/useFormatWrapper.ts | 2 +- src/hooks/messages/useMessages.ts | 17 ++ src/hooks/modal/useModal.ts | 2 +- src/layouts/BorisLayout/index.tsx | 30 +-- src/layouts/ProfileLayout/index.tsx | 9 +- src/layouts/ProfileLayout/styles.module.scss | 8 +- src/redux/auth/sagas.ts | 2 - src/redux/messages/actions.ts | 34 --- src/redux/messages/constants.ts | 10 - src/redux/messages/handlers.ts | 15 -- src/redux/messages/index.ts | 19 -- src/redux/messages/sagas.ts | 213 ------------------ src/redux/messages/selectors.ts | 3 - src/redux/store.ts | 12 - src/styles/_colors.scss | 2 +- 61 files changed, 314 insertions(+), 898 deletions(-) rename src/{redux/messages/api.ts => api/messages/index.ts} (96%) rename src/{redux => api}/messages/types.ts (100%) delete mode 100644 src/components/profile/MessageForm/index.tsx delete mode 100644 src/components/profile/MessageForm/styles.module.scss create mode 100644 src/hooks/messages/useMessages.ts delete mode 100644 src/redux/messages/actions.ts delete mode 100644 src/redux/messages/constants.ts delete mode 100644 src/redux/messages/handlers.ts delete mode 100644 src/redux/messages/index.ts delete mode 100644 src/redux/messages/sagas.ts delete mode 100644 src/redux/messages/selectors.ts diff --git a/src/redux/messages/api.ts b/src/api/messages/index.ts similarity index 96% rename from src/redux/messages/api.ts rename to src/api/messages/index.ts index 2e224ab3..16d024c7 100644 --- a/src/redux/messages/api.ts +++ b/src/api/messages/index.ts @@ -7,7 +7,7 @@ import { ApiGetUserMessagesResponse, ApiSendMessageRequest, ApiSendMessageResult, -} from '~/redux/messages/types'; +} from '~/api/messages/types'; export const apiGetUserMessages = ({ username, after, before }: ApiGetUserMessagesRequest) => api diff --git a/src/redux/messages/types.ts b/src/api/messages/types.ts similarity index 100% rename from src/redux/messages/types.ts rename to src/api/messages/types.ts diff --git a/src/components/boris/BorisContactItem/index.tsx b/src/components/boris/BorisContactItem/index.tsx index 65e001d2..83326c40 100644 --- a/src/components/boris/BorisContactItem/index.tsx +++ b/src/components/boris/BorisContactItem/index.tsx @@ -1,6 +1,6 @@ -import React, { FC } from 'react'; -import styles from './styles.module.scss'; -import { Icon } from '~/components/input/Icon'; +import React, { FC } from "react"; +import styles from "./styles.module.scss"; +import { Icon } from "~/components/input/Icon"; interface Props { icon: string; diff --git a/src/components/boris/BorisStatsGit/index.tsx b/src/components/boris/BorisStatsGit/index.tsx index 1f5aa0fd..a6900d87 100644 --- a/src/components/boris/BorisStatsGit/index.tsx +++ b/src/components/boris/BorisStatsGit/index.tsx @@ -1,8 +1,8 @@ -import React, { FC, useMemo } from 'react'; -import { GithubIssue } from '~/types/boris'; -import styles from './styles.module.scss'; -import { Placeholder } from '~/components/placeholders/Placeholder'; -import { BorisStatsGitCard } from '../BorisStatsGitCard'; +import React, { FC, useMemo } from "react"; +import { GithubIssue } from "~/types/boris"; +import styles from "./styles.module.scss"; +import { Placeholder } from "~/components/placeholders/Placeholder"; +import { BorisStatsGitCard } from "../BorisStatsGitCard"; interface IProps { issues: GithubIssue[]; diff --git a/src/components/boris/BorisStatsGitCard/index.tsx b/src/components/boris/BorisStatsGitCard/index.tsx index fde28291..6244c2e2 100644 --- a/src/components/boris/BorisStatsGitCard/index.tsx +++ b/src/components/boris/BorisStatsGitCard/index.tsx @@ -1,8 +1,8 @@ -import React, { FC, useMemo } from 'react'; -import styles from './styles.module.scss'; -import { getPrettyDate } from '~/utils/dom'; -import { GithubIssue } from '~/types/boris'; -import classNames from 'classnames'; +import React, { FC, useMemo } from "react"; +import styles from "./styles.module.scss"; +import { getPrettyDate } from "~/utils/dom"; +import { GithubIssue } from "~/types/boris"; +import classNames from "classnames"; interface IProps { data: GithubIssue; diff --git a/src/components/comment/CommentEmbedBlock/index.tsx b/src/components/comment/CommentEmbedBlock/index.tsx index 5ff71877..23d17c62 100644 --- a/src/components/comment/CommentEmbedBlock/index.tsx +++ b/src/components/comment/CommentEmbedBlock/index.tsx @@ -1,9 +1,9 @@ -import React, { FC, memo, useMemo } from 'react'; -import { ICommentBlockProps } from '~/constants/comment'; -import styles from './styles.module.scss'; -import { getYoutubeThumb } from '~/utils/dom'; -import { Icon } from '~/components/input/Icon'; -import { useYoutubeMetadata } from '~/hooks/metadata/useYoutubeMetadata'; +import React, { FC, memo, useMemo } from "react"; +import { ICommentBlockProps } from "~/constants/comment"; +import styles from "./styles.module.scss"; +import { getYoutubeThumb } from "~/utils/dom"; +import { Icon } from "~/components/input/Icon"; +import { useYoutubeMetadata } from "~/hooks/metadata/useYoutubeMetadata"; type Props = ICommentBlockProps & {}; diff --git a/src/components/comment/CommentFormFormatButtons/index.tsx b/src/components/comment/CommentFormFormatButtons/index.tsx index 8507e21f..b26e10e2 100644 --- a/src/components/comment/CommentFormFormatButtons/index.tsx +++ b/src/components/comment/CommentFormFormatButtons/index.tsx @@ -1,8 +1,8 @@ -import React, { FC, useCallback, useEffect } from 'react'; -import { ButtonGroup } from '~/components/input/ButtonGroup'; -import { Button } from '~/components/input/Button'; -import { useFormatWrapper, wrapTextInsideInput } from '~/hooks/dom/useFormatWrapper'; -import styles from './styles.module.scss'; +import React, { FC, useCallback, useEffect } from "react"; +import { ButtonGroup } from "~/components/input/ButtonGroup"; +import { Button } from "~/components/input/Button"; +import { useFormatWrapper, wrapTextInsideInput } from "~/hooks/dom/useFormatWrapper"; +import styles from "./styles.module.scss"; interface IProps { element: HTMLTextAreaElement; diff --git a/src/components/containers/CoverBackdrop/index.tsx b/src/components/containers/CoverBackdrop/index.tsx index cd3b141d..108c77b7 100644 --- a/src/components/containers/CoverBackdrop/index.tsx +++ b/src/components/containers/CoverBackdrop/index.tsx @@ -1,9 +1,9 @@ -import React, { FC, useCallback, useEffect, useRef, useState } from 'react'; -import { IUser } from '~/redux/auth/types'; -import styles from './styles.module.scss'; -import { getURL } from '~/utils/dom'; -import { PRESETS } from '~/constants/urls'; -import classNames from 'classnames'; +import React, { FC, useCallback, useEffect, useRef, useState } from "react"; +import { IUser } from "~/redux/auth/types"; +import styles from "./styles.module.scss"; +import { getURL } from "~/utils/dom"; +import { PRESETS } from "~/constants/urls"; +import classNames from "classnames"; interface IProps { cover: IUser['cover']; diff --git a/src/components/containers/Sticky/index.tsx b/src/components/containers/Sticky/index.tsx index a1a44bb0..fb68b4d2 100644 --- a/src/components/containers/Sticky/index.tsx +++ b/src/components/containers/Sticky/index.tsx @@ -1,5 +1,5 @@ -import React, { DetailsHTMLAttributes, FC } from 'react'; -import StickyBox from 'react-sticky-box'; +import React, { DetailsHTMLAttributes, FC } from "react"; +import StickyBox from "react-sticky-box"; interface IProps extends DetailsHTMLAttributes { offsetTop?: number; diff --git a/src/components/editors/AudioGrid/index.tsx b/src/components/editors/AudioGrid/index.tsx index 6403e89a..61e0a631 100644 --- a/src/components/editors/AudioGrid/index.tsx +++ b/src/components/editors/AudioGrid/index.tsx @@ -1,12 +1,12 @@ -import React, { FC, useCallback } from 'react'; -import { SortEnd } from 'react-sortable-hoc'; -import { IFile } from '~/redux/types'; -import { moveArrItem } from '~/utils/fn'; -import { SortableAudioGrid } from '~/components/editors/SortableAudioGrid'; +import React, { FC, useCallback } from "react"; +import { SortEnd } from "react-sortable-hoc"; +import { IFile } from "~/redux/types"; +import { moveArrItem } from "~/utils/fn"; +import { SortableAudioGrid } from "~/components/editors/SortableAudioGrid"; -import styles from './styles.module.scss'; -import { UploadStatus } from '~/store/uploader/UploaderStore'; -import { useWindowSize } from '~/hooks/dom/useWindowSize'; +import styles from "./styles.module.scss"; +import { UploadStatus } from "~/store/uploader/UploaderStore"; +import { useWindowSize } from "~/hooks/dom/useWindowSize"; interface IProps { files: IFile[]; diff --git a/src/components/editors/EditorUploadCoverButton/index.tsx b/src/components/editors/EditorUploadCoverButton/index.tsx index 8f9f509d..4868e4ac 100644 --- a/src/components/editors/EditorUploadCoverButton/index.tsx +++ b/src/components/editors/EditorUploadCoverButton/index.tsx @@ -1,13 +1,13 @@ -import React, { ChangeEvent, FC, useCallback, useEffect } from 'react'; -import styles from './styles.module.scss'; -import { UploadSubject, UploadTarget, UploadType } from '~/constants/uploads'; -import { getURL } from '~/utils/dom'; -import { Icon } from '~/components/input/Icon'; -import { PRESETS } from '~/constants/urls'; -import { IEditorComponentProps } from '~/types/node'; -import { useNodeFormContext } from '~/hooks/node/useNodeFormFormik'; -import { getFileType } from '~/utils/uploader'; -import { useUploader } from '~/hooks/data/useUploader'; +import React, { ChangeEvent, FC, useCallback, useEffect } from "react"; +import styles from "./styles.module.scss"; +import { UploadSubject, UploadTarget, UploadType } from "~/constants/uploads"; +import { getURL } from "~/utils/dom"; +import { Icon } from "~/components/input/Icon"; +import { PRESETS } from "~/constants/urls"; +import { IEditorComponentProps } from "~/types/node"; +import { useNodeFormContext } from "~/hooks/node/useNodeFormFormik"; +import { getFileType } from "~/utils/uploader"; +import { useUploader } from "~/hooks/data/useUploader"; type IProps = IEditorComponentProps & {}; diff --git a/src/components/editors/ImageGrid/index.tsx b/src/components/editors/ImageGrid/index.tsx index b1237574..f9696d4f 100644 --- a/src/components/editors/ImageGrid/index.tsx +++ b/src/components/editors/ImageGrid/index.tsx @@ -1,11 +1,11 @@ -import React, { FC, useCallback } from 'react'; -import { SortEnd } from 'react-sortable-hoc'; -import styles from './styles.module.scss'; -import { IFile } from '~/redux/types'; -import { moveArrItem } from '~/utils/fn'; -import { SortableImageGrid } from '~/components/editors/SortableImageGrid'; -import { UploadStatus } from '~/store/uploader/UploaderStore'; -import { useWindowSize } from '~/hooks/dom/useWindowSize'; +import React, { FC, useCallback } from "react"; +import { SortEnd } from "react-sortable-hoc"; +import styles from "./styles.module.scss"; +import { IFile } from "~/redux/types"; +import { moveArrItem } from "~/utils/fn"; +import { SortableImageGrid } from "~/components/editors/SortableImageGrid"; +import { UploadStatus } from "~/store/uploader/UploaderStore"; +import { useWindowSize } from "~/hooks/dom/useWindowSize"; interface IProps { files: IFile[]; diff --git a/src/components/main/GodRays/index.tsx b/src/components/main/GodRays/index.tsx index 299fc562..86a52eb6 100644 --- a/src/components/main/GodRays/index.tsx +++ b/src/components/main/GodRays/index.tsx @@ -1,4 +1,4 @@ -import * as React from 'react'; +import * as React from "react"; interface IGodRaysProps { raised?: boolean; diff --git a/src/components/main/SidePane/index.tsx b/src/components/main/SidePane/index.tsx index e952bc87..2db2bfb7 100644 --- a/src/components/main/SidePane/index.tsx +++ b/src/components/main/SidePane/index.tsx @@ -1,7 +1,7 @@ -import React, { FC, useCallback, useEffect, useState } from 'react'; -import classNames from 'classnames'; -import styles from './styles.module.scss'; -import { Group } from '~/components/containers/Group'; +import React, { FC, useCallback, useEffect, useState } from "react"; +import classNames from "classnames"; +import styles from "./styles.module.scss"; +import { Group } from "~/components/containers/Group"; interface IProps {} diff --git a/src/components/node/NodeDeletedBadge/index.tsx b/src/components/node/NodeDeletedBadge/index.tsx index 2c87f773..401d58e5 100644 --- a/src/components/node/NodeDeletedBadge/index.tsx +++ b/src/components/node/NodeDeletedBadge/index.tsx @@ -1,5 +1,5 @@ -import React, { FC } from 'react'; -import styles from './styles.module.scss'; +import React, { FC } from "react"; +import styles from "./styles.module.scss"; interface IProps {} diff --git a/src/components/node/NodeTagsBlock/index.tsx b/src/components/node/NodeTagsBlock/index.tsx index 3cd17fec..88f5138f 100644 --- a/src/components/node/NodeTagsBlock/index.tsx +++ b/src/components/node/NodeTagsBlock/index.tsx @@ -1,6 +1,6 @@ -import React, { FC } from 'react'; -import { NodeTags } from '~/components/node/NodeTags'; -import { useTagContext } from '~/utils/context/TagsContextProvider'; +import React, { FC } from "react"; +import { NodeTags } from "~/components/node/NodeTags"; +import { useTagContext } from "~/utils/context/TagsContextProvider"; interface IProps {} diff --git a/src/components/node/NodeVideoBlock/index.tsx b/src/components/node/NodeVideoBlock/index.tsx index 7bcda3eb..7625f489 100644 --- a/src/components/node/NodeVideoBlock/index.tsx +++ b/src/components/node/NodeVideoBlock/index.tsx @@ -1,7 +1,7 @@ -import React, { FC, useMemo } from 'react'; -import styles from './styles.module.scss'; -import { path } from 'ramda'; -import { INodeComponentProps } from '~/constants/node'; +import React, { FC, useMemo } from "react"; +import styles from "./styles.module.scss"; +import { path } from "ramda"; +import { INodeComponentProps } from "~/constants/node"; interface IProps extends INodeComponentProps {} diff --git a/src/components/profile/Message/index.tsx b/src/components/profile/Message/index.tsx index cea5eb16..618bcfa9 100644 --- a/src/components/profile/Message/index.tsx +++ b/src/components/profile/Message/index.tsx @@ -1,78 +1,26 @@ -import React, { FC, useCallback } from "react"; +import React, { FC } from "react"; import { IMessage } from "~/redux/types"; import styles from "./styles.module.scss"; import { formatText, getPrettyDate, getURL } from "~/utils/dom"; import { PRESETS } from "~/constants/urls"; import classNames from "classnames"; import { Group } from "~/components/containers/Group"; -import { CommentMenu } from "~/components/comment/CommentMenu"; -import { MessageForm } from "~/components/profile/MessageForm"; -import { Filler } from "~/components/containers/Filler"; -import { Button } from "~/components/input/Button"; import markdown from "~/styles/common/markdown.module.scss"; interface IProps { message: IMessage; incoming: boolean; - onEdit: (id: number) => void; - onDelete: (id: number) => void; - onRestore: (id: number) => void; - onCancelEdit: () => void; - isEditing: boolean; } -const Message: FC = ({ - message, - incoming, - onEdit, - onDelete, - isEditing, - onCancelEdit, - onRestore, -}) => { - const onEditClicked = useCallback(() => onEdit(message.id), [onEdit, message.id]); - const onDeleteClicked = useCallback(() => onDelete(message.id), [onDelete, message.id]); - const onRestoreClicked = useCallback(() => onRestore(message.id), [onRestore, message.id]); - - if (message.deleted_at) { - return ( -
- - Сообщение удалено - - - -
-
- ); - } - +const Message: FC = ({ message, incoming }) => { return (
- {isEditing ? ( -
- -
- ) : ( -
- {!incoming && } - -
- )} +
+ +
({ - messages: selectMessages(state), -}); - -const mapDispatchToProps = { - messagesSendMessage: MESSAGES_ACTIONS.messagesSendMessage, -}; - -type IProps = ReturnType & - typeof mapDispatchToProps & { - id?: number; - text?: string; - onCancel?: () => void; - }; - -const MessageFormUnconnected: FC = ({ - messages: { is_sending_messages, is_loading_messages, error }, - messagesSendMessage, - - id = 0, - text: initialText = '', - onCancel, -}) => { - const isEditing = useMemo(() => id > 0, [id]); - const [text, setText] = useState(initialText); - - const onSuccess = useCallback(() => { - setText(''); - - if (isEditing && onCancel) { - onCancel(); - } - }, [setText, isEditing, onCancel]); - - const onSubmit = useCallback(() => { - messagesSendMessage({ text, id }, onSuccess); - }, [messagesSendMessage, text, id, onSuccess]); - - const onKeyDown = useCallback>( - ({ ctrlKey, key }) => { - if (ctrlKey && key === 'Enter') onSubmit(); - }, - [onSubmit] - ); - - return ( -
- {error &&
{ERROR_LITERAL[error]}
} - {is_loading_messages && !error && ( - - -
Обновляем
-
- )} - -