diff options
author | Vijay Aravamudhan <vraravam@users.noreply.github.com> | 2021-10-26 08:57:50 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-26 08:57:50 +0530 |
commit | 2edcf95e6cf390e4511e3bfd61cdab6057cd6adc (patch) | |
tree | b85c62fb608612f23c178c8d19f9598e2b48fe8b /src/helpers | |
parent | docs: added 'sreelekhaMarasig' as contributor for code [skip ci] (diff) | |
download | ferdium-app-2edcf95e6cf390e4511e3bfd61cdab6057cd6adc.tar.gz ferdium-app-2edcf95e6cf390e4511e3bfd61cdab6057cd6adc.tar.zst ferdium-app-2edcf95e6cf390e4511e3bfd61cdab6057cd6adc.zip |
Diffstat (limited to 'src/helpers')
-rw-r--r-- | src/helpers/url-helpers.ts | 6 | ||||
-rw-r--r-- | src/helpers/validation-helpers.ts | 21 |
2 files changed, 16 insertions, 11 deletions
diff --git a/src/helpers/url-helpers.ts b/src/helpers/url-helpers.ts index 135f06cbf..c1ca3ab25 100644 --- a/src/helpers/url-helpers.ts +++ b/src/helpers/url-helpers.ts | |||
@@ -1,7 +1,7 @@ | |||
1 | // This is taken from: https://benjamin-altpeter.de/shell-openexternal-dangers/ | 1 | // This is taken from: https://benjamin-altpeter.de/shell-openexternal-dangers/ |
2 | 2 | ||
3 | import { URL } from 'url'; | 3 | import { URL } from 'url'; |
4 | import { ensureDirSync } from 'fs-extra'; | 4 | import { ensureDirSync, existsSync } from 'fs-extra'; |
5 | import { shell } from 'electron'; | 5 | import { shell } from 'electron'; |
6 | 6 | ||
7 | import { ALLOWED_PROTOCOLS } from '../config'; | 7 | import { ALLOWED_PROTOCOLS } from '../config'; |
@@ -23,6 +23,10 @@ export function isValidExternalURL(url: string | URL) { | |||
23 | return isAllowed; | 23 | return isAllowed; |
24 | } | 24 | } |
25 | 25 | ||
26 | export function isValidFileUrl(path: string) { | ||
27 | return path.startsWith('file') && existsSync(new URL(path)); | ||
28 | } | ||
29 | |||
26 | export async function openPath(folderName: string) { | 30 | export async function openPath(folderName: string) { |
27 | ensureDirSync(folderName); | 31 | ensureDirSync(folderName); |
28 | shell.openPath(folderName); | 32 | shell.openPath(folderName); |
diff --git a/src/helpers/validation-helpers.ts b/src/helpers/validation-helpers.ts index 23c297443..dfaf199ee 100644 --- a/src/helpers/validation-helpers.ts +++ b/src/helpers/validation-helpers.ts | |||
@@ -1,5 +1,6 @@ | |||
1 | import { defineMessages } from 'react-intl'; | 1 | import { defineMessages } from 'react-intl'; |
2 | import isEmail from 'validator/lib/isEmail'; | 2 | import isEmail from 'validator/lib/isEmail'; |
3 | import { isValidExternalURL, isValidFileUrl } from './url-helpers'; | ||
3 | 4 | ||
4 | const messages = defineMessages({ | 5 | const messages = defineMessages({ |
5 | required: { | 6 | required: { |
@@ -47,17 +48,17 @@ export function email({ field }) { | |||
47 | 48 | ||
48 | export function url({ field }) { | 49 | export function url({ field }) { |
49 | const value = field.value.trim(); | 50 | const value = field.value.trim(); |
50 | let isValid = false; | 51 | let isValid = true; |
51 | 52 | ||
52 | isValid = | 53 | if (value !== '') { |
53 | value !== '' | 54 | if (value.startsWith('http')) { |
54 | ? Boolean( | 55 | isValid = isValidExternalURL(value); |
55 | // eslint-disable-next-line unicorn/better-regex | 56 | } else if (value.startsWith('file')) { |
56 | /(^|[\s.:;?\-\]<(])(https?:\/\/[-\w;/?:@&=+$|_.!~*|'()[\]%#,☺]+[\w/#](\(\))?)(?=$|[\s',|().:;?\-[\]>)])/i.test( | 57 | isValid = isValidFileUrl(value); |
57 | value, | 58 | } else { |
58 | ), | 59 | isValid = false; |
59 | ) | 60 | } |
60 | : true; | 61 | } |
61 | 62 | ||
62 | return [ | 63 | return [ |
63 | isValid, | 64 | isValid, |