aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLibravatar Danny Qiu <dqiu55@gmail.com>2020-05-01 05:25:56 -0700
committerLibravatar GitHub <noreply@github.com>2020-05-01 12:25:56 +0000
commitb8b42b8084442cb7ee2ab77a457c46b8eedc21bc (patch)
treec0754ab4dcae246c57ac3c662953723bbfb32018 /src
parentRefactor locking feature (#693) (diff)
downloadferdium-app-b8b42b8084442cb7ee2ab77a457c46b8eedc21bc.tar.gz
ferdium-app-b8b42b8084442cb7ee2ab77a457c46b8eedc21bc.tar.zst
ferdium-app-b8b42b8084442cb7ee2ab77a457c46b8eedc21bc.zip
Add Google Tasks to Todo providers (#695)
Also enhance URL validation
Diffstat (limited to 'src')
-rw-r--r--src/config.js1
-rw-r--r--src/features/todos/components/TodosWebview.js16
2 files changed, 10 insertions, 7 deletions
diff --git a/src/config.js b/src/config.js
index 2467ab706..b8af16419 100644
--- a/src/config.js
+++ b/src/config.js
@@ -60,6 +60,7 @@ export const TODO_APPS = {
60 'https://app.nozbe.com/#login': 'Nozbe', 60 'https://app.nozbe.com/#login': 'Nozbe',
61 'https://www.rememberthemilk.com/login/': 'Remember The Milk', 61 'https://www.rememberthemilk.com/login/': 'Remember The Milk',
62 'https://desktop.any.do/': 'Any.do', 62 'https://desktop.any.do/': 'Any.do',
63 'https://tasks.google.com/embed/?origin=https%3A%2F%2Fcalendar.google.com&fullWidth=1': 'Google Tasks',
63 isUsingCustomTodoService: 'Other service', 64 isUsingCustomTodoService: 'Other service',
64}; 65};
65 66
diff --git a/src/features/todos/components/TodosWebview.js b/src/features/todos/components/TodosWebview.js
index 2626186e9..663f1e48d 100644
--- a/src/features/todos/components/TodosWebview.js
+++ b/src/features/todos/components/TodosWebview.js
@@ -14,13 +14,15 @@ import UpgradeButton from '../../../components/ui/UpgradeButton';
14 14
15// NOTE: https://stackoverflow.com/questions/5717093/check-if-a-javascript-string-is-a-url 15// NOTE: https://stackoverflow.com/questions/5717093/check-if-a-javascript-string-is-a-url
16function validURL(str) { 16function validURL(str) {
17 const pattern = new RegExp('^(https?:\\/\\/)?' // protocol 17 let url;
18 + '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' // domain name 18
19 + '((\\d{1,3}\\.){3}\\d{1,3}))' // OR ip (v4) address 19 try {
20 + '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' // port and path 20 url = new URL(str);
21 + '(\\?[;&a-z\\d%_.~+=-]*)?' // query string 21 } catch (_) {
22 + '(\\#[-a-z\\d_]*)?$', 'i'); // fragment locator 22 return false;
23 return !!pattern.test(str); 23 }
24
25 return url.protocol === 'http:' || url.protocol === 'https:';
24} 26}
25 27
26const messages = defineMessages({ 28const messages = defineMessages({