Browse Source

move session relays to last tab

include trending relay in the onboarding favorites template
imwald
Silberengel 2 weeks ago
parent
commit
e3d974e2b9
  1. 1
      src/constants.ts
  2. 14
      src/lib/new-user-template.test.ts
  3. 9
      src/lib/new-user-template.ts
  4. 8
      src/pages/secondary/RelaySettingsPage/index.tsx
  5. 7
      src/services/client.service.ts

1
src/constants.ts

@ -74,6 +74,7 @@ export const DESKTOP_APP_DOWNLOAD_URL_DEFAULT =
export const DEFAULT_FAVORITE_RELAYS = [ export const DEFAULT_FAVORITE_RELAYS = [
'wss://theforest.nostr1.com', 'wss://theforest.nostr1.com',
'wss://nostr.land', 'wss://nostr.land',
'wss://feeds.nostrarchives.com/notes/trending/reactions/today'
] ]
/** /**

14
src/lib/new-user-template.test.ts

@ -1,7 +1,15 @@
import { describe, expect, it } from 'vitest' import { describe, expect, it } from 'vitest'
import { kinds } from 'nostr-tools' import { kinds } from 'nostr-tools'
import { ExtendedKind, FAST_READ_RELAY_URLS, FAST_WRITE_RELAY_URLS } from '@/constants' import { ExtendedKind, FAST_READ_RELAY_URLS, FAST_WRITE_RELAY_URLS } from '@/constants'
import { NEW_USER_BLOCKED_RELAY_URLS, NEW_USER_HTTP_RELAY_URL, buildNewUserTemplateDrafts, newUserProfileDisplayName, newUserProfileName, newUserProfileSuffix } from '@/lib/new-user-template' import {
NEW_USER_BLOCKED_RELAY_URLS,
NEW_USER_HTTP_RELAY_URL,
NEW_USER_TRENDING_RELAY_URL,
buildNewUserTemplateDrafts,
newUserProfileDisplayName,
newUserProfileName,
newUserProfileSuffix
} from '@/lib/new-user-template'
import { newUserTemplatePublishRelays } from '@/lib/new-user-template-broadcast' import { newUserTemplatePublishRelays } from '@/lib/new-user-template-broadcast'
import { normalizeAnyRelayUrl } from '@/lib/url' import { normalizeAnyRelayUrl } from '@/lib/url'
import type { TRelayList } from '@/types' import type { TRelayList } from '@/types'
@ -55,7 +63,9 @@ describe('buildNewUserTemplateDrafts', () => {
it('builds favorite relays kind 10012', () => { it('builds favorite relays kind 10012', () => {
expect(drafts.favoriteRelays.kind).toBe(ExtendedKind.FAVORITE_RELAYS) expect(drafts.favoriteRelays.kind).toBe(ExtendedKind.FAVORITE_RELAYS)
expect(drafts.favoriteRelays.tags.filter((t) => t[0] === 'relay')).toHaveLength(2) const favorites = drafts.favoriteRelays.tags.filter((t) => t[0] === 'relay').map((t) => t[1])
expect(favorites).toContain(NEW_USER_TRENDING_RELAY_URL)
expect(favorites).toHaveLength(3)
}) })
it('builds blocked relays kind 10006 with dead relays', () => { it('builds blocked relays kind 10006 with dead relays', () => {

9
src/lib/new-user-template.ts

@ -3,6 +3,7 @@ import {
FAST_READ_RELAY_URLS, FAST_READ_RELAY_URLS,
FAST_WRITE_RELAY_URLS FAST_WRITE_RELAY_URLS
} from '@/constants' } from '@/constants'
import { buildWispTrendingNotesRelayUrl } from '@/lib/wisp-trending-relay'
import { import {
createBlockedRelaysDraftEvent, createBlockedRelaysDraftEvent,
createFavoriteRelaysDraftEvent, createFavoriteRelaysDraftEvent,
@ -17,6 +18,9 @@ import { TDraftEvent, TMailboxRelay } from '@/types'
export const NEW_USER_HTTP_RELAY_URL = 'https://mercury-relay.imwald.eu/' export const NEW_USER_HTTP_RELAY_URL = 'https://mercury-relay.imwald.eu/'
/** nostrarchives trending notes (reactions / today) — read-only feed for new accounts. */
export const NEW_USER_TRENDING_RELAY_URL = buildWispTrendingNotesRelayUrl('reactions', 'today')
/** Dead relays seeded into kind 10006 for new accounts. */ /** Dead relays seeded into kind 10006 for new accounts. */
export const NEW_USER_BLOCKED_RELAY_URLS = [ export const NEW_USER_BLOCKED_RELAY_URLS = [
'wss://orly-relay.imwald.eu', 'wss://orly-relay.imwald.eu',
@ -70,7 +74,10 @@ export function buildNewUserProfileDraft(pubkey: string): TDraftEvent {
} }
export function buildNewUserFavoriteRelaysDraft(): TDraftEvent { export function buildNewUserFavoriteRelaysDraft(): TDraftEvent {
return createFavoriteRelaysDraftEvent([...DEFAULT_FAVORITE_RELAYS], []) return createFavoriteRelaysDraftEvent(
[...DEFAULT_FAVORITE_RELAYS, NEW_USER_TRENDING_RELAY_URL],
[]
)
} }
export function buildNewUserBlockedRelaysDraft(): TDraftEvent { export function buildNewUserBlockedRelaysDraft(): TDraftEvent {

8
src/pages/secondary/RelaySettingsPage/index.tsx

@ -125,8 +125,8 @@ const RelaySettingsPage = forwardRef(({ index, hideTitlebar = false }: { index?:
<TabsTrigger value="favorite-relays" className="w-full sm:w-auto">{t('Favorite Relays')}</TabsTrigger> <TabsTrigger value="favorite-relays" className="w-full sm:w-auto">{t('Favorite Relays')}</TabsTrigger>
<TabsTrigger value="mailbox" className="w-full sm:w-auto">{t('Read & Write Relays')}</TabsTrigger> <TabsTrigger value="mailbox" className="w-full sm:w-auto">{t('Read & Write Relays')}</TabsTrigger>
<TabsTrigger value="http-relays" className="w-full sm:w-auto">{t('HTTP relays')}</TabsTrigger> <TabsTrigger value="http-relays" className="w-full sm:w-auto">{t('HTTP relays')}</TabsTrigger>
<TabsTrigger value="session-relays" className="w-full sm:w-auto">{t('Session relays')}</TabsTrigger>
<TabsTrigger value="cache-relays" className="w-full sm:w-auto">{t('Cache Relays')}</TabsTrigger> <TabsTrigger value="cache-relays" className="w-full sm:w-auto">{t('Cache Relays')}</TabsTrigger>
<TabsTrigger value="session-relays" className="w-full sm:w-auto">{t('Session relays')}</TabsTrigger>
</TabsList> </TabsList>
<TabsContent value="favorite-relays"> <TabsContent value="favorite-relays">
<FavoriteRelaysSetting /> <FavoriteRelaysSetting />
@ -137,12 +137,12 @@ const RelaySettingsPage = forwardRef(({ index, hideTitlebar = false }: { index?:
<TabsContent value="http-relays"> <TabsContent value="http-relays">
<HttpRelaysSetting /> <HttpRelaysSetting />
</TabsContent> </TabsContent>
<TabsContent value="session-relays">
<SessionRelaysTab />
</TabsContent>
<TabsContent value="cache-relays"> <TabsContent value="cache-relays">
<CacheRelaysSetting /> <CacheRelaysSetting />
</TabsContent> </TabsContent>
<TabsContent value="session-relays">
<SessionRelaysTab />
</TabsContent>
</Tabs> </Tabs>
</SecondaryPageLayout> </SecondaryPageLayout>
) )

7
src/services/client.service.ts

@ -71,7 +71,7 @@ import {
import { import {
filterViewerBlockedRelaysForFetch, filterViewerBlockedRelaysForFetch,
getViewerBlockedRelayUrls, getViewerBlockedRelayUrls,
isRelayBlockedByUser, isViewerRelayBlocked,
parseBlockedRelayUrlsFromEvent, parseBlockedRelayUrlsFromEvent,
setViewerBlockedRelayUrls setViewerBlockedRelayUrls
} from '@/lib/viewer-blocked-relays' } from '@/lib/viewer-blocked-relays'
@ -844,11 +844,10 @@ class ClientService extends EventTarget {
/** Close pooled sockets to relays on the viewer block list (hostname-aware, wss/https). */ /** Close pooled sockets to relays on the viewer block list (hostname-aware, wss/https). */
closeViewerBlockedRelayConnections(): void { closeViewerBlockedRelayConnections(): void {
const blocked = getViewerBlockedRelayUrls() if (!getViewerBlockedRelayUrls().length) return
if (!blocked.length) return
try { try {
const toClose = [...this.pool.listConnectionStatus().keys()].filter((url) => const toClose = [...this.pool.listConnectionStatus().keys()].filter((url) =>
isRelayBlockedByUser(url, blocked) isViewerRelayBlocked(url)
) )
if (toClose.length > 0) this.pool.close(toClose) if (toClose.length > 0) this.pool.close(toClose)
} catch { } catch {

Loading…
Cancel
Save