mirror of
https://github.com/ajnart/homarr.git
synced 2025-11-10 15:35:55 +01:00
🚑 Fix RSS widget crash
This commit is contained in:
@@ -53,6 +53,7 @@ export const Get = async (request: NextApiRequest, response: NextApiResponse) =>
|
|||||||
title: item.title ? decode(item.title) : undefined,
|
title: item.title ? decode(item.title) : undefined,
|
||||||
content: decode(item.content),
|
content: decode(item.content),
|
||||||
enclosure: createEnclosure(item),
|
enclosure: createEnclosure(item),
|
||||||
|
link: createLink(item),
|
||||||
}))
|
}))
|
||||||
.sort((a: { pubDate: number }, b: { pubDate: number }) => {
|
.sort((a: { pubDate: number }, b: { pubDate: number }) => {
|
||||||
if (!a.pubDate || !b.pubDate) {
|
if (!a.pubDate || !b.pubDate) {
|
||||||
@@ -70,6 +71,14 @@ export const Get = async (request: NextApiRequest, response: NextApiResponse) =>
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const createLink = (item: any) => {
|
||||||
|
if (item.link) {
|
||||||
|
return item.link;
|
||||||
|
}
|
||||||
|
|
||||||
|
return item.guid;
|
||||||
|
};
|
||||||
|
|
||||||
const createEnclosure = (item: any) => {
|
const createEnclosure = (item: any) => {
|
||||||
if (item.enclosure) {
|
if (item.enclosure) {
|
||||||
return item.enclosure;
|
return item.enclosure;
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ import {
|
|||||||
Title,
|
Title,
|
||||||
UnstyledButton,
|
UnstyledButton,
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { useElementSize } from '@mantine/hooks';
|
|
||||||
import {
|
import {
|
||||||
IconBulldozer,
|
IconBulldozer,
|
||||||
IconCalendarTime,
|
IconCalendarTime,
|
||||||
@@ -65,7 +64,6 @@ function RssTile({ widget }: RssTileProps) {
|
|||||||
);
|
);
|
||||||
const { classes } = useStyles();
|
const { classes } = useStyles();
|
||||||
const [loadingOverlayVisible, setLoadingOverlayVisible] = useState(false);
|
const [loadingOverlayVisible, setLoadingOverlayVisible] = useState(false);
|
||||||
const { ref, height } = useElementSize();
|
|
||||||
|
|
||||||
if (!data || isLoading) {
|
if (!data || isLoading) {
|
||||||
return (
|
return (
|
||||||
@@ -88,7 +86,7 @@ function RssTile({ widget }: RssTileProps) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Stack ref={ref} h="100%">
|
<Stack h="100%">
|
||||||
<LoadingOverlay visible={loadingOverlayVisible} />
|
<LoadingOverlay visible={loadingOverlayVisible} />
|
||||||
<Flex gap="md">
|
<Flex gap="md">
|
||||||
{data.feed.image ? (
|
{data.feed.image ? (
|
||||||
@@ -121,7 +119,7 @@ function RssTile({ widget }: RssTileProps) {
|
|||||||
<Card
|
<Card
|
||||||
key={index}
|
key={index}
|
||||||
withBorder
|
withBorder
|
||||||
component={Link}
|
component={Link ?? 'div'}
|
||||||
href={item.link}
|
href={item.link}
|
||||||
radius="md"
|
radius="md"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
@@ -181,12 +179,14 @@ function RssTile({ widget }: RssTileProps) {
|
|||||||
{data.feed.pubDate}
|
{data.feed.pubDate}
|
||||||
</Text>
|
</Text>
|
||||||
</Group>
|
</Group>
|
||||||
<Group>
|
{data.feed.lastBuildDate && (
|
||||||
<IconBulldozer size={14} />
|
<Group>
|
||||||
<Text color="dimmed" size="sm">
|
<IconBulldozer size={14} />
|
||||||
{data.feed.lastBuildDate}
|
<Text color="dimmed" size="sm">
|
||||||
</Text>
|
{data.feed.lastBuildDate}
|
||||||
</Group>
|
</Text>
|
||||||
|
</Group>
|
||||||
|
)}
|
||||||
{data.feed.feedUrl && (
|
{data.feed.feedUrl && (
|
||||||
<Group spacing="sm">
|
<Group spacing="sm">
|
||||||
<IconSpeakerphone size={14} />
|
<IconSpeakerphone size={14} />
|
||||||
|
|||||||
Reference in New Issue
Block a user