From 2bf70c3659de62bf71008d3b5b7cbc52a0a4ce4c Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Thu, 20 Jul 2023 14:43:25 +0800 Subject: [PATCH] validate feed url before subscribing --- packages/web/pages/settings/rss/add.tsx | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/packages/web/pages/settings/rss/add.tsx b/packages/web/pages/settings/rss/add.tsx index 51bcdd0e7..7d68fd181 100644 --- a/packages/web/pages/settings/rss/add.tsx +++ b/packages/web/pages/settings/rss/add.tsx @@ -31,8 +31,22 @@ export default function AddRssFeed(): JSX.Element { const [feedUrl, setFeedUrl] = useState('') const subscribe = useCallback(async () => { + if (!feedUrl) { + setErrorMessage('Please enter a valid RSS feed URL') + return + } + + let normailizedUrl: string + // normalize the url + try { + normailizedUrl = new URL(feedUrl).toString() + } catch (e) { + setErrorMessage('Please enter a valid RSS feed URL') + return + } + const result = await subscribeMutation({ - url: feedUrl, + url: normailizedUrl, subscriptionType: SubscriptionType.RSS, }) @@ -80,12 +94,9 @@ export default function AddRssFeed(): JSX.Element { value={feedUrl} placeholder={'Enter the RSS feed URL here'} onChange={(e) => { - e.preventDefault() + setErrorMessage(undefined) setFeedUrl(e.target.value) }} - disabled={false} - hidden={false} - required={true} css={{ border: '1px solid $textNonessential', borderRadius: '8px',