diff options
Diffstat (limited to 'src/helpers')
-rw-r--r-- | src/helpers/i18n-helpers.js | 10 | ||||
-rw-r--r-- | src/helpers/recipe-helpers.js | 2 | ||||
-rw-r--r-- | src/helpers/schedule-helpers.js | 70 | ||||
-rw-r--r-- | src/helpers/serverless-helpers.js | 18 | ||||
-rw-r--r-- | src/helpers/service-helpers.js | 2 | ||||
-rw-r--r-- | src/helpers/url-helpers.js | 2 | ||||
-rw-r--r-- | src/helpers/validation-helpers.js | 10 |
7 files changed, 104 insertions, 10 deletions
diff --git a/src/helpers/i18n-helpers.js b/src/helpers/i18n-helpers.js index 84146dd8c..807b9066e 100644 --- a/src/helpers/i18n-helpers.js +++ b/src/helpers/i18n-helpers.js | |||
@@ -28,7 +28,9 @@ export function getLocale({ | |||
28 | return localeStr; | 28 | return localeStr; |
29 | } | 29 | } |
30 | 30 | ||
31 | export function getSelectOptions({ locales, resetToDefaultText = '', automaticDetectionText = '' }) { | 31 | export function getSelectOptions({ |
32 | locales, resetToDefaultText = '', automaticDetectionText = '', sort = true, | ||
33 | }) { | ||
32 | const options = []; | 34 | const options = []; |
33 | 35 | ||
34 | if (resetToDefaultText) { | 36 | if (resetToDefaultText) { |
@@ -55,7 +57,11 @@ export function getSelectOptions({ locales, resetToDefaultText = '', automaticDe | |||
55 | disabled: true, | 57 | disabled: true, |
56 | }); | 58 | }); |
57 | 59 | ||
58 | Object.keys(locales).sort(Intl.Collator().compare).forEach((key) => { | 60 | let keys = Object.keys(locales); |
61 | if (sort) { | ||
62 | keys = keys.sort(Intl.Collator().compare); | ||
63 | } | ||
64 | keys.forEach((key) => { | ||
59 | options.push({ | 65 | options.push({ |
60 | value: key, | 66 | value: key, |
61 | label: locales[key], | 67 | label: locales[key], |
diff --git a/src/helpers/recipe-helpers.js b/src/helpers/recipe-helpers.js index 257e322fb..a31c29e72 100644 --- a/src/helpers/recipe-helpers.js +++ b/src/helpers/recipe-helpers.js | |||
@@ -3,7 +3,7 @@ import { remote } from 'electron'; | |||
3 | 3 | ||
4 | // import ServiceModel from '../models/Service'; | 4 | // import ServiceModel from '../models/Service'; |
5 | 5 | ||
6 | const app = remote.app; | 6 | const { app } = remote; |
7 | 7 | ||
8 | export function getRecipeDirectory(id = '') { | 8 | export function getRecipeDirectory(id = '') { |
9 | return path.join(app.getPath('userData'), 'recipes', id); | 9 | return path.join(app.getPath('userData'), 'recipes', id); |
diff --git a/src/helpers/schedule-helpers.js b/src/helpers/schedule-helpers.js new file mode 100644 index 000000000..a3020cad6 --- /dev/null +++ b/src/helpers/schedule-helpers.js | |||
@@ -0,0 +1,70 @@ | |||
1 | /* eslint-disable import/prefer-default-export */ | ||
2 | |||
3 | export function isInTimeframe(start, end) { | ||
4 | const [ | ||
5 | startHourStr, | ||
6 | startMinuteStr, | ||
7 | ] = start.split(':'); | ||
8 | const startHour = parseInt(startHourStr, 10); | ||
9 | const startMinute = parseInt(startMinuteStr, 10); | ||
10 | |||
11 | const [ | ||
12 | endHourStr, | ||
13 | endMinuteStr, | ||
14 | ] = end.split(':'); | ||
15 | const endHour = parseInt(endHourStr, 10); | ||
16 | const endMinute = parseInt(endMinuteStr, 10); | ||
17 | |||
18 | const currentHour = new Date().getHours(); | ||
19 | const currentMinute = new Date().getMinutes(); | ||
20 | |||
21 | // Check if the end time is before the start time (scheduled overnight) | ||
22 | // as we need to change our checks based on this | ||
23 | const endBeforeStart = (startHour > endHour || (startHour === endHour && startMinute > endMinute)); | ||
24 | |||
25 | if ( | ||
26 | // End is after start (e.g. 09:00-17:00) | ||
27 | !endBeforeStart | ||
28 | // Check if past start | ||
29 | && ((currentHour > startHour | ||
30 | || ( | ||
31 | currentHour === startHour | ||
32 | && currentMinute >= startMinute | ||
33 | ) | ||
34 | ) | ||
35 | // Check that not past end | ||
36 | && (currentHour < endHour | ||
37 | || ( | ||
38 | currentHour === endHour | ||
39 | && currentMinute < endMinute | ||
40 | ) | ||
41 | )) | ||
42 | ) { | ||
43 | // We are in scheduled timeframe | ||
44 | return true; | ||
45 | } | ||
46 | if ( | ||
47 | // End is before start (e.g. 17:00-09:00) | ||
48 | endBeforeStart | ||
49 | // Check if past start | ||
50 | && ((currentHour > startHour | ||
51 | || ( | ||
52 | currentHour === startHour | ||
53 | && currentMinute >= startMinute | ||
54 | ) | ||
55 | ) | ||
56 | // Check that we are not past end | ||
57 | || (currentHour < endHour | ||
58 | || ( | ||
59 | currentHour === endHour | ||
60 | && currentMinute < endMinute | ||
61 | ) | ||
62 | )) | ||
63 | ) { | ||
64 | // We are also in scheduled timeframe | ||
65 | return true; | ||
66 | } | ||
67 | |||
68 | // We are not in scheduled timeframe | ||
69 | return false; | ||
70 | } | ||
diff --git a/src/helpers/serverless-helpers.js b/src/helpers/serverless-helpers.js new file mode 100644 index 000000000..01549e038 --- /dev/null +++ b/src/helpers/serverless-helpers.js | |||
@@ -0,0 +1,18 @@ | |||
1 | import { LOCAL_SERVER } from '../config'; | ||
2 | |||
3 | export default function useLocalServer(actions) { | ||
4 | // Use local server for user | ||
5 | actions.settings.update({ | ||
6 | type: 'app', | ||
7 | data: { | ||
8 | server: LOCAL_SERVER, | ||
9 | }, | ||
10 | }); | ||
11 | |||
12 | // Log into local server | ||
13 | // Credentials are ignored by the server but the client requires them | ||
14 | actions.user.login({ | ||
15 | email: 'ferdi@localhost', | ||
16 | password: 'FERDI_', | ||
17 | }); | ||
18 | } | ||
diff --git a/src/helpers/service-helpers.js b/src/helpers/service-helpers.js index 5f63f6b7c..83f89f108 100644 --- a/src/helpers/service-helpers.js +++ b/src/helpers/service-helpers.js | |||
@@ -2,7 +2,7 @@ import path from 'path'; | |||
2 | import { remote } from 'electron'; | 2 | import { remote } from 'electron'; |
3 | import fs from 'fs-extra'; | 3 | import fs from 'fs-extra'; |
4 | 4 | ||
5 | const app = remote.app; | 5 | const { app } = remote; |
6 | 6 | ||
7 | export function getServicePartitionsDirectory() { | 7 | export function getServicePartitionsDirectory() { |
8 | return path.join(app.getPath('userData'), 'Partitions'); | 8 | return path.join(app.getPath('userData'), 'Partitions'); |
diff --git a/src/helpers/url-helpers.js b/src/helpers/url-helpers.js index 750d1f00c..2f429a25c 100644 --- a/src/helpers/url-helpers.js +++ b/src/helpers/url-helpers.js | |||
@@ -2,7 +2,7 @@ import { URL } from 'url'; | |||
2 | 2 | ||
3 | import { ALLOWED_PROTOCOLS } from '../config'; | 3 | import { ALLOWED_PROTOCOLS } from '../config'; |
4 | 4 | ||
5 | const debug = require('debug')('Franz:Helpers:url'); | 5 | const debug = require('debug')('Ferdi:Helpers:url'); |
6 | 6 | ||
7 | export function isValidExternalURL(url) { | 7 | export function isValidExternalURL(url) { |
8 | const parsedUrl = new URL(url); | 8 | const parsedUrl = new URL(url); |
diff --git a/src/helpers/validation-helpers.js b/src/helpers/validation-helpers.js index ab2376b1b..f489ec65e 100644 --- a/src/helpers/validation-helpers.js +++ b/src/helpers/validation-helpers.js | |||
@@ -26,13 +26,13 @@ const messages = defineMessages({ | |||
26 | 26 | ||
27 | export function required({ field }) { | 27 | export function required({ field }) { |
28 | const isValid = (field.value.trim() !== ''); | 28 | const isValid = (field.value.trim() !== ''); |
29 | return [isValid, window.franz.intl.formatMessage(messages.required, { field: field.label })]; | 29 | return [isValid, window.ferdi.intl.formatMessage(messages.required, { field: field.label })]; |
30 | } | 30 | } |
31 | 31 | ||
32 | export function email({ field }) { | 32 | export function email({ field }) { |
33 | const value = field.value.trim(); | 33 | const value = field.value.trim(); |
34 | const isValid = isEmail(value); | 34 | const isValid = isEmail(value); |
35 | return [isValid, window.franz.intl.formatMessage(messages.email, { field: field.label })]; | 35 | return [isValid, window.ferdi.intl.formatMessage(messages.email, { field: field.label })]; |
36 | } | 36 | } |
37 | 37 | ||
38 | export function url({ field }) { | 38 | export function url({ field }) { |
@@ -46,7 +46,7 @@ export function url({ field }) { | |||
46 | isValid = true; | 46 | isValid = true; |
47 | } | 47 | } |
48 | 48 | ||
49 | return [isValid, window.franz.intl.formatMessage(messages.url, { field: field.label })]; | 49 | return [isValid, window.ferdi.intl.formatMessage(messages.url, { field: field.label })]; |
50 | } | 50 | } |
51 | 51 | ||
52 | export function minLength(length) { | 52 | export function minLength(length) { |
@@ -55,13 +55,13 @@ export function minLength(length) { | |||
55 | if (field.touched) { | 55 | if (field.touched) { |
56 | isValid = field.value.length >= length; | 56 | isValid = field.value.length >= length; |
57 | } | 57 | } |
58 | return [isValid, window.franz.intl.formatMessage(messages.minLength, { field: field.label, length })]; | 58 | return [isValid, window.ferdi.intl.formatMessage(messages.minLength, { field: field.label, length })]; |
59 | }; | 59 | }; |
60 | } | 60 | } |
61 | 61 | ||
62 | export function oneRequired(targets) { | 62 | export function oneRequired(targets) { |
63 | return ({ field, form }) => { | 63 | return ({ field, form }) => { |
64 | const invalidFields = targets.filter(target => form.$(target).value === ''); | 64 | const invalidFields = targets.filter(target => form.$(target).value === ''); |
65 | return [targets.length !== invalidFields.length, window.franz.intl.formatMessage(messages.required, { field: field.label })]; | 65 | return [targets.length !== invalidFields.length, window.ferdi.intl.formatMessage(messages.required, { field: field.label })]; |
66 | }; | 66 | }; |
67 | } | 67 | } |