mirror of
https://github.com/coracle-social/coracle.git
synced 2024-09-30 00:41:12 +00:00
Fix profile loading, improve feed list item updating
This commit is contained in:
parent
148a63d95f
commit
c9db37c92a
@ -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}
|
||||
|
@ -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}
|
||||
|
Loading…
Reference in New Issue
Block a user