Add follows feed, limit how many relays we publish replies to.

This commit is contained in:
Jonathan Staab 2023-02-20 09:08:37 -06:00
parent 8fd75bf26a
commit 927d04b74e
8 changed files with 29 additions and 13 deletions

View File

@ -107,15 +107,16 @@ export const getRelayForEventHint = event =>
export const getRelayForPersonHint = (pubkey, event) =>
first(getPubkeyWriteRelays(pubkey)) || getRelayForEventHint(event)
// If we're replying or reacting to an event, we want the author to know,
// as well as anyone else who is tagged in the original event or the reply.
// Get everyone's read relays. We also want to advertise our content to
// our followers, so write to our write relays as well.
// If we're replying or reacting to an event, we want the author to know, as well as
// anyone else who is tagged in the original event or the reply. Get everyone's read
// relays. Limit how many per pubkey we publish to though. We also want to advertise
// our content to our followers, so write to our write relays as well.
export const getEventPublishRelays = event => {
const tags = Tags.from(event)
const pubkeys = tags.type("p").values().all().concat(event.pubkey)
const relayChunks = pubkeys.map(pubkey => getPubkeyReadRelays(pubkey).slice(0, 3))
return getAllPubkeyReadRelays(pubkeys).concat(getUserWriteRelays())
return aggregateScores(relayChunks).concat(getUserWriteRelays())
}

View File

@ -37,7 +37,7 @@ export const login = ({privkey, pubkey}: {privkey?: string, pubkey?: string}) =>
export const signup = privkey => {
keys.setPrivateKey(privkey)
navigate('/notes/network')
navigate('/notes/follows')
}
export const renderNote = (note, {showEntire = false}) => {

View File

@ -40,7 +40,7 @@
</a>
</li>
<li class="cursor-pointer">
<a class="block px-4 py-2 hover:bg-accent transition-all" href="/notes/network">
<a class="block px-4 py-2 hover:bg-accent transition-all" href="/notes/follows">
<i class="fa-solid fa-tag mr-2" /> Notes
</a>
</li>

View File

@ -7,7 +7,7 @@
export let setActiveTab
</script>
<div class="border-b border-solid border-dark flex pt-2" in:fly={{y: 20}}>
<div class="border-b border-solid border-dark flex pt-2 overflow-auto" in:fly={{y: 20}}>
{#each tabs as tab}
<button
class="cursor-pointer hover:border-b border-solid border-medium px-8 py-4"

View File

@ -3,5 +3,5 @@
import {navigate} from 'svelte-routing'
import user from 'src/agent/user'
onMount(() => navigate(user.getProfile() ? '/notes/network' : '/login'))
onMount(() => navigate(user.getProfile() ? '/notes/follows' : '/login'))
</script>

View File

@ -4,6 +4,7 @@
import Content from "src/partials/Content.svelte"
import NewNoteButton from "src/partials/NewNoteButton.svelte"
import Tabs from "src/partials/Tabs.svelte"
import Follows from "src/views/notes/Follows.svelte"
import Network from "src/views/notes/Network.svelte"
import Popular from "src/views/notes/Popular.svelte"
import user from 'src/agent/user'
@ -21,8 +22,10 @@
</Content>
{/if}
<div>
<Tabs tabs={['network', 'popular']} {activeTab} {setActiveTab} />
{#if activeTab === 'network'}
<Tabs tabs={['follows', 'network', 'popular']} {activeTab} {setActiveTab} />
{#if activeTab === 'follows'}
<Follows />
{:else if activeTab === 'network'}
<Network />
{:else}
<Popular />

View File

@ -47,7 +47,7 @@
sleep(3000),
])
navigate('/notes/network')
navigate('/notes/follows')
} else {
await sleep(1000)
@ -57,7 +57,7 @@
}
const skip = () => {
navigate('/notes/network')
navigate('/notes/follows')
}
searchSample()

View File

@ -0,0 +1,12 @@
<script>
import {shuffle} from 'src/util/misc'
import Notes from "src/partials/Notes.svelte"
import {getUserFollows} from 'src/agent/social'
import {getAllPubkeyWriteRelays} from 'src/agent/relays'
const authors = shuffle(getUserFollows()).slice(0, 256)
const relays = getAllPubkeyWriteRelays(authors)
const filter = {kinds: [1, 7], authors}
</script>
<Notes {relays} {filter} />