diff --git a/src/clients/useDeprecatedReposts.ts b/src/clients/useDeprecatedReposts.ts index 4b7e220..e879e98 100644 --- a/src/clients/useDeprecatedReposts.ts +++ b/src/clients/useDeprecatedReposts.ts @@ -18,6 +18,7 @@ export type UseDeprecatedReposts = { }; const { exec } = useBatchedEvents(() => ({ + interval: 3400, generateKey: ({ eventId }) => eventId, mergeFilters: (args) => { const eventIds = args.map((arg) => arg.eventId); diff --git a/src/clients/useFollowings.ts b/src/clients/useFollowings.ts index e16cd91..9d70e11 100644 --- a/src/clients/useFollowings.ts +++ b/src/clients/useFollowings.ts @@ -52,7 +52,11 @@ const useFollowings = (propsProvider: () => UseFollowingsProps) => { return result; }; - return { followings }; + const followingPubkeys = (): string[] => { + return followings().map((follow) => follow.pubkey); + }; + + return { followings, followingPubkeys }; }; export default useFollowings; diff --git a/src/components/NotePostForm.tsx b/src/components/NotePostForm.tsx index 51654fa..e7ac581 100644 --- a/src/components/NotePostForm.tsx +++ b/src/components/NotePostForm.tsx @@ -1,11 +1,14 @@ -import { createSignal, createMemo, type Component, type JSX } from 'solid-js'; +import { createSignal, createMemo, onMount, type Component, type JSX } from 'solid-js'; import PaperAirplane from 'heroicons/24/solid/paper-airplane.svg'; type NotePostFormProps = { onPost: (textNote: { content: string }) => void; + onClose: () => void; }; const NotePostForm: Component = (props) => { + let textAreaRef: HTMLTextAreaElement | undefined; + const [text, setText] = createSignal(''); const clearText = () => setText(''); @@ -28,15 +31,24 @@ const NotePostForm: Component = (props) => { const handleKeyDown: JSX.EventHandlerUnion = (ev) => { if (ev.key === 'Enter' && (ev.ctrlKey || ev.metaKey)) { submit(); + } else if (ev.key === 'Escape') { + props.onClose(); } }; const submitDisabled = createMemo(() => text().trim().length === 0); + onMount(() => { + if (textAreaRef != null) { + textAreaRef.focus(); + } + }); + return (