aboutsummaryrefslogtreecommitdiffstats
path: root/src/helpers
diff options
context:
space:
mode:
Diffstat (limited to 'src/helpers')
-rw-r--r--src/helpers/i18n-helpers.js10
-rw-r--r--src/helpers/recipe-helpers.js2
-rw-r--r--src/helpers/schedule-helpers.js70
-rw-r--r--src/helpers/serverless-helpers.js18
-rw-r--r--src/helpers/service-helpers.js2
-rw-r--r--src/helpers/url-helpers.js2
-rw-r--r--src/helpers/validation-helpers.js10
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
31export function getSelectOptions({ locales, resetToDefaultText = '', automaticDetectionText = '' }) { 31export 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
6const app = remote.app; 6const { app } = remote;
7 7
8export function getRecipeDirectory(id = '') { 8export 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
3export 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 @@
1import { LOCAL_SERVER } from '../config';
2
3export 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';
2import { remote } from 'electron'; 2import { remote } from 'electron';
3import fs from 'fs-extra'; 3import fs from 'fs-extra';
4 4
5const app = remote.app; 5const { app } = remote;
6 6
7export function getServicePartitionsDirectory() { 7export 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
3import { ALLOWED_PROTOCOLS } from '../config'; 3import { ALLOWED_PROTOCOLS } from '../config';
4 4
5const debug = require('debug')('Franz:Helpers:url'); 5const debug = require('debug')('Ferdi:Helpers:url');
6 6
7export function isValidExternalURL(url) { 7export 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
27export function required({ field }) { 27export 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
32export function email({ field }) { 32export 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
38export function url({ field }) { 38export 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
52export function minLength(length) { 52export 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
62export function oneRequired(targets) { 62export 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}