reuse relayprovider

This commit is contained in:
Ren Amamiya
2023-04-29 10:25:40 +07:00
parent be8b40c86d
commit 3f06193c59
27 changed files with 151 additions and 156 deletions

View File

@@ -1,16 +1,17 @@
import { ImagePicker } from '@lume/shared/form/imagePicker';
import { RelayContext } from '@lume/shared/relayProvider';
import { chatContentAtom } from '@lume/stores/chat';
import { FULL_RELAYS, WRITEONLY_RELAYS } from '@lume/stores/constants';
import { WRITEONLY_RELAYS } from '@lume/stores/constants';
import { dateToUnix } from '@lume/utils/getDate';
import { useActiveAccount } from '@lume/utils/hooks/useActiveAccount';
import { useAtom } from 'jotai';
import { useResetAtom } from 'jotai/utils';
import { RelayPool } from 'nostr-relaypool';
import { getEventHash, nip04, signEvent } from 'nostr-tools';
import { useCallback } from 'react';
import { useCallback, useContext } from 'react';
export default function ChatMessageForm({ receiverPubkey }: { receiverPubkey: string }) {
const pool: any = useContext(RelayContext);
const { account, isLoading, isError } = useActiveAccount();
const [value, setValue] = useAtom(chatContentAtom);
@@ -27,7 +28,6 @@ export default function ChatMessageForm({ receiverPubkey }: { receiverPubkey: st
if (!isError && !isLoading && account) {
encryptMessage(account.privkey)
.then((encryptedContent) => {
const pool = new RelayPool(WRITEONLY_RELAYS);
const event: any = {
content: encryptedContent,
created_at: dateToUnix(),
@@ -38,7 +38,7 @@ export default function ChatMessageForm({ receiverPubkey }: { receiverPubkey: st
event.id = getEventHash(event);
event.sig = signEvent(event, account.privkey);
// publish note
pool.publish(event, FULL_RELAYS);
pool.publish(event, WRITEONLY_RELAYS);
// reset state
resetValue();
})

View File

@@ -10,7 +10,7 @@ export function LayoutChat({ children }: { children: React.ReactNode }) {
data-tauri-drag-region
className="relative h-11 shrink-0 border-b border-zinc-100 bg-white dark:border-zinc-900 dark:bg-black"
>
<AppHeader collector={true} />
<AppHeader />
</div>
<div className="relative flex min-h-0 w-full flex-1">
<div className="relative w-[68px] shrink-0 border-r border-zinc-900">

View File

@@ -1,18 +1,19 @@
import ChatMessageForm from '@lume/app/chat/components/messages/form';
import { RelayContext } from '@lume/shared/relayProvider';
import { chatMessagesAtom } from '@lume/stores/chat';
import { FULL_RELAYS } from '@lume/stores/constants';
import { READONLY_RELAYS } from '@lume/stores/constants';
import { useActiveAccount } from '@lume/utils/hooks/useActiveAccount';
import { usePageContext } from '@lume/utils/hooks/usePageContext';
import { useSetAtom } from 'jotai';
import { useResetAtom } from 'jotai/utils';
import { RelayPool } from 'nostr-relaypool';
import { Suspense, lazy, useEffect } from 'react';
import { Suspense, lazy, useContext, useEffect } from 'react';
import useSWRSubscription from 'swr/subscription';
const ChatMessageList = lazy(() => import('@lume/app/chat/components/messageList'));
export function Page() {
const pool: any = useContext(RelayContext);
const pageContext = usePageContext();
const searchParams: any = pageContext.urlParsed.search;
@@ -24,7 +25,6 @@ export function Page() {
const resetChatMessages = useResetAtom(chatMessagesAtom);
useSWRSubscription(pubkey ? ['chat', pubkey] : null, ([, key], {}: any) => {
const pool = new RelayPool(FULL_RELAYS);
const unsubscribe = pool.subscribe(
[
{
@@ -40,7 +40,7 @@ export function Page() {
limit: 20,
},
],
FULL_RELAYS,
READONLY_RELAYS,
(event: any) => {
setChatMessages((prev) => [...prev, event]);
}