From 94cc515589759754a85e1743a2212d48dbc3c24a Mon Sep 17 00:00:00 2001 From: Fedor Katurov Date: Wed, 19 Aug 2020 18:10:52 +0700 Subject: [PATCH] fixed typescript errors --- .../editors/EditorAudioUploadButton/index.tsx | 9 ++------- src/components/editors/EditorFiller/index.tsx | 9 +++++++++ .../editors/EditorImageUploadButton/index.tsx | 8 ++------ .../editors/EditorUploadCoverButton/index.tsx | 13 +++++------- src/constants/dialogs.ts | 6 +++++- src/containers/dialogs/EditorDialog/index.tsx | 20 +++++++++---------- .../LoginSocialRegisterDialog/index.tsx | 20 +++++++++++++++++++ src/containers/profile/ProfileInfo/index.tsx | 2 +- src/redux/modal/constants.ts | 1 + src/redux/node/constants.ts | 14 +++++++------ src/redux/node/types.ts | 8 ++++++++ 11 files changed, 70 insertions(+), 40 deletions(-) create mode 100644 src/components/editors/EditorFiller/index.tsx create mode 100644 src/containers/dialogs/LoginSocialRegisterDialog/index.tsx create mode 100644 src/redux/node/types.ts diff --git a/src/components/editors/EditorAudioUploadButton/index.tsx b/src/components/editors/EditorAudioUploadButton/index.tsx index 3f35eb7e..477bd2d9 100644 --- a/src/components/editors/EditorAudioUploadButton/index.tsx +++ b/src/components/editors/EditorAudioUploadButton/index.tsx @@ -1,14 +1,9 @@ import React, { FC } from 'react'; import { EditorUploadButton } from '~/components/editors/EditorUploadButton'; -import { INode } from '~/redux/types'; import { UPLOAD_TYPES } from '~/redux/uploads/constants'; +import { IEditorComponentProps } from '~/redux/node/types'; -interface IProps { - data: INode; - setData: (val: INode) => void; - temp: string[]; - setTemp: (val: string[]) => void; -} +type IProps = IEditorComponentProps & {}; const EditorAudioUploadButton: FC = ({ data, setData, temp, setTemp }) => ( = () => ; + +export { EditorFiller }; diff --git a/src/components/editors/EditorImageUploadButton/index.tsx b/src/components/editors/EditorImageUploadButton/index.tsx index 3ca8006d..68504973 100644 --- a/src/components/editors/EditorImageUploadButton/index.tsx +++ b/src/components/editors/EditorImageUploadButton/index.tsx @@ -2,13 +2,9 @@ import React, { FC } from 'react'; import { EditorUploadButton } from '~/components/editors/EditorUploadButton'; import { INode } from '~/redux/types'; import { UPLOAD_TYPES } from '~/redux/uploads/constants'; +import { IEditorComponentProps } from '~/redux/node/types'; -interface IProps { - data: INode; - setData: (val: INode) => void; - temp: string[]; - setTemp: (val: string[]) => void; -} +type IProps = IEditorComponentProps & {}; const EditorImageUploadButton: FC = ({ data, setData, temp, setTemp }) => ( { const { statuses, files } = selectUploads(state); @@ -22,12 +23,8 @@ const mapDispatchToProps = { }; type IProps = ReturnType & - typeof mapDispatchToProps & { - data: INode; - setData: (data: INode) => void; - temp: string[]; - setTemp: (val: string[]) => void; - }; + typeof mapDispatchToProps & + IEditorComponentProps & {}; const EditorUploadCoverButtonUnconnected: FC = ({ data, diff --git a/src/constants/dialogs.ts b/src/constants/dialogs.ts index 82b52a1e..0badb898 100644 --- a/src/constants/dialogs.ts +++ b/src/constants/dialogs.ts @@ -11,13 +11,17 @@ import { RestoreRequestDialog } from '~/containers/dialogs/RestoreRequestDialog' import { RestorePasswordDialog } from '~/containers/dialogs/RestorePasswordDialog'; import { DIALOGS } from '~/redux/modal/constants'; import { PhotoSwipe } from '~/containers/dialogs/PhotoSwipe'; +import { LoginSocialRegisterDialog } from '~/containers/dialogs/LoginSocialRegisterDialog'; +import { IDialogProps } from '~/redux/types'; +import { FC } from 'react'; -export const DIALOG_CONTENT = { +export const DIALOG_CONTENT: Record> = { [DIALOGS.EDITOR_IMAGE]: EditorDialogImage, [DIALOGS.EDITOR_TEXT]: EditorDialogText, [DIALOGS.EDITOR_VIDEO]: EditorDialogVideo, [DIALOGS.EDITOR_AUDIO]: EditorDialogAudio, [DIALOGS.LOGIN]: LoginDialog, + [DIALOGS.LOGIN_SOCIAL_REGISTER]: LoginSocialRegisterDialog, [DIALOGS.LOADING]: LoadingDialog, [DIALOGS.TEST]: TestDialog, [DIALOGS.PROFILE]: ProfileDialog, diff --git a/src/containers/dialogs/EditorDialog/index.tsx b/src/containers/dialogs/EditorDialog/index.tsx index 157f9088..4888e82e 100644 --- a/src/containers/dialogs/EditorDialog/index.tsx +++ b/src/containers/dialogs/EditorDialog/index.tsx @@ -1,6 +1,5 @@ -import React, { FC, useState, useCallback, FormEvent, useEffect, createElement } from 'react'; +import React, { createElement, FC, FormEvent, useCallback, useEffect, useState } from 'react'; import { connect } from 'react-redux'; -import { ScrollDialog } from '../ScrollDialog'; import { IDialogProps } from '~/redux/modal/constants'; import { useCloseOnEscape } from '~/utils/hooks'; import { Group } from '~/components/containers/Group'; @@ -13,9 +12,10 @@ import { EditorPanel } from '~/components/editors/EditorPanel'; import * as NODE_ACTIONS from '~/redux/node/actions'; import { selectUploads } from '~/redux/uploads/selectors'; import { ERROR_LITERAL } from '~/constants/errors'; -import { NODE_EDITORS, EMPTY_NODE } from '~/redux/node/constants'; +import { EMPTY_NODE, NODE_EDITORS } from '~/redux/node/constants'; import { BetterScrollDialog } from '../BetterScrollDialog'; import { CoverBackdrop } from '~/components/containers/CoverBackdrop'; +import { IEditorComponentProps } from '~/redux/node/types'; const mapStateToProps = state => { const { editor, errors } = selectNode(state); @@ -32,7 +32,7 @@ const mapDispatchToProps = { type IProps = IDialogProps & ReturnType & typeof mapDispatchToProps & { - type: typeof NODE_EDITORS[keyof typeof NODE_EDITORS]; + type: keyof typeof NODE_EDITORS; }; const EditorDialogUnconnected: FC = ({ @@ -64,7 +64,8 @@ const EditorDialogUnconnected: FC = ({ ); useEffect(() => { - if (!NODE_EDITORS[type] && onRequestClose) onRequestClose(); + if (!Object.prototype.hasOwnProperty.call(NODE_EDITORS, type) && onRequestClose) + onRequestClose(); }, [type]); useEffect(() => { @@ -88,7 +89,7 @@ const EditorDialogUnconnected: FC = ({ const error = errors && Object.values(errors)[0]; - if (!NODE_EDITORS[type]) return null; + if (!Object.prototype.hasOwnProperty.call(NODE_EDITORS, type)) return null; return (
@@ -105,16 +106,13 @@ const EditorDialogUnconnected: FC = ({ setData, temp, setTemp, - })} + } as IEditorComponentProps)} ); }; -const EditorDialog = connect( - mapStateToProps, - mapDispatchToProps -)(EditorDialogUnconnected); +const EditorDialog = connect(mapStateToProps, mapDispatchToProps)(EditorDialogUnconnected); export { EditorDialog }; diff --git a/src/containers/dialogs/LoginSocialRegisterDialog/index.tsx b/src/containers/dialogs/LoginSocialRegisterDialog/index.tsx new file mode 100644 index 00000000..43b551de --- /dev/null +++ b/src/containers/dialogs/LoginSocialRegisterDialog/index.tsx @@ -0,0 +1,20 @@ +import React, { FC } from 'react'; +import { connect } from 'react-redux'; +import { IDialogProps } from '~/redux/modal/constants'; +import { BetterScrollDialog } from '~/containers/dialogs/BetterScrollDialog'; + +const mapStateToProps = () => ({}); +const mapDispatchToProps = {}; + +type Props = ReturnType & typeof mapDispatchToProps & IDialogProps & {}; + +const LoginSocialRegisterDialogUnconnected: FC = ({ onRequestClose }) => ( + NEEDS REGISTER! +); + +const LoginSocialRegisterDialog = connect( + mapStateToProps, + mapDispatchToProps +)(LoginSocialRegisterDialogUnconnected); + +export { LoginSocialRegisterDialog }; diff --git a/src/containers/profile/ProfileInfo/index.tsx b/src/containers/profile/ProfileInfo/index.tsx index d8a8283c..adcb160f 100644 --- a/src/containers/profile/ProfileInfo/index.tsx +++ b/src/containers/profile/ProfileInfo/index.tsx @@ -20,7 +20,7 @@ interface IProps { } const TAB_HEADERS = { - messages: , + messages: , }; const ProfileInfo: FC = ({ user, tab, is_loading, is_own, setTab }) => ( diff --git a/src/redux/modal/constants.ts b/src/redux/modal/constants.ts index 3fdedb0c..9c5b60fa 100644 --- a/src/redux/modal/constants.ts +++ b/src/redux/modal/constants.ts @@ -6,6 +6,7 @@ export const DIALOGS = { EDITOR_VIDEO: 'EDITOR_VIDEO', EDITOR_AUDIO: 'EDITOR_AUDIO', LOGIN: 'LOGIN', + LOGIN_SOCIAL_REGISTER: 'LOGIN_REGISTER', LOADING: 'LOADING', PROFILE: 'PROFILE', RESTORE_REQUEST: 'RESTORE_REQUEST', diff --git a/src/redux/node/constants.ts b/src/redux/node/constants.ts index 507168da..5912780c 100644 --- a/src/redux/node/constants.ts +++ b/src/redux/node/constants.ts @@ -1,4 +1,4 @@ -import { FC } from 'react'; +import { FC, ReactElement } from 'react'; import { INode, ValueOf, IComment } from '../types'; import { NodeImageSlideBlock } from '~/components/node/NodeImageSlideBlock'; import { NodeTextBlock } from '~/components/node/NodeTextBlock'; @@ -14,6 +14,8 @@ import { EditorAudioUploadButton } from '~/components/editors/EditorAudioUploadB import { EditorUploadCoverButton } from '~/components/editors/EditorUploadCoverButton'; import { Filler } from '~/components/containers/Filler'; import { modalShowPhotoswipe } from '../modal/actions'; +import { IEditorComponentProps } from '~/redux/node/types'; +import { EditorFiller } from '~/components/editors/EditorFiller'; const prefix = 'NODE.'; export const NODE_ACTIONS = { @@ -117,14 +119,14 @@ export const NODE_EDITORS = { [NODE_TYPES.AUDIO]: AudioEditor, }; -export const NODE_PANEL_COMPONENTS = { - [NODE_TYPES.TEXT]: [Filler, EditorUploadCoverButton], - [NODE_TYPES.VIDEO]: [Filler, EditorUploadCoverButton], - [NODE_TYPES.IMAGE]: [EditorImageUploadButton, Filler, EditorUploadCoverButton], +export const NODE_PANEL_COMPONENTS: Record[]> = { + [NODE_TYPES.TEXT]: [EditorFiller, EditorUploadCoverButton], + [NODE_TYPES.VIDEO]: [EditorFiller, EditorUploadCoverButton], + [NODE_TYPES.IMAGE]: [EditorImageUploadButton, EditorFiller, EditorUploadCoverButton], [NODE_TYPES.AUDIO]: [ EditorAudioUploadButton, EditorImageUploadButton, - Filler, + EditorFiller, EditorUploadCoverButton, ], }; diff --git a/src/redux/node/types.ts b/src/redux/node/types.ts new file mode 100644 index 00000000..dc3ad0ed --- /dev/null +++ b/src/redux/node/types.ts @@ -0,0 +1,8 @@ +import { INode } from '~/redux/types'; + +export interface IEditorComponentProps { + data: INode; + setData: (data: INode) => void; + temp: string[]; + setTemp: (val: string[]) => void; +}