mirror of
https://github.com/lumehq/lume.git
synced 2025-09-18 14:41:47 +02:00
add empty state for feed page
This commit is contained in:
@@ -30,30 +30,33 @@ export function Root() {
|
|||||||
async function fetchNotes() {
|
async function fetchNotes() {
|
||||||
try {
|
try {
|
||||||
const follows = JSON.parse(account.follows);
|
const follows = JSON.parse(account.follows);
|
||||||
let since: number;
|
|
||||||
|
|
||||||
if (totalNotes === 0 || lastLogin === 0) {
|
if (follows.length > 0) {
|
||||||
since = dateToUnix(getHourAgo(48, now.current));
|
let since: number;
|
||||||
} else {
|
|
||||||
since = lastLogin;
|
|
||||||
}
|
|
||||||
|
|
||||||
const filter: NDKFilter = {
|
if (totalNotes === 0 || lastLogin === 0) {
|
||||||
kinds: [1, 6],
|
since = dateToUnix(getHourAgo(48, now.current));
|
||||||
authors: follows,
|
} else {
|
||||||
since: since,
|
since = lastLogin;
|
||||||
};
|
}
|
||||||
|
|
||||||
const events = await prefetchEvents(ndk, filter);
|
const filter: NDKFilter = {
|
||||||
for (const event of events) {
|
kinds: [1, 6],
|
||||||
await createNote(
|
authors: follows,
|
||||||
event.id,
|
since: since,
|
||||||
event.pubkey,
|
};
|
||||||
event.kind,
|
|
||||||
event.tags,
|
const events = await prefetchEvents(ndk, filter);
|
||||||
event.content,
|
for (const event of events) {
|
||||||
event.created_at
|
await createNote(
|
||||||
);
|
event.id,
|
||||||
|
event.pubkey,
|
||||||
|
event.kind,
|
||||||
|
event.tags,
|
||||||
|
event.content,
|
||||||
|
event.created_at
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -69,6 +72,7 @@ export function Root() {
|
|||||||
authors: [account.pubkey],
|
authors: [account.pubkey],
|
||||||
since: lastLogin,
|
since: lastLogin,
|
||||||
};
|
};
|
||||||
|
|
||||||
const receiveFilter: NDKFilter = {
|
const receiveFilter: NDKFilter = {
|
||||||
kinds: [4],
|
kinds: [4],
|
||||||
'#p': [account.pubkey],
|
'#p': [account.pubkey],
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
import { useInfiniteQuery, useMutation, useQueryClient } from '@tanstack/react-query';
|
import { useInfiniteQuery, useMutation, useQueryClient } from '@tanstack/react-query';
|
||||||
import { useVirtualizer } from '@tanstack/react-virtual';
|
import { useVirtualizer } from '@tanstack/react-virtual';
|
||||||
import { useEffect, useRef } from 'react';
|
import { useEffect, useRef } from 'react';
|
||||||
|
import { Link } from 'react-router-dom';
|
||||||
|
|
||||||
import { getNotesByAuthors, removeBlock } from '@libs/storage';
|
import { getNotesByAuthors, removeBlock } from '@libs/storage';
|
||||||
|
|
||||||
@@ -79,6 +80,16 @@ export function FeedBlock({ params }: { params: any }) {
|
|||||||
<NoteSkeleton />
|
<NoteSkeleton />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
) : itemsVirtualizer.length === 0 ? (
|
||||||
|
<div className="px-3 py-1.5">
|
||||||
|
<div className="rounded-xl border-t border-zinc-800/50 bg-zinc-900 px-3 py-6">
|
||||||
|
<div className="flex flex-col items-center gap-4">
|
||||||
|
<p className="text-center text-sm text-zinc-300">
|
||||||
|
Not found any posts from last 48 hours
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<div
|
<div
|
||||||
className="relative w-full"
|
className="relative w-full"
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
import { useInfiniteQuery } from '@tanstack/react-query';
|
import { useInfiniteQuery } from '@tanstack/react-query';
|
||||||
import { useVirtualizer } from '@tanstack/react-virtual';
|
import { useVirtualizer } from '@tanstack/react-virtual';
|
||||||
import { useEffect, useRef } from 'react';
|
import { useEffect, useRef } from 'react';
|
||||||
|
import { Link } from 'react-router-dom';
|
||||||
|
|
||||||
import { useNewsfeed } from '@app/space/hooks/useNewsfeed';
|
import { useNewsfeed } from '@app/space/hooks/useNewsfeed';
|
||||||
|
|
||||||
@@ -104,6 +105,24 @@ export function FollowingBlock() {
|
|||||||
<NoteSkeleton />
|
<NoteSkeleton />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
) : itemsVirtualizer.length === 0 ? (
|
||||||
|
<div className="px-3 py-1.5">
|
||||||
|
<div className="rounded-xl border-t border-zinc-800/50 bg-zinc-900 px-3 py-6">
|
||||||
|
<div className="flex flex-col items-center gap-4">
|
||||||
|
<p className="text-center text-sm text-zinc-300">
|
||||||
|
You not have any posts to see yet
|
||||||
|
<br />
|
||||||
|
Follow more people to have more fun.
|
||||||
|
</p>
|
||||||
|
<Link
|
||||||
|
to="/app/trending"
|
||||||
|
className="inline-flex w-max rounded bg-fuchsia-500 px-2.5 py-1.5 text-sm hover:bg-fuchsia-600"
|
||||||
|
>
|
||||||
|
Trending
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<div
|
<div
|
||||||
className="relative w-full"
|
className="relative w-full"
|
||||||
|
Reference in New Issue
Block a user