fix: modify the color of the username in the preview
This commit is contained in:
@@ -3,7 +3,11 @@ import { cn } from '@/lib/utils'
|
|||||||
import { Event } from 'nostr-tools'
|
import { Event } from 'nostr-tools'
|
||||||
import { useMemo } from 'react'
|
import { useMemo } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import { embedded, embeddedNostrNpubRenderer, embeddedNostrProfileRenderer } from '../Embedded'
|
import {
|
||||||
|
embedded,
|
||||||
|
embeddedNostrNpubTextRenderer,
|
||||||
|
embeddedNostrProfileTextRenderer
|
||||||
|
} from '../Embedded'
|
||||||
|
|
||||||
export default function ContentPreview({
|
export default function ContentPreview({
|
||||||
event,
|
event,
|
||||||
@@ -26,7 +30,10 @@ export default function ContentPreview({
|
|||||||
if (embeddedNotes.length) {
|
if (embeddedNotes.length) {
|
||||||
contents.push(`[${t('note')}]`)
|
contents.push(`[${t('note')}]`)
|
||||||
}
|
}
|
||||||
return embedded(contents.join(' '), [embeddedNostrProfileRenderer, embeddedNostrNpubRenderer])
|
return embedded(contents.join(' '), [
|
||||||
|
embeddedNostrProfileTextRenderer,
|
||||||
|
embeddedNostrNpubTextRenderer
|
||||||
|
])
|
||||||
}, [event])
|
}, [event])
|
||||||
if (!event) return null
|
if (!event) return null
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import Username from '../Username'
|
import Username, { SimpleUsername } from '../Username'
|
||||||
import { TEmbeddedRenderer } from './types'
|
import { TEmbeddedRenderer } from './types'
|
||||||
|
|
||||||
export function EmbeddedMention({ userId }: { userId: string }) {
|
export function EmbeddedMention({ userId }: { userId: string }) {
|
||||||
@@ -12,6 +12,17 @@ export function EmbeddedMention({ userId }: { userId: string }) {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function EmbeddedMentionText({ userId }: { userId: string }) {
|
||||||
|
return (
|
||||||
|
<SimpleUsername
|
||||||
|
userId={userId}
|
||||||
|
showAt
|
||||||
|
className="font-normal inline truncate"
|
||||||
|
withoutSkeleton
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
export const embeddedNostrNpubRenderer: TEmbeddedRenderer = {
|
export const embeddedNostrNpubRenderer: TEmbeddedRenderer = {
|
||||||
regex: /(nostr:npub1[a-z0-9]{58})/g,
|
regex: /(nostr:npub1[a-z0-9]{58})/g,
|
||||||
render: (id: string, index: number) => {
|
render: (id: string, index: number) => {
|
||||||
@@ -34,3 +45,24 @@ export const embeddedNpubRenderer: TEmbeddedRenderer = {
|
|||||||
return <EmbeddedMention key={`embedded-npub-${index}-${npub1}`} userId={npub1} />
|
return <EmbeddedMention key={`embedded-npub-${index}-${npub1}`} userId={npub1} />
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const embeddedNostrNpubTextRenderer: TEmbeddedRenderer = {
|
||||||
|
regex: /(nostr:npub1[a-z0-9]{58})/g,
|
||||||
|
render: (id: string, index: number) => {
|
||||||
|
const npub1 = id.split(':')[1]
|
||||||
|
return <EmbeddedMentionText key={`embedded-nostr-npub-text-${index}-${npub1}`} userId={npub1} />
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const embeddedNostrProfileTextRenderer: TEmbeddedRenderer = {
|
||||||
|
regex: /(nostr:nprofile1[a-z0-9]+)/g,
|
||||||
|
render: (id: string, index: number) => {
|
||||||
|
const nprofile = id.split(':')[1]
|
||||||
|
return (
|
||||||
|
<EmbeddedMentionText
|
||||||
|
key={`embedded-nostr-profile-text-${index}-${nprofile}`}
|
||||||
|
userId={nprofile}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -56,21 +56,24 @@ export function SimpleUsername({
|
|||||||
userId,
|
userId,
|
||||||
showAt = false,
|
showAt = false,
|
||||||
className,
|
className,
|
||||||
skeletonClassName
|
skeletonClassName,
|
||||||
|
withoutSkeleton = false
|
||||||
}: {
|
}: {
|
||||||
userId: string
|
userId: string
|
||||||
showAt?: boolean
|
showAt?: boolean
|
||||||
className?: string
|
className?: string
|
||||||
skeletonClassName?: string
|
skeletonClassName?: string
|
||||||
|
withoutSkeleton?: boolean
|
||||||
}) {
|
}) {
|
||||||
const { profile } = useFetchProfile(userId)
|
const { profile } = useFetchProfile(userId)
|
||||||
if (!profile) {
|
if (!profile && !withoutSkeleton) {
|
||||||
return (
|
return (
|
||||||
<div className="py-1">
|
<div className="py-1">
|
||||||
<Skeleton className={cn('w-16', skeletonClassName)} />
|
<Skeleton className={cn('w-16', skeletonClassName)} />
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
if (!profile) return null
|
||||||
|
|
||||||
const { username } = profile
|
const { username } = profile
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user