From b0ecce5eab2a6d0eed3ade7c43e252ca9bac7edb Mon Sep 17 00:00:00 2001 From: kytwb <412895+kytwb@users.noreply.github.com> Date: Sat, 12 Jun 2021 19:51:28 +0200 Subject: Fix active Todos service behaviour (#1481) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Return false instead of null in isTodosServiceAdded * Resolve from TODOS_RECIPES_ID instead of hardcoded TODOS_RECIPE_ID * Fix TodosWebview width toggling when isTodosServiceActive * Add more todo service recipe IDs * Refactor todos state management * Moved todos service URL and recipe ID computation logic to todos/store * Simplified TodosWebview by delegating to the store for the URL and removing the (unused) payment logic * Made the todos service computation logic in the Service model depend on the logic in todos/store * Made ServicesStore depend on the todos service logic from the Service model * Todos appearance fixes * Hide double horizontal rules if todo settings are hidden due to an added todo service * Hide todos panel border when the panel is hidden or expanded * Make expanded todos panel obey sidebar width and vertical style settings * Make todos/store use isValidExternalURL * Harden isValidExternalURL against malformed URLs * Reduce todo URL string duplication in config.js Co-authored-by: Kristóf Marussy --- src/helpers/url-helpers.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/helpers/url-helpers.js') diff --git a/src/helpers/url-helpers.js b/src/helpers/url-helpers.js index 2f429a25c..972f9b79a 100644 --- a/src/helpers/url-helpers.js +++ b/src/helpers/url-helpers.js @@ -5,7 +5,12 @@ import { ALLOWED_PROTOCOLS } from '../config'; const debug = require('debug')('Ferdi:Helpers:url'); export function isValidExternalURL(url) { - const parsedUrl = new URL(url); + let parsedUrl; + try { + parsedUrl = new URL(url); + } catch (_) { + return false; + } const isAllowed = ALLOWED_PROTOCOLS.includes(parsedUrl.protocol); -- cgit v1.2.3-54-g00ecf