aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLibravatar Vijay Raghavan Aravamudhan <vraravam@users.noreply.github.com>2021-09-04 20:39:08 +0530
committerLibravatar GitHub <noreply@github.com>2021-09-04 20:39:08 +0530
commit41982633c10c7c155918263b413fe86657e3722b (patch)
treef6821cc62969fecf1efdf5946318a11721ed0f99 /src
parentchore: remove what's new functionality (#1864) (diff)
downloadferdium-app-41982633c10c7c155918263b413fe86657e3722b.tar.gz
ferdium-app-41982633c10c7c155918263b413fe86657e3722b.tar.zst
ferdium-app-41982633c10c7c155918263b413fe86657e3722b.zip
Refactoring to have consistent usage (prep for ts conversion) (#1821)
Diffstat (limited to 'src')
-rw-r--r--src/jsUtils.ts3
-rw-r--r--src/models/News.ts8
-rw-r--r--src/models/Service.js49
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 @@
1export const ifUndefinedString = (source: string | undefined | null, defaultValue: string): string => (source !== undefined && source !== null ? source : defaultValue);
2export const ifUndefinedBoolean = (source: boolean | undefined | null, defaultValue: boolean): boolean => Boolean(source !== undefined && source !== null ? source : defaultValue);
3export 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
3import { ifUndefinedString, ifUndefinedBoolean } from '../jsUtils';
4
3interface INews { 5interface 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';
8import { isValidExternalURL } from '../helpers/url-helpers'; 8import { isValidExternalURL } from '../helpers/url-helpers';
9import UserAgent from './UserAgent'; 9import UserAgent from './UserAgent';
10import { DEFAULT_SERVICE_ORDER } from '../config'; 10import { DEFAULT_SERVICE_ORDER } from '../config';
11import { ifUndefinedString, ifUndefinedBoolean, ifUndefinedNumber } from '../jsUtils';
11 12
12const debug = require('debug')('Ferdi:Service'); 13const 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;