diff --git a/packages/frontend/src/ui/_common_/statusbar-rss.vue b/packages/frontend/src/ui/_common_/statusbar-rss.vue index 202972ed46..2ae8eb9889 100644 --- a/packages/frontend/src/ui/_common_/statusbar-rss.vue +++ b/packages/frontend/src/ui/_common_/statusbar-rss.vue @@ -53,7 +53,11 @@ const tick = () => { if (props.shuffle) { shuffle(feed.items); } - items.value = feed.items; + items.value = feed.items.filter((item) => { + if (!item.link) return false; + const itemUrl = new URL(item.link); + return ['http:', 'https:'].includes(itemUrl.protocol); + }); fetching.value = false; key.value++; }); diff --git a/packages/frontend/src/widgets/WidgetRss.vue b/packages/frontend/src/widgets/WidgetRss.vue index dae3b270d4..f561f204f6 100644 --- a/packages/frontend/src/widgets/WidgetRss.vue +++ b/packages/frontend/src/widgets/WidgetRss.vue @@ -81,7 +81,11 @@ const tick = () => { window.fetch(fetchEndpoint.value, {}) .then(res => res.json()) .then((feed: Misskey.entities.FetchRssResponse) => { - rawItems.value = feed.items; + rawItems.value = feed.items.filter((item) => { + if (!item.link) return false; + const itemUrl = new URL(item.link); + return ['http:', 'https:'].includes(itemUrl.protocol); + }); fetching.value = false; }); }; diff --git a/packages/frontend/src/widgets/WidgetRssTicker.vue b/packages/frontend/src/widgets/WidgetRssTicker.vue index 246b96fca0..2cff5a099b 100644 --- a/packages/frontend/src/widgets/WidgetRssTicker.vue +++ b/packages/frontend/src/widgets/WidgetRssTicker.vue @@ -121,7 +121,11 @@ const tick = () => { window.fetch(fetchEndpoint.value, {}) .then(res => res.json()) .then((feed: Misskey.entities.FetchRssResponse) => { - rawItems.value = feed.items; + rawItems.value = feed.items.filter((item) => { + if (!item.link) return false; + const itemUrl = new URL(item.link); + return ['http:', 'https:'].includes(itemUrl.protocol); + }); fetching.value = false; key.value++; });