From ddbbcf41b55ae573f8e601c7c8fcb0b446597b3b Mon Sep 17 00:00:00 2001 From: reya Date: Sat, 30 Dec 2023 09:02:39 +0700 Subject: [PATCH] chore: polish some components --- packages/@columns/timeline/src/home.tsx | 6 ++---- packages/ark/src/ark.ts | 2 ++ .../ark/src/components/note/mentions/note.tsx | 2 +- .../ark/src/components/note/preview/image.tsx | 12 ++++++++++-- packages/ui/src/navigation.tsx | 18 +++++++++--------- packages/ui/src/titlebar/components/button.tsx | 4 ++-- packages/ui/src/titlebar/controls/gnome.tsx | 7 ++----- packages/ui/src/titlebar/controls/macos.tsx | 4 ++-- packages/ui/src/titlebar/controls/windows.tsx | 6 +++--- packages/utils/index.ts | 1 + packages/utils/src/image.ts | 10 ++++++++++ 11 files changed, 44 insertions(+), 28 deletions(-) create mode 100644 packages/utils/src/image.ts 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; + }); +}