diff --git a/webapp/channels/src/components/markdown_image_expand/index.ts b/webapp/channels/src/components/markdown_image_expand/index.ts index 68f7535d4c..a2f2ad669f 100644 --- a/webapp/channels/src/components/markdown_image_expand/index.ts +++ b/webapp/channels/src/components/markdown_image_expand/index.ts @@ -1,28 +1,37 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. -import {bindActionCreators, Dispatch} from 'redux'; +import {ReactNode} from 'react'; +import {connect, ConnectedProps} from 'react-redux'; -import {connect} from 'react-redux'; - -import {GenericAction} from 'mattermost-redux/types/actions'; +import {Post} from '@mattermost/types/posts'; import {toggleInlineImageVisibility} from 'actions/post_actions'; import {isInlineImageVisible} from 'selectors/posts'; import {GlobalState} from 'types/store'; -import MarkdownImageExpand, {Props} from './markdown_image_expand'; +import MarkdownImageExpand from './markdown_image_expand'; -const mapStateToProps = (state: GlobalState, {postId, imageKey}: Props) => { +export type OwnProps = { + postId: Post['id']; + imageKey: string; + alt: string; + onToggle?: (visible: boolean) => void; + children: ReactNode; +} + +const mapStateToProps = (state: GlobalState, {postId, imageKey}: OwnProps) => { return { isExpanded: isInlineImageVisible(state, postId, imageKey), }; }; -const mapDispatchToProps = (dispatch: Dispatch) => { - return { - actions: bindActionCreators({toggleInlineImageVisibility}, dispatch), - }; +const mapDispatchToProps = { + toggleInlineImageVisibility, }; -export default connect(mapStateToProps, mapDispatchToProps)(MarkdownImageExpand); +const connector = connect(mapStateToProps, mapDispatchToProps); + +export type PropsFromRedux = ConnectedProps; + +export default connector(MarkdownImageExpand); diff --git a/webapp/channels/src/components/markdown_image_expand/markdown_image_expand.test.tsx b/webapp/channels/src/components/markdown_image_expand/markdown_image_expand.test.tsx index ca64e1a92d..de6a87df0f 100644 --- a/webapp/channels/src/components/markdown_image_expand/markdown_image_expand.test.tsx +++ b/webapp/channels/src/components/markdown_image_expand/markdown_image_expand.test.tsx @@ -17,7 +17,7 @@ describe('components/MarkdownImageExpand', () => { isExpanded={false} imageKey={'1'} onToggle={toggleHandler} - actions={{toggleInlineImageVisibility: imageCollapseHandler}} + toggleInlineImageVisibility={imageCollapseHandler} >{'An image to expand'}, ); @@ -34,7 +34,7 @@ describe('components/MarkdownImageExpand', () => { isExpanded={true} imageKey={'1'} onToggle={toggleHandler} - actions={{toggleInlineImageVisibility: imageCollapseHandler}} + toggleInlineImageVisibility={imageCollapseHandler} >{'An image to expand'}, ); @@ -51,7 +51,7 @@ describe('components/MarkdownImageExpand', () => { isExpanded={true} imageKey={'1'} onToggle={toggleHandler} - actions={{toggleInlineImageVisibility: imageCollapseHandler}} + toggleInlineImageVisibility={imageCollapseHandler} >{'An image to expand'}, ); @@ -70,7 +70,7 @@ describe('components/MarkdownImageExpand', () => { isExpanded={false} imageKey={'1'} onToggle={toggleHandler} - actions={{toggleInlineImageVisibility: imageCollapseHandler}} + toggleInlineImageVisibility={imageCollapseHandler} >{'An image to expand'}, ); diff --git a/webapp/channels/src/components/markdown_image_expand/markdown_image_expand.tsx b/webapp/channels/src/components/markdown_image_expand/markdown_image_expand.tsx index f6111a4769..ef7817e26c 100644 --- a/webapp/channels/src/components/markdown_image_expand/markdown_image_expand.tsx +++ b/webapp/channels/src/components/markdown_image_expand/markdown_image_expand.tsx @@ -2,25 +2,18 @@ // See LICENSE.txt for license information. import React, {useEffect} from 'react'; + +import type {OwnProps, PropsFromRedux} from './index'; + import './markdown_image_expand.scss'; -export type Props = { - alt: string; - imageKey: string; - children: React.ReactNode; - isExpanded: boolean; - postId: string; - onToggle?: (isExpanded: boolean) => void; - actions: { - toggleInlineImageVisibility: (postId: string, imageKey: string) => void; - }; -}; - -const MarkdownImageExpand: React.FC = ({children, alt, isExpanded, postId, actions, onToggle, imageKey}: Props) => { - const {toggleInlineImageVisibility} = actions; +type Props = OwnProps & PropsFromRedux; +const MarkdownImageExpand: React.FC = ({children, alt, isExpanded, postId, toggleInlineImageVisibility, onToggle, imageKey}: Props) => { useEffect(() => { - onToggle?.(isExpanded); + if (onToggle) { + onToggle(isExpanded); + } }, [isExpanded]); const handleToggleButtonClick = () => {