diff --git a/src/app/base.ts b/src/app/base.ts index 065b009..289f1a0 100644 --- a/src/app/base.ts +++ b/src/app/base.ts @@ -58,7 +58,7 @@ Object.assign(NetworkContext, { onEvent: (url: string, event: TrustedEvent) => tracker.track(event.id, url), isDeleted: (url: string, event: TrustedEvent) => repository.isDeleted(event), onAuth: async (url: string, challenge: string) => { - if (seenChallenges.has(challenge)) { + if (seenChallenges.has(challenge) || !signer.get()) { return } diff --git a/src/app/components/LogIn.svelte b/src/app/components/LogIn.svelte index e0c9900..f7faf11 100644 --- a/src/app/components/LogIn.svelte +++ b/src/app/components/LogIn.svelte @@ -1,11 +1,13 @@ -
+

Log in with Nostr

Flotilla is built using the @@ -73,13 +93,22 @@

- @{handler.domain} + {#if getNip07()} + + {/if}
- diff --git a/src/app/state.ts b/src/app/state.ts index c5b5140..a96b615 100644 --- a/src/app/state.ts +++ b/src/app/state.ts @@ -364,12 +364,15 @@ export const { name: "profiles", store: profiles, getKey: profile => profile.event.pubkey, - load: (pubkey: string, relays = [], request: Partial = {}) => - load({ + load: async (pubkey: string, hints = [], request: Partial = {}) => { + const relays = getWriteRelayUrls(await loadRelaySelections(pubkey)) + + return load({ ...request, - relays: [...relays, ...INDEXER_RELAYS], + relays: [...relays, ...hints, ...INDEXER_RELAYS], filters: [{kinds: [PROFILE], authors: [pubkey]}], - }), + }) + }, }) export const searchProfiles = derived(profiles, $profiles => @@ -410,10 +413,10 @@ export const { name: "relaySelections", store: relaySelections, getKey: relaySelections => relaySelections.pubkey, - load: (pubkey: string, relays = [], request: Partial = {}) => + load: (pubkey: string, hints = [], request: Partial = {}) => load({ ...request, - relays: [...relays, ...INDEXER_RELAYS], + relays: [...hints, ...INDEXER_RELAYS], filters: [{kinds: [RELAYS], authors: [pubkey]}], }), }) @@ -440,12 +443,15 @@ export const { name: "follows", store: follows, getKey: follows => follows.event.pubkey, - load: (pubkey: string, relays = [], request: Partial = {}) => - load({ + load: async (pubkey: string, hints = [], request: Partial = {}) => { + const relays = getWriteRelayUrls(await loadRelaySelections(pubkey, hints)) + + return load({ ...request, - relays: [...relays, ...INDEXER_RELAYS], + relays: [...relays, ...hints, ...INDEXER_RELAYS], filters: [{kinds: [FOLLOWS], authors: [pubkey]}], - }), + }) + }, }) // Mutes @@ -470,12 +476,15 @@ export const { name: "mutes", store: mutes, getKey: mute => mute.event.pubkey, - load: (pubkey: string, relays = [], request: Partial = {}) => - load({ + load: async (pubkey: string, hints = [], request: Partial = {}) => { + const relays = getWriteRelayUrls(await loadRelaySelections(pubkey, hints)) + + return load({ ...request, - relays: [...relays, ...INDEXER_RELAYS], + relays: [...relays, ...hints, ...INDEXER_RELAYS], filters: [{kinds: [MUTES], authors: [pubkey]}], - }), + }) + }, }) // Groups @@ -537,12 +546,12 @@ export const { name: "groups", store: groups, getKey: (group: PublishedGroup) => group.nom, - load: (nom: string, relays: string[] = [], request: Partial = {}) => + load: (nom: string, hints: string[] = [], request: Partial = {}) => Promise.all([ - ...relays.map(loadRelay), + ...hints.map(loadRelay), load({ ...request, - relays, + relays: hints, filters: [{kinds: [GROUP_META], "#d": [nom]}], }), ]), @@ -638,12 +647,15 @@ export const { name: "groupMemberships", store: groupMemberships, getKey: groupMembership => groupMembership.event.pubkey, - load: (pubkey: string, relays = [], request: Partial = {}) => - load({ + load: async (pubkey: string, hints = [], request: Partial = {}) => { + const relays = getWriteRelayUrls(await loadRelaySelections(pubkey, hints)) + + return load({ ...request, - relays: [...relays, ...INDEXER_RELAYS], + relays: [...hints, ...relays, ...INDEXER_RELAYS], filters: [{kinds: [GROUPS], authors: [pubkey]}], - }), + }) + }, }) // Group Messages diff --git a/src/assets/icons/Calendar Minimalistic.png b/src/assets/icons/Calendar Minimalistic.png new file mode 100644 index 0000000..692c9af Binary files /dev/null and b/src/assets/icons/Calendar Minimalistic.png differ diff --git a/src/assets/icons/Key.svg b/src/assets/icons/Key.svg new file mode 100644 index 0000000..15f13ef --- /dev/null +++ b/src/assets/icons/Key.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/lib/components/Icon.svelte b/src/lib/components/Icon.svelte index 700b418..d299d3e 100644 --- a/src/lib/components/Icon.svelte +++ b/src/lib/components/Icon.svelte @@ -30,6 +30,7 @@ import HandPills from "@assets/icons/Hand Pills.svg?dataurl" import HomeSmile from "@assets/icons/Home Smile.svg?dataurl" import InfoCircle from "@assets/icons/Info Circle.svg?dataurl" + import Key from "@assets/icons/Key.svg?dataurl" import LinkRound from "@assets/icons/Link Round.svg?dataurl" import Login from "@assets/icons/Login.svg?dataurl" import Login2 from "@assets/icons/Login 2.svg?dataurl" @@ -80,6 +81,7 @@ "hand-pills": HandPills, "home-smile": HomeSmile, "info-circle": InfoCircle, + key: Key, "link-round": LinkRound, login: Login, "login-2": Login2, diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 195d516..833a2e6 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -31,7 +31,9 @@ goto("/home") } } + } + $: { if (modal) { dialog?.showModal() prev = modal