diff --git a/src/app/auth/components/features/followList.tsx b/src/app/auth/components/features/followList.tsx index 8901fac5..a6da52a3 100644 --- a/src/app/auth/components/features/followList.tsx +++ b/src/app/auth/components/features/followList.tsx @@ -35,7 +35,7 @@ export function FollowList() { ); return ( -
+
Your follows
{status === 'loading' ? ( diff --git a/src/app/auth/import.tsx b/src/app/auth/import.tsx index 85dc373f..cbf25686 100644 --- a/src/app/auth/import.tsx +++ b/src/app/auth/import.tsx @@ -47,6 +47,8 @@ export function ImportAccountScreen() { await db.secureSave(pubkey + '-bunker', localSigner.privateKey); const remoteSigner = new NDKNip46Signer(ndk, npub, localSigner); + await remoteSigner.blockUntilReady(); + ndk.signer = remoteSigner; setPubkey(pubkey); diff --git a/src/app/auth/onboarding/list.tsx b/src/app/auth/onboarding/list.tsx index 31d94ac0..eee68853 100644 --- a/src/app/auth/onboarding/list.tsx +++ b/src/app/auth/onboarding/list.tsx @@ -11,17 +11,17 @@ import { SuggestFollow } from '@app/auth/components/features/suggestFollow'; import { LoaderIcon } from '@shared/icons'; export function OnboardingListScreen() { - const navigate = useNavigate(); - const { state } = useLocation(); const { newuser }: { newuser: boolean } = state; const [loading, setLoading] = useState(false); + const navigate = useNavigate(); + const completed = () => { setLoading(true); - const timeout = setTimeout(() => setLoading(false), 1200); + const timeout = setTimeout(() => setLoading(false), 200); clearTimeout(timeout); navigate('/'); diff --git a/src/app/chats/hooks/useDecryptMessage.tsx b/src/app/chats/hooks/useDecryptMessage.tsx index e865338c..5da4ffa1 100644 --- a/src/app/chats/hooks/useDecryptMessage.tsx +++ b/src/app/chats/hooks/useDecryptMessage.tsx @@ -1,22 +1,25 @@ -import { NDKEvent } from '@nostr-dev-kit/ndk'; -import { nip04 } from 'nostr-tools'; +import { NDKEvent, NDKUser } from '@nostr-dev-kit/ndk'; import { useEffect, useState } from 'react'; +import { useNDK } from '@libs/ndk/provider'; import { useStorage } from '@libs/storage/provider'; export function useDecryptMessage(message: NDKEvent) { const { db } = useStorage(); + const { ndk } = useNDK(); + const [content, setContent] = useState(message.content); useEffect(() => { async function decryptContent() { try { - const privkey = await db.secureLoad(db.account.pubkey); - const sender = - db.account.pubkey === message.pubkey - ? message.tags.find((el) => el[0] === 'p')[1] - : message.pubkey; - const result = await nip04.decrypt(privkey, sender, message.content); + const sender = new NDKUser({ + hexpubkey: + db.account.pubkey === message.pubkey + ? message.tags.find((el) => el[0] === 'p')[1] + : message.pubkey, + }); + const result = await ndk.signer.decrypt(sender, message.content); setContent(result); } catch (e) { console.error(e); diff --git a/src/libs/ndk/instance.ts b/src/libs/ndk/instance.ts index dc4f24ab..946a4bc1 100644 --- a/src/libs/ndk/instance.ts +++ b/src/libs/ndk/instance.ts @@ -60,7 +60,7 @@ export const NDKInstance = () => { if (localSignerPrivkey) { const localSigner = new NDKPrivateKeySigner(localSignerPrivkey); const remoteSigner = new NDKNip46Signer(instance, db.account.id, localSigner); - // await remoteSigner.blockUntilReady(); + await remoteSigner.blockUntilReady(); return remoteSigner; } diff --git a/src/shared/notes/actions/zap.tsx b/src/shared/notes/actions/zap.tsx index ff214cfa..08ba3d86 100644 --- a/src/shared/notes/actions/zap.tsx +++ b/src/shared/notes/actions/zap.tsx @@ -84,7 +84,9 @@ export function NoteZap({ id, pubkey }: { id: string; pubkey: string }) { if (uri) setWalletConnectURL(uri); } - getWalletConnectURL(); + if (isOpen) { + getWalletConnectURL(); + } return () => { setAmount('21'); @@ -92,7 +94,7 @@ export function NoteZap({ id, pubkey }: { id: string; pubkey: string }) { setIsCompleted(false); setIsLoading(false); }; - }, []); + }, [isOpen]); return ( diff --git a/src/shared/user.tsx b/src/shared/user.tsx index cd804337..9544d95d 100644 --- a/src/shared/user.tsx +++ b/src/shared/user.tsx @@ -47,23 +47,25 @@ export const User = memo(function User({ if (status === 'loading') { if (variant === 'avatar') { return ( -
+
); } if (variant === 'mention') { return (
-
-
+
+
); } return (
-
-
+
+
+
+
); } diff --git a/src/utils/hooks/useNostr.ts b/src/utils/hooks/useNostr.ts index c6bd222a..5af41258 100644 --- a/src/utils/hooks/useNostr.ts +++ b/src/utils/hooks/useNostr.ts @@ -1,10 +1,4 @@ -import { - NDKEvent, - NDKFilter, - NDKKind, - NDKPrivateKeySigner, - NDKSubscription, -} from '@nostr-dev-kit/ndk'; +import { NDKEvent, NDKFilter, NDKKind, NDKSubscription } from '@nostr-dev-kit/ndk'; import { message, open } from '@tauri-apps/plugin-dialog'; import { fetch } from '@tauri-apps/plugin-http'; import { LRUCache } from 'lru-cache'; @@ -318,15 +312,6 @@ export function useNostr() { }; const createZap = async (event: NDKEvent, amount: number, message?: string) => { - const privkey: string = await db.secureLoad(db.account.pubkey); - // #TODO: show prompt - if (!privkey) return; - - if (!ndk.signer) { - const signer = new NDKPrivateKeySigner(privkey); - ndk.signer = signer; - } - // @ts-expect-error, NostrEvent to NDKEvent const ndkEvent = new NDKEvent(ndk, event); const res = await ndkEvent.zap(amount, message ?? 'zap from lume');