From f9b639e874ae9feb178fedda2b4678be54476493 Mon Sep 17 00:00:00 2001 From: Jesse Chan Date: Sat, 31 Oct 2020 22:06:03 +0800 Subject: [PATCH] FeedsTab: fix up display of interval multiplier --- .../modals/feeds-modal/FeedsTab.tsx | 60 ++++++++++--------- .../interfaces/clientGatewayService.ts | 2 +- 2 files changed, 34 insertions(+), 28 deletions(-) diff --git a/client/src/javascript/components/modals/feeds-modal/FeedsTab.tsx b/client/src/javascript/components/modals/feeds-modal/FeedsTab.tsx index c551de31..e60d2a50 100644 --- a/client/src/javascript/components/modals/feeds-modal/FeedsTab.tsx +++ b/client/src/javascript/components/modals/feeds-modal/FeedsTab.tsx @@ -26,11 +26,6 @@ import ModalFormSectionHeader from '../ModalFormSectionHeader'; import UIActions from '../../../actions/UIActions'; import * as validators from '../../../util/validators'; -interface IntervalMultiplier { - displayName: string; - value: number; -} - type ValidatedFields = 'url' | 'label' | 'interval'; interface FeedFormData extends Feed { @@ -44,7 +39,6 @@ interface FeedsTabStates { errors?: { [field in ValidatedFields]?: string; }; - intervalMultipliers: Array; currentlyEditingFeed: Partial | null; selectedFeedID: string | null; } @@ -85,6 +79,21 @@ const MESSAGES = defineMessages({ }, }); +const INTERVAL_MULTIPLIERS = [ + { + message: MESSAGES.min, + value: 1, + }, + { + message: MESSAGES.hr, + value: 60, + }, + { + message: MESSAGES.day, + value: 1440, + }, +] as const; + const defaultFeed = { label: '', interval: 5, @@ -130,20 +139,6 @@ class FeedsTab extends React.Component { this.state = { errors: {}, - intervalMultipliers: [ - { - displayName: this.props.intl.formatMessage(MESSAGES.min), - value: 1, - }, - { - displayName: this.props.intl.formatMessage(MESSAGES.hr), - value: 60, - }, - { - displayName: this.props.intl.formatMessage(MESSAGES.day), - value: 1440, - }, - ], currentlyEditingFeed: null, selectedFeedID: null, }; @@ -170,19 +165,30 @@ class FeedsTab extends React.Component { } getIntervalSelectOptions() { - return this.state.intervalMultipliers.map((interval: IntervalMultiplier) => ( + return INTERVAL_MULTIPLIERS.map((interval) => ( - {interval.displayName} + {this.props.intl.formatMessage(interval.message)} )); } getModifyFeedForm(feed: Partial) { const feedInterval = feed.interval || defaultFeed.interval; - const isDayInterval = feedInterval % 1440; - const minutesDivisor = feedInterval % 60 ? 1 : 60; - const defaultIntervalTextValue = feedInterval / isDayInterval ? minutesDivisor : 1440; - const defaultIntervalMultiplierId = isDayInterval ? minutesDivisor : 1440; + + let defaultIntervalTextValue = feedInterval; + let defaultIntervalMultiplier = 1; + + INTERVAL_MULTIPLIERS.forEach((interval) => { + const intervalMultiplier = interval.value; + + if (feedInterval % intervalMultiplier === 0) { + defaultIntervalTextValue = feedInterval / intervalMultiplier; + defaultIntervalMultiplier = intervalMultiplier; + return true; + } + + return false; + }); return ( @@ -202,7 +208,7 @@ class FeedsTab extends React.Component { defaultValue={defaultIntervalTextValue} width="one-eighth" /> - {this.getIntervalSelectOptions()} diff --git a/server/services/interfaces/clientGatewayService.ts b/server/services/interfaces/clientGatewayService.ts index c52afffc..ac448980 100644 --- a/server/services/interfaces/clientGatewayService.ts +++ b/server/services/interfaces/clientGatewayService.ts @@ -129,7 +129,7 @@ abstract class ClientGatewayService extends BaseService} indices - Indices of contents to be altered. * @param {number} priority - Target priority.