From ee9674cd23fcee0fc4824236bc19200d71c395e2 Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Tue, 24 Jan 2017 17:27:30 -0300 Subject: [PATCH] Settings stream tab --- .../containers/ConfigureStreamContainer.js | 15 +++---- .../src/graphql/queries/streamQuery.graphql | 1 + client/coral-framework/actions/config.js | 45 +++++++++++++++++++ graph/typeDefs.js | 1 + 4 files changed, 54 insertions(+), 8 deletions(-) diff --git a/client/coral-configure/containers/ConfigureStreamContainer.js b/client/coral-configure/containers/ConfigureStreamContainer.js index b114d93ae..f55176d9c 100644 --- a/client/coral-configure/containers/ConfigureStreamContainer.js +++ b/client/coral-configure/containers/ConfigureStreamContainer.js @@ -1,5 +1,6 @@ import React, {Component} from 'react'; import {connect} from 'react-redux'; +import {compose} from 'react-apollo'; import {I18n} from '../../coral-framework'; import {updateOpenStatus, updateConfiguration} from '../../coral-framework/actions/config'; @@ -14,7 +15,7 @@ class ConfigureStreamContainer extends Component { super(props); this.state = { - premod: props.config.moderation === 'pre', + premod: props.asset.settings.moderation.toLowerCase() === 'pre', premodLinks: false }; @@ -26,7 +27,7 @@ class ConfigureStreamContainer extends Component { handleApply () { const {premod, changed} = this.state; const newConfig = { - moderation: premod ? 'pre' : 'post' + moderation: premod ? 'PRE' : 'POST' }; if (changed) { this.props.updateConfiguration(newConfig); @@ -47,20 +48,18 @@ class ConfigureStreamContainer extends Component { } toggleStatus () { - this.props.updateStatus(this.props.config.status === 'open' ? 'closed' : 'open'); + this.props.updateStatus(this.props.asset.closedAt === null ? 'closed' : 'open'); } getClosedIn () { - const {closedTimeout} = this.props.config; + const {closedTimeout} = this.props.asset.settings; const {created_at} = this.props.asset; return lang.timeago(new Date(created_at).getTime() + (1000 * closedTimeout)); } render () { - const {status} = this.props; + const status = this.props.asset.closedAt === null ? 'open' : 'closed'; - // asset.closedAt === null - console.log(this.props.apollo.data); return (
({ config: state.config.toJS(), - apollo: state.apollo + asset: state.asset.toJS() }); const mapDispatchToProps = dispatch => ({ diff --git a/client/coral-embed-stream/src/graphql/queries/streamQuery.graphql b/client/coral-embed-stream/src/graphql/queries/streamQuery.graphql index 0e067c0b2..64bb46b47 100644 --- a/client/coral-embed-stream/src/graphql/queries/streamQuery.graphql +++ b/client/coral-embed-stream/src/graphql/queries/streamQuery.graphql @@ -26,6 +26,7 @@ query AssetQuery($asset_url: String!) { title url closedAt + created_at settings { moderation infoBoxEnable diff --git a/client/coral-framework/actions/config.js b/client/coral-framework/actions/config.js index 8b1378917..6dfba6dce 100644 --- a/client/coral-framework/actions/config.js +++ b/client/coral-framework/actions/config.js @@ -1 +1,46 @@ +import coralApi from '../helpers/response'; +import * as actions from '../constants/config'; +import {addNotification} from '../actions/notification'; +import I18n from 'coral-framework/modules/i18n/i18n'; +import translations from './../translations'; +const lang = new I18n(translations); + +const updateConfigRequest = () => ({type: actions.UPDATE_CONFIG_REQUEST}); +const updateConfigSuccess = config => ({type: actions.UPDATE_CONFIG_SUCCESS, config}); +const updateConfigFailure = () => ({type: actions.UPDATE_CONFIG_FAILURE}); + +export const updateConfiguration = newConfig => (dispatch, getState) => { + const assetId = getState().asset.toJS().id; + dispatch(updateConfigRequest()); + coralApi(`/assets/${assetId}/settings`, {method: 'PUT', body: newConfig}) + .then(() => { + dispatch(addNotification('success', lang.t('successUpdateSettings'))); + dispatch(updateConfigSuccess(newConfig)); + }) + .catch(error => dispatch(updateConfigFailure(error))); +}; + +export const updateOpenStream = closedBody => (dispatch, getState) => { + const assetId = getState().asset.toJS().id; + dispatch(updateConfigRequest()); + coralApi(`/assets/${assetId}/status`, {method: 'PUT', body: closedBody}) + .then(() => { + dispatch(addNotification('success', lang.t('successUpdateSettings'))); + dispatch(updateConfigSuccess(closedBody)); + }) + .catch(error => dispatch(updateConfigFailure(error))); +}; + +const openStream = () => ({type: actions.OPEN_COMMENTS}); +const closeStream = () => ({type: actions.CLOSE_COMMENTS}); + +export const updateOpenStatus = status => dispatch => { + if (status === 'open') { + dispatch(openStream()); + dispatch(updateOpenStream({closedAt: null})); + } else { + dispatch(closeStream()); + dispatch(updateOpenStream({closedAt: new Date().getTime()})); + } +}; diff --git a/graph/typeDefs.js b/graph/typeDefs.js index 3d484d976..c6804408a 100644 --- a/graph/typeDefs.js +++ b/graph/typeDefs.js @@ -115,6 +115,7 @@ type Asset { comments: [Comment] settings: Settings! closedAt: String + created_at: String } enum COMMENT_STATUS {