This commit is contained in:
codytseng 2026-01-31 17:56:30 +08:00
parent ed8a22d5bc
commit 942c9a7d12
3 changed files with 21 additions and 19 deletions

View file

@ -30,6 +30,11 @@
/>
</head>
<body>
<noscript
>You need to enable JavaScript to run this app. If you're looking for something on the nostr
network, try replacing everything before the last slash in your URL bar with njump.me or
nostr.at for a view-only nostr interface.</noscript
>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>

View file

@ -23,7 +23,7 @@ import RelayIcon from '../RelayIcon'
type TPostTargetItem =
| {
type: 'writeRelays'
type: 'optimalRelays'
}
| {
type: 'relay'
@ -67,7 +67,7 @@ export default function PostRelaySelector({
}
if (postTargetItems.length === 1) {
const item = postTargetItems[0]
if (item.type === 'writeRelays') {
if (item.type === 'optimalRelays') {
return t('Optimal relays')
}
if (item.type === 'relay') {
@ -79,7 +79,7 @@ export default function PostRelaySelector({
: simplifyUrl(item.urls[0])
}
}
const hasWriteRelays = postTargetItems.some((item) => item.type === 'writeRelays')
const hasOptimalRelays = postTargetItems.some((item) => item.type === 'optimalRelays')
const relayCount = postTargetItems.reduce((count, item) => {
if (item.type === 'relay') {
return count + 1
@ -89,7 +89,7 @@ export default function PostRelaySelector({
}
return count
}, 0)
if (hasWriteRelays) {
if (hasOptimalRelays) {
return t('Optimal relays and {{count}} other relays', { count: relayCount })
}
return t('{{count}} relays', { count: relayCount })
@ -104,11 +104,11 @@ export default function PostRelaySelector({
setPostTargetItems(parentEventSeenOnRelays.map((url) => ({ type: 'relay', url })))
return
}
setPostTargetItems([{ type: 'writeRelays' }])
setPostTargetItems([{ type: 'optimalRelays' }])
}, [openFrom, parentEventSeenOnRelays])
useEffect(() => {
const isProtectedEvent = postTargetItems.every((item) => item.type !== 'writeRelays')
const isProtectedEvent = postTargetItems.every((item) => item.type !== 'optimalRelays')
const relayUrls = postTargetItems.flatMap((item) => {
if (item.type === 'relay') {
return [item.url]
@ -123,11 +123,11 @@ export default function PostRelaySelector({
setAdditionalRelayUrls(relayUrls)
}, [postTargetItems])
const handleWriteRelaysCheckedChange = useCallback((checked: boolean) => {
const handleOptimalRelaysCheckedChange = useCallback((checked: boolean) => {
if (checked) {
setPostTargetItems((prev) => [...prev, { type: 'writeRelays' }])
setPostTargetItems((prev) => [...prev, { type: 'optimalRelays' }])
} else {
setPostTargetItems((prev) => prev.filter((item) => item.type !== 'writeRelays'))
setPostTargetItems((prev) => prev.filter((item) => item.type !== 'optimalRelays'))
}
}, [])
@ -158,10 +158,10 @@ export default function PostRelaySelector({
return (
<>
<MenuItem
checked={postTargetItems.some((item) => item.type === 'writeRelays')}
onCheckedChange={handleWriteRelaysCheckedChange}
checked={postTargetItems.some((item) => item.type === 'optimalRelays')}
onCheckedChange={handleOptimalRelaysCheckedChange}
>
{t('Write relays')}
{t('Optimal relays')}
</MenuItem>
{relaySets.length > 0 && (
<>

View file

@ -1,9 +1,11 @@
import { Skeleton } from '@/components/ui/skeleton'
import { IS_COMMUNITY_MODE } from '@/constants'
import { createFakeEvent } from '@/lib/event'
import { cn } from '@/lib/utils'
import { TRelayInfo } from '@/types'
import { HTMLProps } from 'react'
import { useTranslation } from 'react-i18next'
import ContentPreview from '../ContentPreview'
import RelayIcon from '../RelayIcon'
import SaveRelayDropdownMenu from '../SaveRelayDropdownMenu'
import { SimpleUserAvatar } from '../UserAvatar'
@ -34,13 +36,8 @@ export default function RelaySimpleInfo({
{relayInfo && !IS_COMMUNITY_MODE && <SaveRelayDropdownMenu urls={[relayInfo.url]} />}
</div>
{!!relayInfo?.description && (
<div
className="line-clamp-3 whitespace-pre-wrap break-words"
style={{
overflowWrap: 'anywhere'
}}
>
{relayInfo.description}
<div className="line-clamp-3 whitespace-pre-wrap break-words">
<ContentPreview event={createFakeEvent({ content: relayInfo.description })} />
</div>
)}
{!!users?.length && (