mirror of
https://github.com/luminous-devs/lume.git
synced 2024-09-18 11:13:30 +00:00
updated feed content and global newsfeed
This commit is contained in:
parent
0b28bf4ee8
commit
674377c11a
@ -2,16 +2,15 @@
|
|||||||
import ImageCard from '@components/note/content/preview/imageCard';
|
import ImageCard from '@components/note/content/preview/imageCard';
|
||||||
import Video from '@components/note/content/preview/video';
|
import Video from '@components/note/content/preview/video';
|
||||||
|
|
||||||
import { MarkdownPreviewProps } from '@uiw/react-markdown-preview';
|
|
||||||
import dynamic from 'next/dynamic';
|
import dynamic from 'next/dynamic';
|
||||||
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
||||||
import ReactPlayer from 'react-player';
|
import ReactPlayer from 'react-player';
|
||||||
|
|
||||||
const MarkdownPreview = dynamic<MarkdownPreviewProps>(() => import('@uiw/react-markdown-preview'), {
|
const MarkdownPreview = dynamic(() => import('@uiw/react-markdown-preview'), {
|
||||||
ssr: false,
|
ssr: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
export default function Content({ data }: { data: string }) {
|
export default function Content({ data }: { data: any }) {
|
||||||
const [preview, setPreview] = useState({});
|
const [preview, setPreview] = useState({});
|
||||||
|
|
||||||
const content = useRef(data);
|
const content = useRef(data);
|
||||||
@ -25,8 +24,15 @@ export default function Content({ data }: { data: string }) {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (urls !== null && urls.length > 0) {
|
if (urls !== null && urls.length > 0) {
|
||||||
const parseURL = new URL(urls[0]);
|
// #TODO: support multiple url
|
||||||
|
let url = urls[0];
|
||||||
|
// make sure url alway have http://
|
||||||
|
if (!/^https?:\/\//i.test(url)) {
|
||||||
|
url = 'http://' + url;
|
||||||
|
}
|
||||||
|
// parse url with new URL();
|
||||||
|
const parseURL = new URL(url, 'https://uselume.xyz');
|
||||||
|
// #TODO performance test
|
||||||
if (parseURL.pathname.toLowerCase().match(/\.(jpg|jpeg|gif|png|webp)$/)) {
|
if (parseURL.pathname.toLowerCase().match(/\.(jpg|jpeg|gif|png|webp)$/)) {
|
||||||
// add image to preview
|
// add image to preview
|
||||||
setPreview({ image: parseURL.href, type: 'image' });
|
setPreview({ image: parseURL.href, type: 'image' });
|
||||||
@ -35,7 +41,7 @@ export default function Content({ data }: { data: string }) {
|
|||||||
// add video to preview
|
// add video to preview
|
||||||
setPreview({ url: parseURL.href, type: 'video' });
|
setPreview({ url: parseURL.href, type: 'video' });
|
||||||
content.current = content.current.replace(parseURL.href, '');
|
content.current = content.current.replace(parseURL.href, '');
|
||||||
} // #TODO: support multiple preview
|
} // #TODO: support multiple previ3ew
|
||||||
}
|
}
|
||||||
}, [urls]);
|
}, [urls]);
|
||||||
|
|
||||||
|
@ -21,9 +21,10 @@ export default function Page() {
|
|||||||
|
|
||||||
const { events } = useNostrEvents({
|
const { events } = useNostrEvents({
|
||||||
filter: {
|
filter: {
|
||||||
|
until: dateToUnix(now.current),
|
||||||
since: dateToUnix(hoursAgo(1, now.current)),
|
since: dateToUnix(hoursAgo(1, now.current)),
|
||||||
kinds: [1],
|
kinds: [1],
|
||||||
limit: 100,
|
limit: 10,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user