// Shared RSS feed form view-model builder. function buildDefaultRssFeed() { return { id: null, name: '', feedUrl: '', updateIntervalValue: 60, updateIntervalUnit: 'minutes', itemLimit: 1 }; } function buildRssFeedFormViewModel(rssFeed, message, currentUser, options, isEdit) { const viewRssFeed = Object.assign(buildDefaultRssFeed(), rssFeed || {}); const viewOptions = options || {}; return { title: isEdit ? 'Edit RSS feed' : 'Add RSS feed', active: 'rss-feeds', message: message, currentUser: currentUser || null, rssFeed: viewRssFeed, inUse: Boolean(viewRssFeed.inUse), pulledItems: viewOptions.pulledItems || viewRssFeed.pulledItems || [], pullError: viewOptions.pullError || viewRssFeed.pullError || '', messageVariant: viewOptions.messageVariant || '', isEdit: Boolean(isEdit), showSaveSecondaryActions: true, deleteDisabled: !isEdit || Boolean(viewRssFeed.inUse), formAction: isEdit && viewRssFeed.id ? '/data-sources/rss-feeds/' + viewRssFeed.id : '/data-sources/rss-feeds', formAttrs: isEdit && viewRssFeed.id ? 'data-async-save data-async-save-refresh-target="#rss-feed-items-panel" data-async-save-refresh-state-url="/data-sources/rss-feeds/' + viewRssFeed.id + '/state" data-async-save-close-url="/data-sources/rss-feeds" data-async-save-new-url="/data-sources/rss-feeds/new"' : 'data-async-save data-async-save-close-url="/data-sources/rss-feeds" data-async-save-new-redirect="response-url" data-async-save-new-url="/data-sources/rss-feeds/new"', cancelUrl: '/data-sources/rss-feeds', deleteUrl: isEdit && viewRssFeed.id ? '/data-sources/rss-feeds/' + viewRssFeed.id + '/delete' : '' }; } module.exports = { buildRssFeedFormViewModel: buildRssFeedFormViewModel };