diff --git a/packages/@columns/timeline/src/home.tsx b/packages/@columns/timeline/src/home.tsx index 7c542baa..f5038762 100644 --- a/packages/@columns/timeline/src/home.tsx +++ b/packages/@columns/timeline/src/home.tsx @@ -32,9 +32,7 @@ export function HomeRoute({ colKey }: { colKey: string }) { const events = await ark.getInfiniteEvents({ filter: { kinds: [NDKKind.Text, NDKKind.Repost], - authors: !storage.account.contacts.length - ? [storage.account.pubkey] - : storage.account.contacts, + authors: storage.account.contacts, }, limit: FETCH_LIMIT, pageParam, @@ -99,7 +97,7 @@ export function HomeRoute({ colKey }: { colKey: string }) { type="button" onClick={() => fetchNextPage()} disabled={!hasNextPage || isFetchingNextPage} - className="inline-flex h-10 w-max items-center justify-center gap-2 rounded-full bg-blue-500 px-6 font-medium text-white hover:bg-blue-600 focus:outline-none" + className="inline-flex h-10 w-40 items-center justify-center gap-2 rounded-full bg-blue-500 font-medium text-white hover:bg-blue-600 focus:outline-none" > {isFetchingNextPage ? ( diff --git a/packages/ark/src/ark.ts b/packages/ark/src/ark.ts index d3c3313a..574cbff6 100644 --- a/packages/ark/src/ark.ts +++ b/packages/ark/src/ark.ts @@ -372,6 +372,8 @@ export class Ark { signal?: AbortSignal; dedup?: boolean; }) { + if (!filter?.authors?.length) return []; + const rootIds = new Set(); const dedupQueue = new Set(); const connectedRelays = this.ndk.pool diff --git a/packages/ark/src/components/note/mentions/note.tsx b/packages/ark/src/components/note/mentions/note.tsx index 522f6a34..c21bc143 100644 --- a/packages/ark/src/components/note/mentions/note.tsx +++ b/packages/ark/src/components/note/mentions/note.tsx @@ -40,7 +40,7 @@ export const MentionNote = memo(function MentionNote({ return ( - + diff --git a/packages/ark/src/components/note/preview/image.tsx b/packages/ark/src/components/note/preview/image.tsx index 2743b7ff..de99f37e 100644 --- a/packages/ark/src/components/note/preview/image.tsx +++ b/packages/ark/src/components/note/preview/image.tsx @@ -1,4 +1,5 @@ import { CheckCircleIcon, DownloadIcon } from "@lume/icons"; +import { getImageMeta } from "@lume/utils"; import { downloadDir } from "@tauri-apps/api/path"; import { Window } from "@tauri-apps/api/window"; import { download } from "@tauri-apps/plugin-upload"; @@ -21,8 +22,15 @@ export function ImagePreview({ url }: { url: string }) { } }; - const open = () => { - return new Window("image-viewer", { url, title: "Image Viewer" }); + const open = async () => { + const name = new URL(url).pathname.split("/").pop(); + const image = await getImageMeta(url); + return new Window("image-viewer", { + url, + title: name, + width: image.width, + height: image.height, + }); }; const fallback = (event: SyntheticEvent) => { diff --git a/packages/ui/src/navigation.tsx b/packages/ui/src/navigation.tsx index ffdcaa21..ac405479 100644 --- a/packages/ui/src/navigation.tsx +++ b/packages/ui/src/navigation.tsx @@ -10,8 +10,8 @@ import { RelayIcon, SearchIcon, } from "@lume/icons"; +import { cn } from "@lume/utils"; import { Link, NavLink } from "react-router-dom"; -import { twMerge } from "tailwind-merge"; import { ActiveAccount } from "./account/active"; export function Navigation() { @@ -26,7 +26,7 @@ export function Navigation() { {({ isActive }) => ( <> ( <> ( <> ( <> ) { return ( ) { return ( ) { useContext(AppWindowContext); return ( - + ) { { + return new Promise((resolve, reject) => { + const img = new Image(); + img.onload = () => resolve(img); + img.onerror = () => reject(); + img.src = url; + }); +}