From 41982633c10c7c155918263b413fe86657e3722b Mon Sep 17 00:00:00 2001 From: Vijay Raghavan Aravamudhan Date: Sat, 4 Sep 2021 20:39:08 +0530 Subject: Refactoring to have consistent usage (prep for ts conversion) (#1821) --- src/jsUtils.ts | 3 +++ src/models/News.ts | 8 +++++--- src/models/Service.js | 49 +++++++++++++++++-------------------------------- 3 files changed, 25 insertions(+), 35 deletions(-) create mode 100644 src/jsUtils.ts diff --git a/src/jsUtils.ts b/src/jsUtils.ts new file mode 100644 index 000000000..b1baad7c5 --- /dev/null +++ b/src/jsUtils.ts @@ -0,0 +1,3 @@ +export const ifUndefinedString = (source: string | undefined | null, defaultValue: string): string => (source !== undefined && source !== null ? source : defaultValue); +export const ifUndefinedBoolean = (source: boolean | undefined | null, defaultValue: boolean): boolean => Boolean(source !== undefined && source !== null ? source : defaultValue); +export const ifUndefinedNumber = (source: number | undefined | null, defaultValue: number): number => Number(source !== undefined && source !== null ? source : defaultValue); diff --git a/src/models/News.ts b/src/models/News.ts index 3db812937..d1ae6fcef 100644 --- a/src/models/News.ts +++ b/src/models/News.ts @@ -1,5 +1,7 @@ // @flow +import { ifUndefinedString, ifUndefinedBoolean } from '../jsUtils'; + interface INews { id: string; message: string; @@ -22,8 +24,8 @@ export default class News { } this.id = data.id; - this.message = data.message || this.message; - this.type = data.type || this.type; - this.sticky = data.sticky !== undefined ? data.sticky : this.sticky; + this.message = ifUndefinedString(data.message, this.message); + this.type = ifUndefinedString(data.type, this.type); + this.sticky = ifUndefinedBoolean(data.sticky, this.sticky); } } diff --git a/src/models/Service.js b/src/models/Service.js index 4b78b9a40..dbbd622aa 100644 --- a/src/models/Service.js +++ b/src/models/Service.js @@ -8,6 +8,7 @@ import { todosStore } from '../features/todos'; import { isValidExternalURL } from '../helpers/url-helpers'; import UserAgent from './UserAgent'; import { DEFAULT_SERVICE_ORDER } from '../config'; +import { ifUndefinedString, ifUndefinedBoolean, ifUndefinedNumber } from '../jsUtils'; const debug = require('debug')('Ferdi:Service'); @@ -101,8 +102,11 @@ export default class Service { throw Error('Service recipe not valid'); } + this.recipe = recipe; + this.userAgentModel = new UserAgent(recipe.overrideUserAgent); + // TODO: Should these also follow the 'ifUndefined*' style? this.id = data.id || this.id; this.name = data.name || this.name; this.team = data.team || this.team; @@ -110,38 +114,19 @@ export default class Service { // this.customIconUrl = data.customIconUrl || this.customIconUrl; this.iconUrl = data.iconUrl || this.iconUrl; - this.order = data.order !== undefined - ? data.order : this.order; - - this.isEnabled = data.isEnabled !== undefined - ? data.isEnabled : this.isEnabled; - - this.isNotificationEnabled = data.isNotificationEnabled !== undefined - ? data.isNotificationEnabled : this.isNotificationEnabled; - - this.isBadgeEnabled = data.isBadgeEnabled !== undefined - ? data.isBadgeEnabled : this.isBadgeEnabled; - - this.isIndirectMessageBadgeEnabled = data.isIndirectMessageBadgeEnabled !== undefined - ? data.isIndirectMessageBadgeEnabled : this.isIndirectMessageBadgeEnabled; - - this.isMuted = data.isMuted !== undefined ? data.isMuted : this.isMuted; - - this.isDarkModeEnabled = data.isDarkModeEnabled !== undefined ? data.isDarkModeEnabled : this.isDarkModeEnabled; - - this.darkReaderSettings = data.darkReaderSettings !== undefined ? data.darkReaderSettings : this.darkReaderSettings; - - this.hasCustomUploadedIcon = data.hasCustomIcon !== undefined ? data.hasCustomIcon : this.hasCustomUploadedIcon; - - this.proxy = data.proxy !== undefined ? data.proxy : this.proxy; - - this.spellcheckerLanguage = data.spellcheckerLanguage !== undefined ? data.spellcheckerLanguage : this.spellcheckerLanguage; - - this.userAgentPref = data.userAgentPref !== undefined ? data.userAgentPref : this.userAgentPref; - - this.isHibernationEnabled = data.isHibernationEnabled !== undefined ? data.isHibernationEnabled : this.isHibernationEnabled; - - this.recipe = recipe; + this.order = ifUndefinedNumber(data.order, this.order); + this.isEnabled = ifUndefinedBoolean(data.isEnabled, this.isEnabled); + this.isNotificationEnabled = ifUndefinedBoolean(data.isNotificationEnabled, this.isNotificationEnabled); + this.isBadgeEnabled = ifUndefinedBoolean(data.isBadgeEnabled, this.isBadgeEnabled); + this.isIndirectMessageBadgeEnabled = ifUndefinedBoolean(data.isIndirectMessageBadgeEnabled, this.isIndirectMessageBadgeEnabled); + this.isMuted = ifUndefinedBoolean(data.isMuted, this.isMuted); + this.isDarkModeEnabled = ifUndefinedBoolean(data.isDarkModeEnabled, this.isDarkModeEnabled); + this.darkReaderSettings = ifUndefinedString(data.darkReaderSettings, this.darkReaderSettings); + this.hasCustomUploadedIcon = ifUndefinedBoolean(data.hasCustomIcon, this.hasCustomUploadedIcon); + this.proxy = ifUndefinedString(data.proxy, this.proxy); + this.spellcheckerLanguage = ifUndefinedString(data.spellcheckerLanguage, this.spellcheckerLanguage); + this.userAgentPref = ifUndefinedString(data.userAgentPref, this.userAgentPref); + this.isHibernationEnabled = ifUndefinedBoolean(data.isHibernationEnabled, this.isHibernationEnabled); // Check if "Hibernate on Startup" is enabled and hibernate all services except active one const { hibernateOnStartup } = window.ferdi.stores.settings.app; -- cgit v1.2.3-70-g09d2