Fix profile loading, improve feed list item updating

This commit is contained in:
Jon Staab 2024-06-20 11:08:13 -07:00
parent 148a63d95f
commit c9db37c92a
2 changed files with 34 additions and 24 deletions

View File

@ -1,11 +1,12 @@
<script lang="ts">
import {derived} from "svelte/store"
import {uniq} from "@welshman/lib"
import {parseAnything} from "src/util/nostr"
import Anchor from "src/partials/Anchor.svelte"
import SearchSelect from "src/partials/SearchSelect.svelte"
import PersonBadge from "src/app/shared/PersonBadge.svelte"
import {router} from "src/app/util/router"
import {profileSearch, createPeopleLoader} from "src/engine"
import {profileSearch, loadPubkeyProfiles, createPeopleLoader} from "src/engine"
export let value
export let multiple = false
@ -16,27 +17,33 @@
const {loading, load} = createPeopleLoader()
const search = term => {
load(term)
const search = derived(profileSearch, $profileSearch => {
return term => {
load(term)
parseAnything(term).then(result => {
if (result?.type === "npub") {
value = uniq(value.concat(result.data))
input.clearTerm()
}
parseAnything(term).then(result => {
if (result?.type === "npub") {
loadPubkeyProfiles([result.data])
value = uniq(value.concat(result.data))
input.clearTerm()
onChange(value)
}
if (result?.type === "nprofile") {
value = uniq(value.concat(result.data.pubkey))
input.clearTerm()
}
})
if (result?.type === "nprofile") {
loadPubkeyProfiles([result.data.pubkey])
value = uniq(value.concat(result.data.pubkey))
input.clearTerm()
onChange(value)
}
})
return $profileSearch.searchValues(term)
}
return $profileSearch.searchValues(term)
}
})
</script>
<SearchSelect
{search}
search={$search}
{onChange}
{multiple}
{autofocus}

View File

@ -11,7 +11,6 @@
import {router} from "src/app/util/router"
import {displayFeed} from "src/domain"
import {
pubkey,
userFeeds,
feedSearch,
userListFeeds,
@ -20,10 +19,7 @@
userFollows,
} from "src/engine"
const feeds = uniqBy(
feed => getAddress(feed.event),
sortBy(displayFeed, [...$userFeeds, ...$userListFeeds, ...$userFavoritedFeeds]),
)
const favoritedFeeds = $userFavoritedFeeds
const createFeed = () => router.at("feeds/create").open()
@ -37,6 +33,13 @@
let limit = 20
let element
$: allUserFeeds = [...$userFeeds, ...$userListFeeds]
$: feeds = uniqBy(
feed => getAddress(feed.event),
sortBy(displayFeed, [...allUserFeeds, ...favoritedFeeds]),
)
loadPubkeyFeeds(Array.from($userFollows))
onMount(() => {
@ -56,7 +59,7 @@
<i class="fa fa-plus" /> Feed
</Anchor>
</div>
{#each feeds as feed (getAddress(feed.event))}
{#each feeds as feed (feed.event.id)}
{@const address = getAddress(feed.event)}
<div in:fly={{y: 20}}>
<FeedCard {address}>
@ -68,7 +71,7 @@
</FeedCard>
</div>
{/each}
{#each $userListFeeds as feed (getAddress(feed.list.event))}
{#each $userListFeeds as feed (feed.list.event.id)}
{@const address = getAddress(feed.list.event)}
<div in:fly={{y: 20}}>
<FeedCard {address}>
@ -93,7 +96,7 @@
</Input>
{#each $feedSearch
.searchValues(q)
.filter(address => !address.includes($pubkey))
.filter(address => !feeds.find(feed => getAddress(feed.event) === address))
.slice(0, limit) as address (address)}
<FeedCard {address} />
{/each}