fix: add missing request handler for rss feeds (#2006)

* fix: add missing request handler for rss feeds

* fix: ci issues
This commit is contained in:
Meier Lukas
2025-01-22 18:23:49 +01:00
committed by GitHub
parent b413e2ec7d
commit 99c8e5b609
9 changed files with 186 additions and 159 deletions

View File

@@ -9,41 +9,26 @@ import { clientApi } from "@homarr/api/client";
import type { WidgetComponentProps } from "../definition";
import classes from "./component.module.scss";
export default function RssFeed({ options, itemId }: WidgetComponentProps<"rssFeed">) {
const [rssFeeds] = clientApi.widget.rssFeed.getFeeds.useSuspenseQuery(
export default function RssFeed({ options }: WidgetComponentProps<"rssFeed">) {
const [feedEntries] = clientApi.widget.rssFeed.getFeeds.useSuspenseQuery(
{
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
itemId: itemId!,
urls: options.feedUrls,
maximumAmountPosts: typeof options.maximumAmountPosts === "number" ? options.maximumAmountPosts : 100,
},
{
refetchOnMount: false,
refetchOnWindowFocus: false,
refetchOnReconnect: false,
retry: false,
select(data) {
return data?.data ?? [];
},
},
);
const entries = rssFeeds
.filter((feedGroup) => feedGroup.feed.entries !== undefined)
.flatMap((feedGroup) => feedGroup.feed.entries)
.filter((entry) => entry !== undefined)
.sort((entryA, entryB) => {
if (!entryA.published || !entryB.published) {
return -1;
}
return new Date(entryB.published).getTime() - new Date(entryA.published).getTime();
})
.slice(0, options.maximumAmountPosts as number);
const languageDir = options.enableRtl ? "RTL" : "LTR";
return (
<ScrollArea className="scroll-area-w100" w="100%" p="4cqmin">
<Stack w={"100%"} gap="4cqmin">
{entries.map((feedEntry) => (
{feedEntries.map((feedEntry) => (
<Card
key={feedEntry.id}
withBorder