diff --git a/src/components/Notes/NoteSubmit.tsx b/src/components/Notes/NoteSubmit.tsx index 1d9d17c..f3b4de3 100644 --- a/src/components/Notes/NoteSubmit.tsx +++ b/src/components/Notes/NoteSubmit.tsx @@ -2,7 +2,7 @@ import { NDKSubscriptionCacheUsage } from '@nostr-dev-kit/ndk' import { FALLBACK_PROFILE_IMAGE } from '../../constants' import { useAppSelector } from 'hooks' import { useProfile } from 'hooks/useProfile' -import { Navigate, useSubmit } from 'react-router-dom' +import { Navigate, useNavigation, useSubmit } from 'react-router-dom' import { appRoutes } from 'routes' import { useEffect, useRef, useState } from 'react' import { adjustTextareaHeight } from 'utils' @@ -17,6 +17,7 @@ export const NoteSubmit = ({ initialContent, handleClose }: NoteSubmitProps) => { + const navigation = useNavigation() const userState = useAppSelector((state) => state.user) const profile = useProfile(userState.user?.pubkey as string | undefined, { cacheUsage: NDKSubscriptionCacheUsage.PARALLEL @@ -131,8 +132,9 @@ export const NoteSubmit = ({ className='btn btnMain' type='submit' style={{ padding: '5px 20px', borderRadius: '8px' }} + disabled={navigation.state !== 'idle'} > - Post + {navigation.state === 'idle' ? 'Post' : 'Posting...'} diff --git a/src/constants.ts b/src/constants.ts index 6610e31..5639130 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -124,3 +124,6 @@ export const FALLBACK_PROFILE_IMAGE = export const PROFILE_BLOG_FILTER_LIMIT = 20 export const MAX_VISIBLE_TEXT_PER_COMMENT = 500 +export const CLIENT_NAME_VALUE = 'DEG Mods' +export const CLIENT_TAG_VALUE = + '31990:f4bf1fb5ba8be839f70c7331733e309f780822b311f63e01f9dc8abbb428f8d5:bf1987d6-b772-43c6-bce7-42b638a9ffed' diff --git a/src/contexts/NDKContext.tsx b/src/contexts/NDKContext.tsx index b89902c..ac6a14d 100644 --- a/src/contexts/NDKContext.tsx +++ b/src/contexts/NDKContext.tsx @@ -11,7 +11,12 @@ import NDK, { zapInvoiceFromEvent } from '@nostr-dev-kit/ndk' import NDKCacheAdapterDexie from '@nostr-dev-kit/ndk-cache-dexie' -import { MOD_FILTER_LIMIT, T_TAG_VALUE } from 'constants.ts' +import { + CLIENT_NAME_VALUE, + CLIENT_TAG_VALUE, + MOD_FILTER_LIMIT, + T_TAG_VALUE +} from 'constants.ts' import { Dexie } from 'dexie' import { createContext, ReactNode, useEffect, useMemo } from 'react' import { toast } from 'react-toastify' @@ -127,6 +132,8 @@ export const NDKContextProvider = ({ children }: { children: ReactNode }) => { enableOutboxModel: true, autoConnectUserRelays: true, autoFetchUserMutelist: true, + clientName: CLIENT_NAME_VALUE, + clientNip89: CLIENT_TAG_VALUE, explicitRelayUrls: [ 'wss://user.kindpag.es', 'wss://purplepag.es', diff --git a/src/pages/feed/action.ts b/src/pages/feed/action.ts index 1905c2c..d87f6fb 100644 --- a/src/pages/feed/action.ts +++ b/src/pages/feed/action.ts @@ -44,19 +44,16 @@ export const feedPostRouteAction = kind: NDKKind.Text, created_at: currentTimeStamp, content: content, - tags: [], + tags: [ + ['L', 'source'], + ['l', window.location.host, 'source'] + ], pubkey: hexPubkey }) try { - await ndkEvent.generateTags() - if (formSubmit.nsfw) ndkEvent.tags.push(['L', 'content-warning']) - ndkEvent.tags.push(['L', 'source']) - ndkEvent.tags.push(['l', window.location.host, 'source']) - ndkEvent.tags.push(['client', 'DEG Mods']) - await ndkEvent.sign() const note1 = ndkEvent.encode() const publishedOnRelays = await ndkEvent.publish()