diff options
author | Vijay Raghavan Aravamudhan <vraravam@users.noreply.github.com> | 2021-09-04 20:39:08 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-04 20:39:08 +0530 |
commit | 41982633c10c7c155918263b413fe86657e3722b (patch) | |
tree | f6821cc62969fecf1efdf5946318a11721ed0f99 | |
parent | chore: remove what's new functionality (#1864) (diff) | |
download | ferdium-app-41982633c10c7c155918263b413fe86657e3722b.tar.gz ferdium-app-41982633c10c7c155918263b413fe86657e3722b.tar.zst ferdium-app-41982633c10c7c155918263b413fe86657e3722b.zip |
Refactoring to have consistent usage (prep for ts conversion) (#1821)
-rw-r--r-- | src/jsUtils.ts | 3 | ||||
-rw-r--r-- | src/models/News.ts | 8 | ||||
-rw-r--r-- | src/models/Service.js | 49 |
3 files changed, 25 insertions, 35 deletions
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 @@ | |||
1 | export const ifUndefinedString = (source: string | undefined | null, defaultValue: string): string => (source !== undefined && source !== null ? source : defaultValue); | ||
2 | export const ifUndefinedBoolean = (source: boolean | undefined | null, defaultValue: boolean): boolean => Boolean(source !== undefined && source !== null ? source : defaultValue); | ||
3 | 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 @@ | |||
1 | // @flow | 1 | // @flow |
2 | 2 | ||
3 | import { ifUndefinedString, ifUndefinedBoolean } from '../jsUtils'; | ||
4 | |||
3 | interface INews { | 5 | interface INews { |
4 | id: string; | 6 | id: string; |
5 | message: string; | 7 | message: string; |
@@ -22,8 +24,8 @@ export default class News { | |||
22 | } | 24 | } |
23 | 25 | ||
24 | this.id = data.id; | 26 | this.id = data.id; |
25 | this.message = data.message || this.message; | 27 | this.message = ifUndefinedString(data.message, this.message); |
26 | this.type = data.type || this.type; | 28 | this.type = ifUndefinedString(data.type, this.type); |
27 | this.sticky = data.sticky !== undefined ? data.sticky : this.sticky; | 29 | this.sticky = ifUndefinedBoolean(data.sticky, this.sticky); |
28 | } | 30 | } |
29 | } | 31 | } |
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'; | |||
8 | import { isValidExternalURL } from '../helpers/url-helpers'; | 8 | import { isValidExternalURL } from '../helpers/url-helpers'; |
9 | import UserAgent from './UserAgent'; | 9 | import UserAgent from './UserAgent'; |
10 | import { DEFAULT_SERVICE_ORDER } from '../config'; | 10 | import { DEFAULT_SERVICE_ORDER } from '../config'; |
11 | import { ifUndefinedString, ifUndefinedBoolean, ifUndefinedNumber } from '../jsUtils'; | ||
11 | 12 | ||
12 | const debug = require('debug')('Ferdi:Service'); | 13 | const debug = require('debug')('Ferdi:Service'); |
13 | 14 | ||
@@ -101,8 +102,11 @@ export default class Service { | |||
101 | throw Error('Service recipe not valid'); | 102 | throw Error('Service recipe not valid'); |
102 | } | 103 | } |
103 | 104 | ||
105 | this.recipe = recipe; | ||
106 | |||
104 | this.userAgentModel = new UserAgent(recipe.overrideUserAgent); | 107 | this.userAgentModel = new UserAgent(recipe.overrideUserAgent); |
105 | 108 | ||
109 | // TODO: Should these also follow the 'ifUndefined*' style? | ||
106 | this.id = data.id || this.id; | 110 | this.id = data.id || this.id; |
107 | this.name = data.name || this.name; | 111 | this.name = data.name || this.name; |
108 | this.team = data.team || this.team; | 112 | this.team = data.team || this.team; |
@@ -110,38 +114,19 @@ export default class Service { | |||
110 | // this.customIconUrl = data.customIconUrl || this.customIconUrl; | 114 | // this.customIconUrl = data.customIconUrl || this.customIconUrl; |
111 | this.iconUrl = data.iconUrl || this.iconUrl; | 115 | this.iconUrl = data.iconUrl || this.iconUrl; |
112 | 116 | ||
113 | this.order = data.order !== undefined | 117 | this.order = ifUndefinedNumber(data.order, this.order); |
114 | ? data.order : this.order; | 118 | this.isEnabled = ifUndefinedBoolean(data.isEnabled, this.isEnabled); |
115 | 119 | this.isNotificationEnabled = ifUndefinedBoolean(data.isNotificationEnabled, this.isNotificationEnabled); | |
116 | this.isEnabled = data.isEnabled !== undefined | 120 | this.isBadgeEnabled = ifUndefinedBoolean(data.isBadgeEnabled, this.isBadgeEnabled); |
117 | ? data.isEnabled : this.isEnabled; | 121 | this.isIndirectMessageBadgeEnabled = ifUndefinedBoolean(data.isIndirectMessageBadgeEnabled, this.isIndirectMessageBadgeEnabled); |
118 | 122 | this.isMuted = ifUndefinedBoolean(data.isMuted, this.isMuted); | |
119 | this.isNotificationEnabled = data.isNotificationEnabled !== undefined | 123 | this.isDarkModeEnabled = ifUndefinedBoolean(data.isDarkModeEnabled, this.isDarkModeEnabled); |
120 | ? data.isNotificationEnabled : this.isNotificationEnabled; | 124 | this.darkReaderSettings = ifUndefinedString(data.darkReaderSettings, this.darkReaderSettings); |
121 | 125 | this.hasCustomUploadedIcon = ifUndefinedBoolean(data.hasCustomIcon, this.hasCustomUploadedIcon); | |
122 | this.isBadgeEnabled = data.isBadgeEnabled !== undefined | 126 | this.proxy = ifUndefinedString(data.proxy, this.proxy); |
123 | ? data.isBadgeEnabled : this.isBadgeEnabled; | 127 | this.spellcheckerLanguage = ifUndefinedString(data.spellcheckerLanguage, this.spellcheckerLanguage); |
124 | 128 | this.userAgentPref = ifUndefinedString(data.userAgentPref, this.userAgentPref); | |
125 | this.isIndirectMessageBadgeEnabled = data.isIndirectMessageBadgeEnabled !== undefined | 129 | this.isHibernationEnabled = ifUndefinedBoolean(data.isHibernationEnabled, this.isHibernationEnabled); |
126 | ? data.isIndirectMessageBadgeEnabled : this.isIndirectMessageBadgeEnabled; | ||
127 | |||
128 | this.isMuted = data.isMuted !== undefined ? data.isMuted : this.isMuted; | ||
129 | |||
130 | this.isDarkModeEnabled = data.isDarkModeEnabled !== undefined ? data.isDarkModeEnabled : this.isDarkModeEnabled; | ||
131 | |||
132 | this.darkReaderSettings = data.darkReaderSettings !== undefined ? data.darkReaderSettings : this.darkReaderSettings; | ||
133 | |||
134 | this.hasCustomUploadedIcon = data.hasCustomIcon !== undefined ? data.hasCustomIcon : this.hasCustomUploadedIcon; | ||
135 | |||
136 | this.proxy = data.proxy !== undefined ? data.proxy : this.proxy; | ||
137 | |||
138 | this.spellcheckerLanguage = data.spellcheckerLanguage !== undefined ? data.spellcheckerLanguage : this.spellcheckerLanguage; | ||
139 | |||
140 | this.userAgentPref = data.userAgentPref !== undefined ? data.userAgentPref : this.userAgentPref; | ||
141 | |||
142 | this.isHibernationEnabled = data.isHibernationEnabled !== undefined ? data.isHibernationEnabled : this.isHibernationEnabled; | ||
143 | |||
144 | this.recipe = recipe; | ||
145 | 130 | ||
146 | // Check if "Hibernate on Startup" is enabled and hibernate all services except active one | 131 | // Check if "Hibernate on Startup" is enabled and hibernate all services except active one |
147 | const { hibernateOnStartup } = window.ferdi.stores.settings.app; | 132 | const { hibernateOnStartup } = window.ferdi.stores.settings.app; |