From 9c9f088ac324dc29e617c77437609557ea6126e5 Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Fri, 21 Jul 2017 05:24:45 -0300 Subject: [PATCH] Containers, reducer and constants --- .../client/constants.js | 2 ++ .../client/containers/Tab.js | 15 +++++++++++-- .../client/containers/Tooltip.js | 14 ++++++++++++ .../client/index.js | 4 +++- .../client/reducer.js | 22 +++++++++++++++++++ 5 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 plugins/talk-plugin-featured-comments/client/constants.js create mode 100644 plugins/talk-plugin-featured-comments/client/containers/Tooltip.js create mode 100644 plugins/talk-plugin-featured-comments/client/reducer.js diff --git a/plugins/talk-plugin-featured-comments/client/constants.js b/plugins/talk-plugin-featured-comments/client/constants.js new file mode 100644 index 000000000..7aad99014 --- /dev/null +++ b/plugins/talk-plugin-featured-comments/client/constants.js @@ -0,0 +1,2 @@ +export const SHOW_TOOLTIP = 'SHOW_TOOLTIP'; +export const HIDE_TOOLTIP = 'HIDE_TOOLTIP'; diff --git a/plugins/talk-plugin-featured-comments/client/containers/Tab.js b/plugins/talk-plugin-featured-comments/client/containers/Tab.js index 5d92387d6..f28a63566 100644 --- a/plugins/talk-plugin-featured-comments/client/containers/Tab.js +++ b/plugins/talk-plugin-featured-comments/client/containers/Tab.js @@ -1,8 +1,19 @@ -import {compose, gql} from 'react-apollo'; -import {withFragments, excludeIf} from 'plugin-api/beta/client/hocs'; import Tab from '../components/Tab'; +import {bindActionCreators} from 'redux'; +import {showTooltip, hideTooltip} from '../actions'; +import {compose, gql} from 'react-apollo'; +import {withFragments, excludeIf, connect} from 'plugin-api/beta/client/hocs'; + +const mapStateToProps = ({talkPluginFeaturedComments: state}) => state; + +const mapDispatchToProps = (dispatch) => + bindActionCreators({ + showTooltip, + hideTooltip, + }, dispatch); const enhance = compose( + connect(mapStateToProps, mapDispatchToProps), withFragments({ asset: gql` fragment TalkFeaturedComments_Tab_asset on Asset { diff --git a/plugins/talk-plugin-featured-comments/client/containers/Tooltip.js b/plugins/talk-plugin-featured-comments/client/containers/Tooltip.js new file mode 100644 index 000000000..34cc31a73 --- /dev/null +++ b/plugins/talk-plugin-featured-comments/client/containers/Tooltip.js @@ -0,0 +1,14 @@ +import {bindActionCreators} from 'redux'; +import {showTooltip, hideTooltip} from '../actions'; +import {connect} from 'plugin-api/beta/client/hocs'; +import Tooltip from '../components/Tooltip'; + +const mapStateToProps = ({talkPluginFeaturedComments: state}) => state; + +const mapDispatchToProps = (dispatch) => + bindActionCreators({ + showTooltip, + hideTooltip, + }, dispatch); + +export default connect(mapStateToProps, mapDispatchToProps)(Tooltip); diff --git a/plugins/talk-plugin-featured-comments/client/index.js b/plugins/talk-plugin-featured-comments/client/index.js index d804e2b55..8e4d18058 100644 --- a/plugins/talk-plugin-featured-comments/client/index.js +++ b/plugins/talk-plugin-featured-comments/client/index.js @@ -1,14 +1,16 @@ import Tab from './containers/Tab'; -import TabPane from './containers/TabPane'; import Tag from './components/Tag'; import Button from './components/Button'; +import TabPane from './containers/TabPane'; import translations from './translations.yml'; import update from 'immutability-helper'; +import reducer from './reducer'; import {findCommentInEmbedQuery} from 'coral-embed-stream/src/graphql/utils'; import {insertCommentsSorted} from 'plugin-api/beta/client/utils'; export default { + reducer, translations, slots: { streamTabs: [Tab], diff --git a/plugins/talk-plugin-featured-comments/client/reducer.js b/plugins/talk-plugin-featured-comments/client/reducer.js new file mode 100644 index 000000000..2fd9b82e0 --- /dev/null +++ b/plugins/talk-plugin-featured-comments/client/reducer.js @@ -0,0 +1,22 @@ +import {SHOW_TOOLTIP, HIDE_TOOLTIP} from './constants'; + +const initialState = { + tooltip: false +}; + +export default function featured (state = initialState, action) { + switch (action.type) { + case SHOW_TOOLTIP: + return { + ...state, + tooltip: true + }; + case HIDE_TOOLTIP: + return { + ...state, + tooltip: false + }; + default : + return state; + } +}