34 lines
870 B
TypeScript
34 lines
870 B
TypeScript
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 sender = new NDKUser({
|
|
pubkey:
|
|
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);
|
|
}
|
|
}
|
|
|
|
decryptContent();
|
|
}, []);
|
|
|
|
return content;
|
|
}
|