From 5d5ad2585de716abb006f00b21c70c9f06327e75 Mon Sep 17 00:00:00 2001 From: riley Date: Fri, 24 Mar 2017 10:40:12 -0600 Subject: [PATCH 1/3] autoclose an article toggle --- .../src/containers/Configure/StreamSettings.js | 10 ++++++++++ models/setting.js | 4 ++++ services/assets.js | 14 +++++++++++++- 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/client/coral-admin/src/containers/Configure/StreamSettings.js b/client/coral-admin/src/containers/Configure/StreamSettings.js index 4725221ce..26bd103ca 100644 --- a/client/coral-admin/src/containers/Configure/StreamSettings.js +++ b/client/coral-admin/src/containers/Configure/StreamSettings.js @@ -37,6 +37,11 @@ const updateInfoBoxContent = (updateSettings) => (event) => { updateSettings({infoBoxContent}); }; +const updateAutoClose = (updateSettings, autoCloseStream) => () => { + console.log('autoCloseStream', autoCloseStream); + updateSettings({autoCloseStream}); +}; + const updateClosedMessage = (updateSettings) => (event) => { const closedMessage = event.target.value; updateSettings({closedMessage}); @@ -131,6 +136,11 @@ const StreamSettings = ({updateSettings, settingsError, settings, errors}) => { +
+ +
{lang.t('configure.close-after')}
diff --git a/models/setting.js b/models/setting.js index ac54584a4..e63fa8f3e 100644 --- a/models/setting.js +++ b/models/setting.js @@ -47,6 +47,10 @@ const SettingSchema = new Schema({ organizationName: { type: String }, + autoCloseStream: { + type: Boolean, + default: false + }, closedTimeout: { type: Number, diff --git a/services/assets.js b/services/assets.js index f8f795263..8397600a7 100644 --- a/services/assets.js +++ b/services/assets.js @@ -57,12 +57,24 @@ module.exports = class AssetsService { static findOrCreateByUrl(url) { // Check the URL to confirm that is in the domain whitelist - return domainlist.urlCheck(url).then((whitelisted) => { + return Promise.all([ + domainlist.urlCheck(url), + SettingsService.retrieve() + ]).then(([whitelisted, settings]) => { + + const setOnInsert = {url}; + + if (settings.autoCloseStream) { + setOnInsert.closedAt = new Date(Date.now() + settings.closedTimeout * 1000); + } + if (!whitelisted) { return Promise.reject(errors.ErrInvalidAssetURL); } else { return AssetModel.findOneAndUpdate({url}, {url}, { + $setOnInsert: setOnInsert, + // Ensure that if it's new, we return the new object created. new: true, From 701994f8f796d38442893815385ea33a4b43d494 Mon Sep 17 00:00:00 2001 From: riley Date: Fri, 24 Mar 2017 10:42:31 -0600 Subject: [PATCH 2/3] pass lint --- .../src/containers/Configure/StreamSettings.js | 1 - .../ModerationQueue/components/ModerationMenu.js | 8 ++++---- client/coral-plugin-history/Comment.js | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/client/coral-admin/src/containers/Configure/StreamSettings.js b/client/coral-admin/src/containers/Configure/StreamSettings.js index 26bd103ca..ab0ef6af6 100644 --- a/client/coral-admin/src/containers/Configure/StreamSettings.js +++ b/client/coral-admin/src/containers/Configure/StreamSettings.js @@ -38,7 +38,6 @@ const updateInfoBoxContent = (updateSettings) => (event) => { }; const updateAutoClose = (updateSettings, autoCloseStream) => () => { - console.log('autoCloseStream', autoCloseStream); updateSettings({autoCloseStream}); }; diff --git a/client/coral-admin/src/containers/ModerationQueue/components/ModerationMenu.js b/client/coral-admin/src/containers/ModerationQueue/components/ModerationMenu.js index e428f6a52..0606fdb81 100644 --- a/client/coral-admin/src/containers/ModerationQueue/components/ModerationMenu.js +++ b/client/coral-admin/src/containers/ModerationQueue/components/ModerationMenu.js @@ -1,15 +1,15 @@ -import React, { PropTypes } from 'react'; +import React, {PropTypes} from 'react'; import CommentCount from './CommentCount'; import styles from './styles.css'; -import { SelectField, Option } from 'react-mdl-selectfield'; +import {SelectField, Option} from 'react-mdl-selectfield'; import I18n from 'coral-framework/modules/i18n/i18n'; import translations from 'coral-admin/src/translations.json'; -import { Link } from 'react-router'; +import {Link} from 'react-router'; const lang = new I18n(translations); const ModerationMenu = ( - { asset, premodCount, rejectedCount, flaggedCount, selectSort, sort } + {asset, premodCount, rejectedCount, flaggedCount, selectSort, sort} ) => { const premodPath = asset ? `/admin/moderate/premod/${asset.id}` diff --git a/client/coral-plugin-history/Comment.js b/client/coral-plugin-history/Comment.js index 707939536..617d0a04f 100644 --- a/client/coral-plugin-history/Comment.js +++ b/client/coral-plugin-history/Comment.js @@ -1,5 +1,5 @@ -import React, { PropTypes } from 'react'; -import { Icon } from '../coral-ui'; +import React, {PropTypes} from 'react'; +import {Icon} from '../coral-ui'; import styles from './Comment.css'; import PubDate from '../coral-plugin-pubdate/PubDate'; import Content from '../coral-plugin-commentcontent/CommentContent'; From 8114608626c47ff8e804e1501929dc12710ce7df Mon Sep 17 00:00:00 2001 From: Riley Davis Date: Fri, 24 Mar 2017 11:33:06 -0600 Subject: [PATCH 3/3] put the mongoose update opts in the right place --- services/assets.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/services/assets.js b/services/assets.js index 8397600a7..0aa4219da 100644 --- a/services/assets.js +++ b/services/assets.js @@ -62,18 +62,16 @@ module.exports = class AssetsService { SettingsService.retrieve() ]).then(([whitelisted, settings]) => { - const setOnInsert = {url}; + const update = {$setOnInsert: {url}}; if (settings.autoCloseStream) { - setOnInsert.closedAt = new Date(Date.now() + settings.closedTimeout * 1000); + update.$setOnInsert.closedAt = new Date(Date.now() + settings.closedTimeout * 1000); } if (!whitelisted) { return Promise.reject(errors.ErrInvalidAssetURL); } else { - return AssetModel.findOneAndUpdate({url}, {url}, { - - $setOnInsert: setOnInsert, + return AssetModel.findOneAndUpdate({url}, update, { // Ensure that if it's new, we return the new object created. new: true,