diff --git a/ROADMAP.md b/ROADMAP.md index 34746a55..fbf6e88c 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,6 +1,6 @@ # Current -- [ ] Check on RelayCard, it should automatically do the right thing for anon/pubkey +- [ ] Details on note in modal is broken - [ ] Remember message/chat status - [ ] Image classification - https://github.com/bhky/opennsfw2 diff --git a/src/agent/pool.ts b/src/agent/pool.ts index 567a7cd4..0227444d 100644 --- a/src/agent/pool.ts +++ b/src/agent/pool.ts @@ -94,6 +94,13 @@ const Meta = { const forceUrls = (import.meta.env.VITE_FORCE_RELAYS || "").split(",").filter(identity) +const defaultUrls = [ + "wss://nostr-pub.wellorder.net", + "wss://nostr.zebedee.cloud", + "wss://nos.lol", + "wss://brb.io", +] + const getUrls = relays => { if (relays.length === 0) { error(`Attempted to connect to zero urls`) @@ -370,6 +377,7 @@ export default { Config, Meta, forceUrls, + defaultUrls, disconnect, getQuality, publish, diff --git a/src/agent/relays.ts b/src/agent/relays.ts index 667102e4..eaa9700a 100644 --- a/src/agent/relays.ts +++ b/src/agent/relays.ts @@ -185,6 +185,11 @@ export const sampleRelays = (relays, scale = 1) => { relays = relays.concat(shuffle(getUserReadRelays()).slice(0, limit - relays.length)) } + // And if we still have nothing, add a default + if (relays.length === 0) { + relays = [{url: pool.forceUrls[0] || pool.defaultUrls[0]}] + } + return uniqByUrl(relays) } diff --git a/src/agent/social.ts b/src/agent/social.ts index 58d29336..2863e827 100644 --- a/src/agent/social.ts +++ b/src/agent/social.ts @@ -3,6 +3,13 @@ import {Tags} from "src/util/nostr" import {getPersonWithFallback} from "src/agent/db" import user from "src/agent/user" +export const defaultFollows = [ + "97c70a44366a6535c145b333f973ea86dfdc2d7a99da618c40c64705ad98e322", // hodlbod + "3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d", // fiatjaf + "82341f882b6eabcd2ba7f1ef90aad961cf074af15b9ef44a09f9d2a8fbfbe6a2", // jack + "6e468422dfb74a5738702a8823b9b28168abab8655faacb6853cd0ee15deee93", // Gigi +] + export const getFollows = pubkey => Tags.wrap(getPersonWithFallback(pubkey).petnames).type("p").values().all() diff --git a/src/agent/user.ts b/src/agent/user.ts index 70fb3096..b013afe2 100644 --- a/src/agent/user.ts +++ b/src/agent/user.ts @@ -88,6 +88,7 @@ export default { petnames, getPetnames: () => profileCopy.petnames, petnamePubkeys: derived(petnames, map(nth(1))) as Readable>, + getPetnamePubkeys: () => profileCopy.petnames.map(nth(1)), updatePetnames(f) { const $petnames = f(profileCopy.petnames) diff --git a/src/app/EnsureData.svelte b/src/app/EnsureData.svelte index 583f194e..0944f4ad 100644 --- a/src/app/EnsureData.svelte +++ b/src/app/EnsureData.svelte @@ -32,7 +32,7 @@ {/if}
{#each $relays as relay (relay.url)} - + {:else}
@@ -45,7 +45,7 @@
- +
diff --git a/src/app/shared/NoteActions.svelte b/src/app/shared/NoteActions.svelte index b3f03468..de9143ac 100644 --- a/src/app/shared/NoteActions.svelte +++ b/src/app/shared/NoteActions.svelte @@ -312,7 +312,7 @@

This note was found on {quantify(note.seen_on.length, "relay")} below.

{#each note.seen_on as url} - + {/each}

Details

diff --git a/src/app/shared/PersonInfo.svelte b/src/app/shared/PersonInfo.svelte index cc924c0f..f95dd3cd 100644 --- a/src/app/shared/PersonInfo.svelte +++ b/src/app/shared/PersonInfo.svelte @@ -14,9 +14,9 @@ export let person export let hasPetname = null - export let removePetname = ({pubkey}) => user.removePetname(pubkey) + const removePetname = ({pubkey}) => user.removePetname(pubkey) - export let addPetname = ({pubkey}) => { + const addPetname = ({pubkey}) => { const [{url}] = sampleRelays(getPubkeyWriteRelays(pubkey)) user.addPetname(pubkey, url, displayPerson(person)) diff --git a/src/app/shared/PersonRelays.svelte b/src/app/shared/PersonRelays.svelte index 374ad682..2aa2785e 100644 --- a/src/app/shared/PersonRelays.svelte +++ b/src/app/shared/PersonRelays.svelte @@ -16,9 +16,7 @@
No relays found
{:else} {#each relays as relay (relay.url)} - {#if relay.write !== "!"} - - {/if} + {/each} {/if} diff --git a/src/app/shared/RelayCard.svelte b/src/app/shared/RelayCard.svelte index acea14a4..0e127c90 100644 --- a/src/app/shared/RelayCard.svelte +++ b/src/app/shared/RelayCard.svelte @@ -14,7 +14,7 @@ export let relay export let theme = "gray-8" export let showStatus = false - export let showActions = false + export let hideActions = false export let showControls = false const {relays, canPublish} = user @@ -23,11 +23,11 @@ let quality = null let message = null - export let hasRelay = r => Boolean(find(propEq("url", r.url), $relays)) + $: hasRelay = Boolean(find(propEq("url", relay.url), $relays)) - export let removeRelay = r => user.removeRelay(r.url) + const removeRelay = r => user.removeRelay(r.url) - export let addRelay = r => { + const addRelay = r => { user.addRelay(r.url) const pubkey = user.getPubkey() @@ -79,17 +79,16 @@

{/if}
- {#if showActions} + {#if !hideActions} - {#if hasRelay(relay) && $relays.length > 1} - - {/if} - {#if !hasRelay(relay)} + {#if !hasRelay} + {:else if $relays.length > 1} + {/if} {/if} @@ -97,7 +96,8 @@ {#if relay.description}

{relay.description}

{/if} - {#if hasRelay(relay) && showControls && $canPublish} + {#if hasRelay && showControls && $canPublish} +
Publish to this relay? {#if relay} - + {/if}
{/each} diff --git a/src/app/views/NoteCreate.svelte b/src/app/views/NoteCreate.svelte index 6aa70f1d..a2e781d6 100644 --- a/src/app/views/NoteCreate.svelte +++ b/src/app/views/NoteCreate.svelte @@ -151,7 +151,7 @@
- +
- {#if follows.length === 0} + {#if $petnamePubkeys.length === 0}
No follows selected
{:else} - {#each follows as pubkey} - + {#each $petnamePubkeys as pubkey} + {/each} {/if}
@@ -68,7 +64,7 @@ - {#each search(q).slice(0, 50) as person (person.pubkey)} - + {#each results.slice(0, 50) as person (person.pubkey)} + {/each} diff --git a/src/app/views/OnboardingIntro.svelte b/src/app/views/OnboardingIntro.svelte index 79b201f8..2045d88e 100644 --- a/src/app/views/OnboardingIntro.svelte +++ b/src/app/views/OnboardingIntro.svelte @@ -19,7 +19,7 @@ When you’re ready to dive in, click below and we’ll guide you through the process of creating an account.

- modal.push({type: "onboarding", stage: "key"})}> + modal.replace({type: "onboarding", stage: "key"})}> Let's go! diff --git a/src/app/views/OnboardingKey.svelte b/src/app/views/OnboardingKey.svelte index fd5312bc..8a62ed30 100644 --- a/src/app/views/OnboardingKey.svelte +++ b/src/app/views/OnboardingKey.svelte @@ -32,7 +32,7 @@ modal.push({type: "onboarding", stage: nextStage})}> + on:click={() => modal.replace({type: "onboarding", stage: nextStage})}> Log in
diff --git a/src/app/views/OnboardingRelays.svelte b/src/app/views/OnboardingRelays.svelte index bfbd3f5f..33ba2b27 100644 --- a/src/app/views/OnboardingRelays.svelte +++ b/src/app/views/OnboardingRelays.svelte @@ -1,5 +1,5 @@ - +
Get Connected

Nostr is a protocol, not a platform. This means that you choose where to store your data. Select your preferred storage relays below, or click "continue" to use some reasonable defaults. You can change your selection any time.

- modal.push({type: "onboarding", stage: "follows"})}> - Continue - - +
+ modal.replace({type: "onboarding", stage: "follows"})}> + Continue +

Your relays

- {#if relays.length === 0} + {#if $relays.length === 0}
No relays connected
{:else}
- {#each relays as relay (relay.url)} - + {#each $relays as relay (relay.url)} + {/each}
{/if} @@ -69,10 +73,10 @@ {#each (search(q) || []).slice(0, 50) as relay (relay.url)} - + {/each} - Showing {Math.min($knownRelays.length - relays.length, 50)} - of {$knownRelays.length - relays.length} known relays + Showing {Math.min($knownRelays.length - $relays.length, 50)} + of {$knownRelays.length - $relays.length} known relays
diff --git a/src/app/views/RelayList.svelte b/src/app/views/RelayList.svelte index 9b50078f..999b77ca 100644 --- a/src/app/views/RelayList.svelte +++ b/src/app/views/RelayList.svelte @@ -35,7 +35,7 @@ {/if}
{#each $relays as relay (relay.url)} - + {/each}
@@ -48,11 +48,7 @@ Coracle automatically discovers relays as you browse the network. Adding more relays will generally make things quicker to load, at the expense of higher data usage.

- -
- -
-
+