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,