Migrate collections to new stores, change some conventions

This commit is contained in:
Jon Staab
2025-11-19 16:47:17 -08:00
parent d197acc41e
commit 6d36f5a912
29 changed files with 354 additions and 414 deletions
+3 -3
View File
@@ -9,11 +9,11 @@ removeRelay(url: string, mode: RelayMode): Promise<Thunk>
addRelay(url: string, mode: RelayMode): Promise<Thunk>
```
## Inbox Relay Management (NIP 17)
## Messaging Relay Management (NIP 17)
```typescript
removeInboxRelay(url: string): Promise<Thunk>
addInboxRelay(url: string): Promise<Thunk>
removeMessagingRelay(url: string): Promise<Thunk>
addMessagingRelay(url: string): Promise<Thunk>
```
## Profile Management (NIP 01)
+1 -1
View File
@@ -36,7 +36,7 @@ defaultSocketPolicies.push(
// This will fetch the user's profile automatically, and return a store that updates
// automatically. Several different stores exist that are ready to go, including handles,
// zappers, relaySelections, relays, follows, mutes.
// zappers, relayLists, relays, follows, mutes.
const profile = deriveProfile(pubkey.get())
// Publish is done using thunks, which optimistically publish to the local database, deferring
+2 -2
View File
@@ -59,8 +59,8 @@ pins → pinsByPubkey → derivePins → loadPins
// Relays
relays relaysByUrl deriveRelay loadRelay
relaySelections relaySelectionsByPubkey deriveRelaySelections loadRelaySelections
inboxRelaySelections inboxRelaySelectionsByPubkey deriveInboxRelaySelections loadInboxRelaySelections
relayLists relayListsByPubkey deriveRelayLists loadRelayLists
messagingRelayLists messagingRelayListsByPubkey deriveMessagingRelayLists loadMessagingRelayLists
// Identity
handles handlesByNip05 deriveHandle loadHandle
+2 -2
View File
@@ -57,8 +57,8 @@ Several thunk factories are provided for common or more complicated scenarios li
- `removeRelay(url: string, mode: RelayMode)`
- `addRelay(url: string, mode: RelayMode)`
- `removeInboxRelay(url: string)`
- `addInboxRelay(url: string)`
- `removeMessagingRelay(url: string)`
- `addMessagingRelay(url: string)`
- `setProfile(profile: Profile)`
- `unfollow(value: string)`
- `follow(tag: string[])`
+8 -8
View File
@@ -39,10 +39,10 @@ export const userMutes: Store<List | undefined>
export const userPins: Store<List | undefined>
// User relay selections
export const userRelaySelections: Store<List | undefined>
export const userRelayLists: Store<List | undefined>
// User inbox relay selections
export const userInboxRelaySelections: Store<List | undefined>
// User messaging relay selections
export const userMessagingRelayLists: Store<List | undefined>
// User blossom servers
export const userBlossomServers: Store<List | undefined>
@@ -66,10 +66,10 @@ function loadUserMutes(relays?: string[], force?: boolean): Promise<void>
function loadUserPins(relays?: string[], force?: boolean): Promise<void>
// Load user relay selections
function loadUserRelaySelections(relays?: string[], force?: boolean): Promise<void>
function loadUserRelayLists(relays?: string[], force?: boolean): Promise<void>
// Load user inbox relay selections
function loadUserInboxRelaySelections(relays?: string[], force?: boolean): Promise<void>
// Load user messaging relay selections
function loadUserMessagingRelayLists(relays?: string[], force?: boolean): Promise<void>
// Load user blossom servers
function loadUserBlossomServers(relays?: string[], force?: boolean): Promise<void>
@@ -94,13 +94,13 @@ const follows = userFollows.get()
### Manual Loading
```typescript
import { loadUserMutes, loadUserRelaySelections } from '@welshman/app'
import { loadUserMutes, loadUserRelayLists } from '@welshman/app'
// Load user mutes from specific relays
await loadUserMutes(['wss://relay1.com', 'wss://relay2.com'])
// Force refresh user relay selections
await loadUserRelaySelections([], true)
await loadUserRelayLists([], true)
// Load from default relays
await loadUserProfile()
+5 -5
View File
@@ -31,7 +31,7 @@ const router = Router.get()
// Get relays for reading events from specific pubkeys
const readRelays = router.FromPubkeys(['pubkey1', 'pubkey2']).getUrls()
// Get relays for publishing an event (author's outbox + mentions' inboxes)
// Get relays for publishing an event (author's outbox + mentions' messaginges)
const publishRelays = router.PublishEvent(event).getUrls()
// Try hard to find a quoted note with maximal fallbacks
@@ -65,7 +65,7 @@ The main class for relay selection. Configure it once with your relay discovery
**Configuration Options:**
- `getUserPubkey()` - Returns the current user's pubkey
- `getPubkeyRelays(pubkey, mode)` - Returns relays for a pubkey ("read", "write", or "inbox")
- `getPubkeyRelays(pubkey, mode)` - Returns relays for a pubkey ("read", "write", or "messaging")
- `getDefaultRelays()` - Returns fallback relays
- `getIndexerRelays()` - Returns relays that index profiles and relay lists
- `getSearchRelays()` - Returns relays that support NIP-50 search
@@ -74,8 +74,8 @@ The main class for relay selection. Configure it once with your relay discovery
**Scenario Methods:**
- `FromRelays(relays)` - Use specific relays
- `ForUser()` / `FromUser()` / `UserInbox()` - User's read/write/inbox relays
- `ForPubkey(pubkey)` / `FromPubkey(pubkey)` / `PubkeyInbox(pubkey)` - Pubkey's relays
- `ForUser()` / `FromUser()` / `UserMessaging()` - User's read/write/messaging relays
- `ForPubkey(pubkey)` / `FromPubkey(pubkey)` / `PubkeyMessaging(pubkey)` - Pubkey's relays
- `ForPubkeys(pubkeys)` / `FromPubkeys(pubkeys)` - Multiple pubkeys' relays
- `Event(event)` - Relays for an event's author
- `PublishEvent(event)` - Relays for publishing (author + mentions)
@@ -105,7 +105,7 @@ Functions that determine how many fallback relays to add:
`getFilterSelections(filters)` automatically chooses appropriate relays based on filter content:
- Search filters → search relays
- Wrap events → user's inbox
- Wrap events → user's messaging
- Profile/relay kinds → indexer relays
- Author filters → authors' relays
- Everything else → user's relays (low weight)
+1 -1
View File
@@ -11,7 +11,7 @@ The `Relay` module provides utilities for working with Nostr relays, including U
export enum RelayMode {
Read = "read",
Write = "write",
Inbox = "inbox"
Messaging = "messaging"
}
// Relay information from NIP-11