From 717c3e17dfe6002c8fb526396490f6fbf7977bd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=A8=E5=AE=AE=E8=93=AE?= <123083837+reyamir@users.noreply.github.com> Date: Wed, 26 Jun 2024 14:51:50 +0700 Subject: [PATCH] Event Subscriptions (#218) * feat: improve create column command * refactor: thread * feat: add window virtualized to event screen * chore: update deps * fix: window decoration * feat: improve mention ntoe * feat: add subscription to event screen --- apps/desktop2/index.html | 22 +- apps/desktop2/package.json | 24 +- apps/desktop2/src/app.tsx | 4 +- apps/desktop2/src/components/column.tsx | 10 +- .../src/components/note/buttons/reply.tsx | 2 +- .../src/components/note/buttons/repost.tsx | 4 +- .../src/components/note/buttons/zap.tsx | 4 +- .../src/components/note/mentions/note.tsx | 87 +- .../src/components/note/preview/image.tsx | 2 +- .../src/components/note/preview/images.tsx | 7 +- .../src/components/note/preview/videos.tsx | 2 + apps/desktop2/src/components/text.tsx | 2 +- apps/desktop2/src/routes/$account.tsx | 12 +- apps/desktop2/src/routes/__root.tsx | 2 + apps/desktop2/src/routes/events/$eventId.tsx | 82 -- apps/desktop2/src/routes/events/$id.tsx | 143 ++ .../src/routes/events/-components/child.tsx | 41 + .../src/routes/events/-components/parent.tsx | 41 + .../src/routes/events/-components/reply.tsx | 36 - .../routes/events/-components/subReply.tsx | 26 - apps/desktop2/src/routes/index.tsx | 6 +- apps/web/package.json | 4 +- package.json | 4 +- packages/icons/package.json | 2 +- packages/system/package.json | 6 +- packages/system/src/commands.ts | 1190 +++++++++------- packages/system/src/event.ts | 128 +- packages/system/src/window.ts | 10 +- packages/types/package.json | 2 +- packages/ui/package.json | 2 +- packages/utils/package.json | 2 +- pnpm-lock.yaml | 1263 +++++++---------- src-tauri/Cargo.lock | 553 ++++---- src-tauri/capabilities/main.json | 1 + src-tauri/gen/schemas/acl-manifests.json | 2 +- src-tauri/gen/schemas/capabilities.json | 2 +- src-tauri/gen/schemas/desktop-schema.json | 128 +- src-tauri/gen/schemas/macOS-schema.json | 128 +- src-tauri/src/commands/window.rs | 61 +- src-tauri/src/fns.rs | 3 +- src-tauri/src/main.rs | 58 +- src-tauri/src/nostr/event.rs | 78 +- src-tauri/src/nostr/keys.rs | 456 +++--- src-tauri/src/nostr/utils.rs | 4 +- src-tauri/tauri.macos.conf.json | 8 +- 45 files changed, 2504 insertions(+), 2150 deletions(-) delete mode 100644 apps/desktop2/src/routes/events/$eventId.tsx create mode 100644 apps/desktop2/src/routes/events/$id.tsx create mode 100644 apps/desktop2/src/routes/events/-components/child.tsx create mode 100644 apps/desktop2/src/routes/events/-components/parent.tsx delete mode 100644 apps/desktop2/src/routes/events/-components/reply.tsx delete mode 100644 apps/desktop2/src/routes/events/-components/subReply.tsx diff --git a/apps/desktop2/index.html b/apps/desktop2/index.html index 6bad771c..9251ee5a 100644 --- a/apps/desktop2/index.html +++ b/apps/desktop2/index.html @@ -1,14 +1,14 @@ - - - - Lume Desktop - - -
- - + + + + Lume Desktop + + +
+ + diff --git a/apps/desktop2/package.json b/apps/desktop2/package.json index 4a8505ec..d6de5b43 100644 --- a/apps/desktop2/package.json +++ b/apps/desktop2/package.json @@ -14,16 +14,16 @@ "@lume/system": "workspace:^", "@lume/ui": "workspace:^", "@lume/utils": "workspace:^", - "@radix-ui/react-avatar": "^1.0.4", - "@radix-ui/react-checkbox": "^1.0.4", - "@radix-ui/react-popover": "^1.0.7", + "@radix-ui/react-avatar": "^1.1.0", + "@radix-ui/react-checkbox": "^1.1.0", + "@radix-ui/react-popover": "^1.1.1", "@radix-ui/react-scroll-area": "^1.1.0", - "@radix-ui/react-switch": "^1.0.3", - "@radix-ui/react-tabs": "^1.0.4", - "@radix-ui/react-tooltip": "^1.0.7", - "@tanstack/query-persist-client-core": "^5.45.0", - "@tanstack/react-query": "^5.45.0", - "@tanstack/react-router": "^1.38.1", + "@radix-ui/react-switch": "^1.1.0", + "@radix-ui/react-tabs": "^1.1.0", + "@radix-ui/react-tooltip": "^1.1.1", + "@tanstack/query-persist-client-core": "^5.48.0", + "@tanstack/react-query": "^5.48.0", + "@tanstack/react-router": "^1.40.0", "embla-carousel-react": "^8.1.5", "i18next": "^23.11.5", "i18next-resources-to-backend": "^1.2.1", @@ -45,15 +45,15 @@ "@lume/tailwindcss": "workspace:^", "@lume/tsconfig": "workspace:^", "@lume/types": "workspace:^", - "@tanstack/router-devtools": "^1.38.1", - "@tanstack/router-vite-plugin": "^1.38.0", + "@tanstack/router-devtools": "^1.40.0", + "@tanstack/router-vite-plugin": "^1.39.13", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", "@vitejs/plugin-react-swc": "^3.7.0", "autoprefixer": "^10.4.19", "postcss": "^8.4.38", "tailwindcss": "^3.4.4", - "typescript": "^5.4.5", + "typescript": "^5.5.2", "vite": "^5.3.1", "vite-plugin-top-level-await": "^1.4.1", "vite-tsconfig-paths": "^4.3.2" diff --git a/apps/desktop2/src/app.tsx b/apps/desktop2/src/app.tsx index 400421c8..bdd3cbe0 100644 --- a/apps/desktop2/src/app.tsx +++ b/apps/desktop2/src/app.tsx @@ -1,15 +1,17 @@ import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { RouterProvider, createRouter } from "@tanstack/react-router"; import { StrictMode } from "react"; +import { type } from "@tauri-apps/plugin-os"; import ReactDOM from "react-dom/client"; import { routeTree } from "./router.gen"; // auto generated file import "./app.css"; // Set up a Router instance const queryClient = new QueryClient(); +const platform = type(); const router = createRouter({ routeTree, - context: { queryClient }, + context: { queryClient, platform }, Wrap: ({ children }) => { return ( {children} diff --git a/apps/desktop2/src/components/column.tsx b/apps/desktop2/src/components/column.tsx index ceef4f65..74a655e7 100644 --- a/apps/desktop2/src/components/column.tsx +++ b/apps/desktop2/src/components/column.tsx @@ -60,15 +60,17 @@ export function Column({ const rect = container.current.getBoundingClientRect(); const url = `${column.content}?account=${account}&label=${column.label}&name=${column.name}`; - // create new webview - invoke("create_column", { + const prop = { label: webviewLabel, x: rect.x, y: rect.y, width: rect.width, height: rect.height, url, - }).then(() => { + }; + + // create new webview + invoke("create_column", { column: prop }).then(() => { console.log("created: ", webviewLabel); setIsCreated(true); }); @@ -87,7 +89,7 @@ export function Column({ className={cn( "flex flex-col w-full h-full rounded-xl", column.label !== "open" - ? "bg-black/5 dark:bg-white/5 backdrop-blur-sm" + ? "bg-black/5 dark:bg-white/10 backdrop-blur" : "", )} > diff --git a/apps/desktop2/src/components/note/buttons/reply.tsx b/apps/desktop2/src/components/note/buttons/reply.tsx index 04736e39..96601f5b 100644 --- a/apps/desktop2/src/components/note/buttons/reply.tsx +++ b/apps/desktop2/src/components/note/buttons/reply.tsx @@ -17,7 +17,7 @@ export function NoteReply({ large = false }: { large?: boolean }) { className={cn( "inline-flex items-center justify-center text-neutral-800 dark:text-neutral-200", large - ? "rounded-full bg-neutral-100 dark:bg-white/10 h-7 gap-1.5 w-24 text-sm font-medium hover:text-blue-500 hover:bg-neutral-200 dark:hover:bg-white/20" + ? "rounded-full h-7 gap-1.5 w-20 text-sm font-medium hover:bg-black/10 dark:hover:bg-white/10" : "size-7", )} > diff --git a/apps/desktop2/src/components/note/buttons/repost.tsx b/apps/desktop2/src/components/note/buttons/repost.tsx index 675d940b..223f7a8e 100644 --- a/apps/desktop2/src/components/note/buttons/repost.tsx +++ b/apps/desktop2/src/components/note/buttons/repost.tsx @@ -64,9 +64,9 @@ export function NoteRepost({ large = false }: { large?: boolean }) { type="button" onClick={(e) => showContextMenu(e)} className={cn( - "inline-flex items-center justify-center text-neutral-800 dark:text-neutral-200 rounded-full", + "inline-flex items-center justify-center text-neutral-800 dark:text-neutral-200", large - ? "bg-neutral-100 dark:bg-white/10 h-7 gap-1.5 w-24 text-sm font-medium hover:text-blue-500 hover:bg-neutral-200 dark:hover:bg-white/20" + ? "rounded-full h-7 gap-1.5 w-24 text-sm font-medium hover:bg-black/10 dark:hover:bg-white/10" : "size-7", )} > diff --git a/apps/desktop2/src/components/note/buttons/zap.tsx b/apps/desktop2/src/components/note/buttons/zap.tsx index 37ff6ddf..aea47c10 100644 --- a/apps/desktop2/src/components/note/buttons/zap.tsx +++ b/apps/desktop2/src/components/note/buttons/zap.tsx @@ -13,11 +13,11 @@ export function NoteZap({ large = false }: { large?: boolean }) { return ( +
+
+ + + +
+ + ยท + +
+
+
+
+ {data.content}
- ) : ( -
- )} + {openable ? ( +
+ +
+ ) : ( +
+ )} +
); } diff --git a/apps/desktop2/src/components/note/preview/image.tsx b/apps/desktop2/src/components/note/preview/image.tsx index 48a0fe0d..7d1d6791 100644 --- a/apps/desktop2/src/components/note/preview/image.tsx +++ b/apps/desktop2/src/components/note/preview/image.tsx @@ -35,7 +35,7 @@ export function ImagePreview({ url }: { url: string }) { loading="lazy" decoding="async" style={{ contentVisibility: "auto" }} - className="max-h-[600px] w-auto object-cover rounded-lg outline outline-1 -outline-offset-1 outline-black/15" + className="max-h-[400px] max-w-[400px] h-auto w-auto object-cover rounded-lg outline outline-1 -outline-offset-1 outline-black/15" onClick={() => open(url)} onKeyDown={() => open(url)} onError={({ currentTarget }) => { diff --git a/apps/desktop2/src/components/note/preview/images.tsx b/apps/desktop2/src/components/note/preview/images.tsx index 9b657bf3..dac869f0 100644 --- a/apps/desktop2/src/components/note/preview/images.tsx +++ b/apps/desktop2/src/components/note/preview/images.tsx @@ -97,7 +97,7 @@ export function Images({ urls }: { urls: string[] }) { return (
-
+
{imageUrls.map((url, index) => (
-
+