(null);
@@ -36,7 +39,7 @@ export function Accounts() {
}
function Inactive({ pubkey }: { pubkey: string }) {
- const ark = useArk();
+ const { ark } = useRouteContext({ strict: false });
const navigate = useNavigate();
const changeAccount = async (npub: string) => {
diff --git a/apps/desktop2/src/components/avatarUploader.tsx b/apps/desktop2/src/components/avatarUploader.tsx
index 475d024f..f87fd3af 100644
--- a/apps/desktop2/src/components/avatarUploader.tsx
+++ b/apps/desktop2/src/components/avatarUploader.tsx
@@ -1,6 +1,6 @@
-import { useArk } from "@lume/ark";
import { LoaderIcon } from "@lume/icons";
import { cn } from "@lume/utils";
+import { useRouteContext } from "@tanstack/react-router";
import { Dispatch, ReactNode, SetStateAction, useState } from "react";
import { toast } from "sonner";
@@ -13,7 +13,7 @@ export function AvatarUploader({
children: ReactNode;
className?: string;
}) {
- const ark = useArk();
+ const { ark } = useRouteContext({ strict: false });
const [loading, setLoading] = useState(false);
const uploadAvatar = async () => {
diff --git a/apps/desktop2/src/components/backup.tsx b/apps/desktop2/src/components/backup.tsx
deleted file mode 100644
index 1f2fa91c..00000000
--- a/apps/desktop2/src/components/backup.tsx
+++ /dev/null
@@ -1,121 +0,0 @@
-import { ArrowRightIcon, CancelIcon } from "@lume/icons";
-import * as Dialog from "@radix-ui/react-dialog";
-import { Link, useParams } from "@tanstack/react-router";
-import { invoke } from "@tauri-apps/api/core";
-import { useState } from "react";
-import { toast } from "sonner";
-
-export function BackupDialog() {
- // @ts-ignore, magic!!!
- const { account } = useParams({ strict: false });
-
- const [key, setKey] = useState(null);
- const [passphase, setPassphase] = useState("");
- const [loading, setLoading] = useState(false);
-
- const encryptKey = async () => {
- try {
- setLoading(true);
-
- const encrypted: string = await invoke("get_encrypted_key", {
- npub: account,
- password: passphase,
- });
-
- if (encrypted) {
- setKey(encrypted);
- }
-
- setLoading(false);
- } catch (e) {
- setLoading(false);
- toast.error(String(e));
- }
- };
-
- return (
-
-
-
-
-
-
-
-
-
-
- Esc
-
-
-
-
-
- This is your account key
-
-
- It's use for login to Lume or other Nostr clients. You will lost
- access to your account if you lose this key.
-
-
-
-
-
-
- setPassphase(e.target.value)}
- className="h-11 w-full resize-none rounded-lg border-transparent bg-neutral-100 placeholder:text-neutral-600 focus:border-blue-500 focus:ring focus:ring-blue-100 dark:bg-neutral-900 dark:focus:ring-blue-900"
- />
-
-
- {key ? (
-
-
-
-
- ) : null}
-
-
- {!key ? (
-
- ) : (
-
- I've safely store my account key
-
- )}
-
-
-
-
-
- );
-}
diff --git a/apps/desktop2/src/components/balance.tsx b/apps/desktop2/src/components/balance.tsx
index 87f96408..f31adaba 100644
--- a/apps/desktop2/src/components/balance.tsx
+++ b/apps/desktop2/src/components/balance.tsx
@@ -1,12 +1,11 @@
-import { useArk } from "@lume/ark";
import { User } from "@lume/ui";
import { getBitcoinDisplayValues } from "@lume/utils";
+import { useRouteContext } from "@tanstack/react-router";
import { useEffect, useMemo, useState } from "react";
export function Balance({ account }: { account: string }) {
+ const { ark } = useRouteContext({ strict: false });
const [balance, setBalance] = useState(0);
-
- const ark = useArk();
const value = useMemo(() => getBitcoinDisplayValues(balance), [balance]);
useEffect(() => {
diff --git a/apps/desktop2/src/components/login.tsx b/apps/desktop2/src/components/login.tsx
deleted file mode 100644
index 9f245eeb..00000000
--- a/apps/desktop2/src/components/login.tsx
+++ /dev/null
@@ -1,125 +0,0 @@
-import { useArk } from "@lume/ark";
-import { ArrowRightIcon, CancelIcon } from "@lume/icons";
-import * as Dialog from "@radix-ui/react-dialog";
-import { useNavigate } from "@tanstack/react-router";
-import { useState } from "react";
-import { toast } from "sonner";
-
-export function LoginDialog() {
- const ark = useArk();
- const navigate = useNavigate();
-
- const [nsec, setNsec] = useState("");
- const [passphase, setPassphase] = useState("");
-
- const login = async () => {
- try {
- if (!nsec.length) {
- return toast.info("You must enter a valid nsec or ncrypto");
- }
-
- if (nsec.startsWith("ncrypto") && !passphase.length) {
- return toast.warning("You must provide a passphase for ncrypto key");
- }
-
- const save = await ark.save_account(nsec, passphase);
-
- if (save) {
- navigate({ to: "/", search: { guest: false } });
- }
- } catch (e) {
- toast.error(String(e));
- }
- };
-
- return (
-
-
-
-
-
-
-
-
-
-
- Esc
-
-
-
-
-
Add new account with
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
diff --git a/apps/desktop2/src/components/repost.tsx b/apps/desktop2/src/components/repost.tsx
index b956256e..97ee0ac7 100644
--- a/apps/desktop2/src/components/repost.tsx
+++ b/apps/desktop2/src/components/repost.tsx
@@ -3,8 +3,8 @@ import { Event } from "@lume/types";
import { cn } from "@lume/utils";
import { useQuery } from "@tanstack/react-query";
import { useTranslation } from "react-i18next";
-import { useArk } from "@lume/ark";
import { Note, User } from "@lume/ui";
+import { useRouteContext } from "@tanstack/react-router";
export function RepostNote({
event,
@@ -13,8 +13,7 @@ export function RepostNote({
event: Event;
className?: string;
}) {
- const ark = useArk();
-
+ const { ark } = useRouteContext({ strict: false });
const { t } = useTranslation();
const {
isLoading,
diff --git a/apps/desktop2/src/routes/$account.tsx b/apps/desktop2/src/routes/$account.tsx
index 14067002..da362ce1 100644
--- a/apps/desktop2/src/routes/$account.tsx
+++ b/apps/desktop2/src/routes/$account.tsx
@@ -2,16 +2,14 @@ import { ComposeFilledIcon, PlusIcon } from "@lume/icons";
import { Outlet, createFileRoute, useNavigate } from "@tanstack/react-router";
import { cn } from "@lume/utils";
import { Accounts } from "@/components/accounts";
-import { useArk } from "@lume/ark";
export const Route = createFileRoute("/$account")({
component: App,
});
function App() {
- const ark = useArk();
const navigate = useNavigate();
- const { platform } = Route.useRouteContext();
+ const { ark, platform } = Route.useRouteContext();
return (
diff --git a/apps/desktop2/src/routes/auth/new/profile.tsx b/apps/desktop2/src/routes/auth/new/profile.tsx
index e0aef933..57170983 100644
--- a/apps/desktop2/src/routes/auth/new/profile.tsx
+++ b/apps/desktop2/src/routes/auth/new/profile.tsx
@@ -1,5 +1,4 @@
import { AvatarUploader } from "@/components/avatarUploader";
-import { useArk } from "@lume/ark";
import { LoaderIcon, PlusIcon } from "@lume/icons";
import { Metadata } from "@lume/types";
import { createFileRoute, useNavigate } from "@tanstack/react-router";
@@ -16,11 +15,11 @@ export const Route = createFileRoute("/auth/new/profile")({
});
function Screen() {
- const ark = useArk();
const keys = Route.useLoaderData();
const navigate = useNavigate();
const { t } = useTranslation();
+ const { ark } = Route.useRouteContext();
const { register, handleSubmit } = useForm();
const [picture, setPicture] = useState("");
diff --git a/apps/desktop2/src/routes/auth/privkey.lazy.tsx b/apps/desktop2/src/routes/auth/privkey.lazy.tsx
index 3b1019ab..254971c5 100644
--- a/apps/desktop2/src/routes/auth/privkey.lazy.tsx
+++ b/apps/desktop2/src/routes/auth/privkey.lazy.tsx
@@ -1,8 +1,6 @@
-import { useArk } from "@lume/ark";
import { LoaderIcon } from "@lume/icons";
import { createLazyFileRoute, useNavigate } from "@tanstack/react-router";
import { useState } from "react";
-import { useTranslation } from "react-i18next";
import { toast } from "sonner";
export const Route = createLazyFileRoute("/auth/privkey")({
@@ -10,10 +8,9 @@ export const Route = createLazyFileRoute("/auth/privkey")({
});
function Screen() {
- const ark = useArk();
+ const { ark } = Route.useRouteContext();
const navigate = useNavigate();
- const [t] = useTranslation();
const [key, setKey] = useState("");
const [password, setPassword] = useState("");
const [loading, setLoading] = useState(false);
diff --git a/apps/desktop2/src/routes/auth/settings.lazy.tsx b/apps/desktop2/src/routes/auth/settings.lazy.tsx
index 54fe9d79..3e612c6c 100644
--- a/apps/desktop2/src/routes/auth/settings.lazy.tsx
+++ b/apps/desktop2/src/routes/auth/settings.lazy.tsx
@@ -4,7 +4,6 @@ import { useTranslation } from "react-i18next";
import * as Switch from "@radix-ui/react-switch";
import { useEffect, useState } from "react";
import { Settings } from "@lume/types";
-import { useArk } from "@lume/ark";
import {
isPermissionGranted,
requestPermission,
@@ -16,12 +15,12 @@ export const Route = createLazyFileRoute("/auth/settings")({
});
function Screen() {
- const ark = useArk();
const navigate = useNavigate();
// @ts-ignore, magic!!!
const { account } = Route.useSearch();
const { t } = useTranslation();
+ const { ark } = Route.useRouteContext();
const [settings, setSettings] = useState({
notification: false,
diff --git a/apps/desktop2/src/routes/editor/-components/media.tsx b/apps/desktop2/src/routes/editor/-components/media.tsx
index 147f14c3..247f3800 100644
--- a/apps/desktop2/src/routes/editor/-components/media.tsx
+++ b/apps/desktop2/src/routes/editor/-components/media.tsx
@@ -1,4 +1,3 @@
-import { useArk } from "@lume/ark";
import { AddMediaIcon, LoaderIcon } from "@lume/icons";
import { cn, insertImage, isImagePath } from "@lume/utils";
import { useEffect, useState } from "react";
@@ -6,9 +5,10 @@ import { useSlateStatic } from "slate-react";
import { toast } from "sonner";
import { getCurrent } from "@tauri-apps/api/window";
import { UnlistenFn } from "@tauri-apps/api/event";
+import { useRouteContext } from "@tanstack/react-router";
export function MediaButton({ className }: { className?: string }) {
- const ark = useArk();
+ const { ark } = useRouteContext({ strict: false });
const editor = useSlateStatic();
const [loading, setLoading] = useState(false);
diff --git a/apps/desktop2/src/routes/editor/index.tsx b/apps/desktop2/src/routes/editor/index.tsx
index 6b9d4041..4c96956e 100644
--- a/apps/desktop2/src/routes/editor/index.tsx
+++ b/apps/desktop2/src/routes/editor/index.tsx
@@ -1,4 +1,3 @@
-import { useArk } from "@lume/ark";
import { LoaderIcon, TrashIcon } from "@lume/icons";
import {
Portal,
@@ -61,6 +60,7 @@ export const Route = createFileRoute("/editor/")({
function Screen() {
// @ts-ignore, useless
const { reply_to, quote } = Route.useSearch();
+ const { ark } = Route.useRouteContext();
let initialValue: EditorElement[];
@@ -89,7 +89,6 @@ function Screen() {
];
}
- const ark = useArk();
const ref = useRef();
const contacts = useSuspenseQuery(contactQueryOptions).data as Contact[];
diff --git a/apps/desktop2/src/routes/events/-components/replyList.tsx b/apps/desktop2/src/routes/events/-components/replyList.tsx
index f1ba20b4..a3f5c1e4 100644
--- a/apps/desktop2/src/routes/events/-components/replyList.tsx
+++ b/apps/desktop2/src/routes/events/-components/replyList.tsx
@@ -1,10 +1,10 @@
-import { useArk } from "@lume/ark";
import { LoaderIcon } from "@lume/icons";
import { cn } from "@lume/utils";
import { useEffect, useState } from "react";
import { useTranslation } from "react-i18next";
import { EventWithReplies } from "@lume/types";
import { Reply } from "./reply";
+import { useRouteContext } from "@tanstack/react-router";
export function ReplyList({
eventId,
@@ -13,8 +13,7 @@ export function ReplyList({
eventId: string;
className?: string;
}) {
- const ark = useArk();
-
+ const { ark } = useRouteContext({ strict: false });
const [t] = useTranslation();
const [data, setData] = useState(null);
diff --git a/apps/desktop2/src/routes/index.tsx b/apps/desktop2/src/routes/index.tsx
index 03b1fb96..3a975983 100644
--- a/apps/desktop2/src/routes/index.tsx
+++ b/apps/desktop2/src/routes/index.tsx
@@ -1,4 +1,3 @@
-import { useArk } from "@lume/ark";
import { LoaderIcon, PlusIcon } from "@lume/icons";
import { User } from "@lume/ui";
import { Link } from "@tanstack/react-router";
@@ -45,7 +44,6 @@ export const Route = createFileRoute("/")({
});
function Screen() {
- const ark = useArk();
const navigate = useNavigate();
const context = Route.useRouteContext();
@@ -53,8 +51,8 @@ function Screen() {
const select = async (npub: string) => {
setLoading(true);
- const loadAccount = await ark.load_selected_account(npub);
- context.settings = await ark.get_settings(npub);
+ const loadAccount = await context.ark.load_selected_account(npub);
+ context.settings = await context.ark.get_settings(npub);
if (loadAccount) {
navigate({
@@ -85,7 +83,7 @@ function Screen() {
) : (
<>
- {ark.accounts.map((account) => (
+ {context.ark.accounts.map((account) => (
-
+
{t("note.buttons.downvote")}
diff --git a/packages/ui/src/note/buttons/reply.tsx b/packages/ui/src/note/buttons/reply.tsx
index 07de067e..8f8f87aa 100644
--- a/packages/ui/src/note/buttons/reply.tsx
+++ b/packages/ui/src/note/buttons/reply.tsx
@@ -2,12 +2,12 @@ import { ReplyIcon } from "@lume/icons";
import * as Tooltip from "@radix-ui/react-tooltip";
import { useTranslation } from "react-i18next";
import { useNoteContext } from "../provider";
-import { useArk } from "@lume/ark";
+import { useRouteContext } from "@tanstack/react-router";
export function NoteReply() {
- const ark = useArk();
const event = useNoteContext();
+ const { ark } = useRouteContext({ strict: false });
const { t } = useTranslation();
return (
@@ -23,7 +23,7 @@ export function NoteReply() {
-
+
{t("note.menu.viewThread")}
diff --git a/packages/ui/src/note/buttons/repost.tsx b/packages/ui/src/note/buttons/repost.tsx
index 759248cf..53cb489a 100644
--- a/packages/ui/src/note/buttons/repost.tsx
+++ b/packages/ui/src/note/buttons/repost.tsx
@@ -1,4 +1,4 @@
-import { LoaderIcon, QuoteIcon, ReplyIcon, RepostIcon } from "@lume/icons";
+import { LoaderIcon, QuoteIcon, RepostIcon } from "@lume/icons";
import { cn } from "@lume/utils";
import * as DropdownMenu from "@radix-ui/react-dropdown-menu";
import * as Tooltip from "@radix-ui/react-tooltip";
@@ -6,10 +6,10 @@ import { useState } from "react";
import { useTranslation } from "react-i18next";
import { toast } from "sonner";
import { useNoteContext } from "../provider";
-import { useArk } from "@lume/ark";
+import { useRouteContext } from "@tanstack/react-router";
export function NoteRepost() {
- const ark = useArk();
+ const { ark } = useRouteContext({ strict: false });
const event = useNoteContext();
const [t] = useTranslation();
@@ -59,7 +59,7 @@ export function NoteRepost() {
-
+
{t("note.buttons.repost")}
diff --git a/packages/ui/src/note/buttons/upvote.tsx b/packages/ui/src/note/buttons/upvote.tsx
index 2aaf6184..0c68187a 100644
--- a/packages/ui/src/note/buttons/upvote.tsx
+++ b/packages/ui/src/note/buttons/upvote.tsx
@@ -1,13 +1,13 @@
import { ArrowUpIcon, LoaderIcon } from "@lume/icons";
import { useState } from "react";
import { useNoteContext } from "../provider";
-import { useArk } from "@lume/ark";
import { cn } from "@lume/utils";
import * as Tooltip from "@radix-ui/react-tooltip";
import { useTranslation } from "react-i18next";
+import { useRouteContext } from "@tanstack/react-router";
export function NoteUpvote() {
- const ark = useArk();
+ const { ark } = useRouteContext({ strict: false });
const event = useNoteContext();
const [t] = useTranslation();
@@ -48,7 +48,7 @@ export function NoteUpvote() {
-
+
{t("note.buttons.upvote")}
diff --git a/packages/ui/src/note/buttons/zap.tsx b/packages/ui/src/note/buttons/zap.tsx
index 2e5bf03e..8cc25a7d 100644
--- a/packages/ui/src/note/buttons/zap.tsx
+++ b/packages/ui/src/note/buttons/zap.tsx
@@ -1,13 +1,11 @@
-import { useArk } from "@lume/ark";
import { ZapIcon } from "@lume/icons";
import { toast } from "sonner";
import { useNoteContext } from "../provider";
-import { useSearch } from "@tanstack/react-router";
+import { useRouteContext, useSearch } from "@tanstack/react-router";
export function NoteZap() {
- const ark = useArk();
const event = useNoteContext();
-
+ const { ark } = useRouteContext({ strict: false });
const { account } = useSearch({ strict: false });
const zap = async () => {
diff --git a/packages/ui/src/note/content.tsx b/packages/ui/src/note/content.tsx
index 7b536125..9d3f50d4 100644
--- a/packages/ui/src/note/content.tsx
+++ b/packages/ui/src/note/content.tsx
@@ -7,7 +7,6 @@ import {
VIDEOS,
cn,
} from "@lume/utils";
-import { NIP89 } from "./nip89";
import { useNoteContext } from "./provider";
import { ReactNode, useMemo } from "react";
import { nanoid } from "nanoid";
@@ -136,10 +135,6 @@ export function NoteContent({
}
}, []);
- if (event.kind !== Kind.Text) {
- return ;
- }
-
return (
diff --git a/packages/ui/src/note/mentions/note.tsx b/packages/ui/src/note/mentions/note.tsx
index 1481b7d4..c28ed4ee 100644
--- a/packages/ui/src/note/mentions/note.tsx
+++ b/packages/ui/src/note/mentions/note.tsx
@@ -1,7 +1,8 @@
import { useTranslation } from "react-i18next";
import { User } from "../../user";
-import { useArk, useEvent } from "@lume/ark";
+import { useEvent } from "@lume/ark";
import { LinkIcon } from "@lume/icons";
+import { useRouteContext } from "@tanstack/react-router";
export function MentionNote({
eventId,
@@ -10,8 +11,7 @@ export function MentionNote({
eventId: string;
openable?: boolean;
}) {
- const ark = useArk();
-
+ const { ark } = useRouteContext({ strict: false });
const { t } = useTranslation();
const { isLoading, isError, data } = useEvent(eventId);
diff --git a/packages/ui/src/note/mentions/user.tsx b/packages/ui/src/note/mentions/user.tsx
index 7f91a985..12cb5b34 100644
--- a/packages/ui/src/note/mentions/user.tsx
+++ b/packages/ui/src/note/mentions/user.tsx
@@ -1,8 +1,9 @@
-import { useArk, useProfile } from "@lume/ark";
+import { useProfile } from "@lume/ark";
import { displayNpub } from "@lume/utils";
+import { useRouteContext } from "@tanstack/react-router";
export function MentionUser({ pubkey }: { pubkey: string }) {
- const ark = useArk();
+ const { ark } = useRouteContext({ strict: false });
const { isLoading, isError, profile } = useProfile(pubkey);
return (
diff --git a/packages/ui/src/note/menu.tsx b/packages/ui/src/note/menu.tsx
index 4f36250a..c182121d 100644
--- a/packages/ui/src/note/menu.tsx
+++ b/packages/ui/src/note/menu.tsx
@@ -3,13 +3,13 @@ import * as DropdownMenu from "@radix-ui/react-dropdown-menu";
import { writeText } from "@tauri-apps/plugin-clipboard-manager";
import { useTranslation } from "react-i18next";
import { useNoteContext } from "./provider";
-import { useArk } from "@lume/ark";
import { toast } from "sonner";
+import { useRouteContext } from "@tanstack/react-router";
export function NoteMenu() {
- const ark = useArk();
const event = useNoteContext();
+ const { ark } = useRouteContext({ strict: false });
const { t } = useTranslation();
const copyID = async () => {
diff --git a/packages/ui/src/note/nip89.tsx b/packages/ui/src/note/nip89.tsx
deleted file mode 100644
index ed4cd257..00000000
--- a/packages/ui/src/note/nip89.tsx
+++ /dev/null
@@ -1,55 +0,0 @@
-import { useQuery } from "@tanstack/react-query";
-import { useTranslation } from "react-i18next";
-import { AppHandler } from "./appHandler";
-import { useNoteContext } from "./provider";
-import { useArk } from "@lume/ark";
-
-export function NIP89({ className }: { className?: string }) {
- const ark = useArk();
- const event = useNoteContext();
-
- const { t } = useTranslation();
- const { isLoading, isError, data } = useQuery({
- queryKey: ["app-recommend", event.id],
- queryFn: () => {
- return ark.getAppRecommend({
- unknownKind: event.kind.toString(),
- author: event.pubkey,
- });
- },
- refetchOnWindowFocus: false,
- refetchOnMount: false,
- staleTime: Infinity,
- });
-
- if (isLoading) {
-
Loading...
;
- }
-
- if (isError || !data) {
- return
Error
;
- }
-
- return (
-
-
-
-
- {t("nip89.unsupported")}
-
-
- {event.kind}
-
-
-
-
- {t("nip89.openWith")}
-
- {data.map((item) => (
-
- ))}
-
-
-
- );
-}
diff --git a/packages/ui/src/note/primitives/repost.tsx b/packages/ui/src/note/primitives/repost.tsx
index b4adc458..0ed06fa4 100644
--- a/packages/ui/src/note/primitives/repost.tsx
+++ b/packages/ui/src/note/primitives/repost.tsx
@@ -5,7 +5,7 @@ import { useQuery } from "@tanstack/react-query";
import { useTranslation } from "react-i18next";
import { Note } from "..";
import { User } from "../../user";
-import { useArk } from "@lume/ark";
+import { useRouteContext } from "@tanstack/react-router";
export function RepostNote({
event,
@@ -14,8 +14,7 @@ export function RepostNote({
event: Event;
className?: string;
}) {
- const ark = useArk();
-
+ const { ark } = useRouteContext({ strict: false });
const { t } = useTranslation();
const {
isLoading,
diff --git a/packages/ui/src/note/thread.tsx b/packages/ui/src/note/thread.tsx
index 3214c9d8..5ce6a4a0 100644
--- a/packages/ui/src/note/thread.tsx
+++ b/packages/ui/src/note/thread.tsx
@@ -2,11 +2,11 @@ import { cn } from "@lume/utils";
import { useTranslation } from "react-i18next";
import { Note } from ".";
import { useNoteContext } from "./provider";
-import { useArk } from "@lume/ark";
import { LinkIcon } from "@lume/icons";
+import { useRouteContext } from "@tanstack/react-router";
export function NoteThread({ className }: { className?: string }) {
- const ark = useArk();
+ const { ark } = useRouteContext({ strict: false });
const event = useNoteContext();
const thread = ark.parse_event_thread({
content: event.content,
diff --git a/packages/ui/src/note/user.tsx b/packages/ui/src/note/user.tsx
index f7485209..c1c16663 100644
--- a/packages/ui/src/note/user.tsx
+++ b/packages/ui/src/note/user.tsx
@@ -2,10 +2,10 @@ import { cn } from "@lume/utils";
import * as HoverCard from "@radix-ui/react-hover-card";
import { User } from "../user";
import { useNoteContext } from "./provider";
-import { useArk } from "@lume/ark";
+import { useRouteContext } from "@tanstack/react-router";
export function NoteUser({ className }: { className?: string }) {
- const ark = useArk();
+ const { ark } = useRouteContext({ strict: false });
const event = useNoteContext();
return (
@@ -32,7 +32,7 @@ export function NoteUser({ className }: { className?: string }) {
diff --git a/packages/ui/src/user/followButton.tsx b/packages/ui/src/user/followButton.tsx
index f634ca7f..7986a137 100644
--- a/packages/ui/src/user/followButton.tsx
+++ b/packages/ui/src/user/followButton.tsx
@@ -1,12 +1,12 @@
-import { useArk } from "@lume/ark";
import { LoaderIcon } from "@lume/icons";
import { cn } from "@lume/utils";
import { useEffect, useState } from "react";
import { useTranslation } from "react-i18next";
import { useUserContext } from "./provider";
+import { useRouteContext } from "@tanstack/react-router";
export function UserFollowButton({ className }: { className?: string }) {
- const ark = useArk();
+ const { ark } = useRouteContext({ strict: false });
const user = useUserContext();
const [t] = useTranslation();
diff --git a/packages/ui/src/user/nip05.tsx b/packages/ui/src/user/nip05.tsx
index 91228177..75ab86ff 100644
--- a/packages/ui/src/user/nip05.tsx
+++ b/packages/ui/src/user/nip05.tsx
@@ -2,12 +2,12 @@ import { VerifiedIcon } from "@lume/icons";
import { cn, displayLongHandle, displayNpub } from "@lume/utils";
import { useQuery } from "@tanstack/react-query";
import { useUserContext } from "./provider";
-import { useArk } from "@lume/ark";
+import { useRouteContext } from "@tanstack/react-router";
export function UserNip05({ className }: { className?: string }) {
- const ark = useArk();
const user = useUserContext();
+ const { ark } = useRouteContext({ strict: false });
const { isLoading, data: verified } = useQuery({
queryKey: ["nip05", user?.pubkey],
queryFn: async () => {