From 9b276885e6ff322d839cdc625a59f426f1d26246 Mon Sep 17 00:00:00 2001 From: Jonathan Staab Date: Thu, 9 Feb 2023 10:26:09 -0600 Subject: [PATCH] Add followers/follows list --- src/App.svelte | 3 +++ src/partials/PersonInfo.svelte | 29 +++++++++++++++++++++++++++++ src/routes/Alerts.svelte | 7 ++++++- src/routes/Person.svelte | 20 +++++++++++++++++--- src/routes/RelayList.svelte | 4 ++-- src/util/nostr.js | 3 +++ src/views/PersonList.svelte | 18 ++++++++++++++++++ src/views/SearchPeople.svelte | 21 ++++----------------- 8 files changed, 82 insertions(+), 23 deletions(-) create mode 100644 src/partials/PersonInfo.svelte create mode 100644 src/views/PersonList.svelte diff --git a/src/App.svelte b/src/App.svelte index 1db72939..e6a25e4a 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -20,6 +20,7 @@ import Spinner from 'src/partials/Spinner.svelte' import Modal from 'src/partials/Modal.svelte' import SignUp from "src/views/SignUp.svelte" + import PersonList from "src/views/PersonList.svelte" import PrivKeyLogin from "src/views/PrivKeyLogin.svelte" import PubKeyLogin from "src/views/PubKeyLogin.svelte" import NoteDetail from "src/views/NoteDetail.svelte" @@ -348,6 +349,8 @@ {:else if $modal.type === 'person/settings'} + {:else if $modal.type === 'person/list'} + {:else if $modal.type === 'message'}
{$modal.message}
diff --git a/src/partials/PersonInfo.svelte b/src/partials/PersonInfo.svelte new file mode 100644 index 00000000..6999e93e --- /dev/null +++ b/src/partials/PersonInfo.svelte @@ -0,0 +1,29 @@ + + + +
+
+
+

{displayPerson(person)}

+ {#if person.verified_as} +
+ + {last(person.verified_as.split('@'))} +
+ {/if} +
+

{@html renderContent(ellipsize(person.about || '', 140))}

+
+
diff --git a/src/routes/Alerts.svelte b/src/routes/Alerts.svelte index f990946c..d916a578 100644 --- a/src/routes/Alerts.svelte +++ b/src/routes/Alerts.svelte @@ -6,11 +6,12 @@ import {database} from 'src/agent' import {alerts} from 'src/app' import Note from 'src/partials/Note.svelte' + import Spinner from 'src/partials/Spinner.svelte' import Content from 'src/partials/Content.svelte' import Like from 'src/partials/Like.svelte' let limit = 0 - let notes = [] + let notes = null onMount(async () => { alerts.lastCheckedAlerts.set(now()) @@ -25,6 +26,7 @@ }) +{#if notes} {#each notes as e (e.id)}
@@ -40,3 +42,6 @@ {/each} +{:else} + +{/if} diff --git a/src/routes/Person.svelte b/src/routes/Person.svelte index 7b23a740..7ac87def 100644 --- a/src/routes/Person.svelte +++ b/src/routes/Person.svelte @@ -6,7 +6,7 @@ import {fly} from 'svelte/transition' import {navigate} from 'svelte-routing' import {renderContent} from 'src/util/html' - import {displayPerson} from 'src/util/nostr' + import {displayPerson, Tags} from 'src/util/nostr' import Tabs from "src/partials/Tabs.svelte" import Content from "src/partials/Content.svelte" import Anchor from "src/partials/Anchor.svelte" @@ -61,6 +61,16 @@ const setActiveTab = tab => navigate(routes.person(pubkey, tab)) + const showFollows = () => { + const pubkeys = Tags.wrap(person.petnames).pubkeys() + + modal.set({type: 'person/list', pubkeys}) + } + + const showFollowers = () => { + modal.set({type: 'person/list', pubkeys: Array.from(followers)}) + } + const follow = async () => { const relay = first(relays || getRelays(pubkey)) const tag = ["p", pubkey, relay.url, person.name || ""] @@ -131,8 +141,12 @@

{@html renderContent(person.about || '')}

{#if person?.petnames}
-
{person.petnames.length} following
-
{followersCount} followers
+ +
{/if}
diff --git a/src/routes/RelayList.svelte b/src/routes/RelayList.svelte index aa8fe898..ffa501bd 100644 --- a/src/routes/RelayList.svelte +++ b/src/routes/RelayList.svelte @@ -1,5 +1,5 @@ + + + {#each ($people || []) as person} + + {/each} + diff --git a/src/views/SearchPeople.svelte b/src/views/SearchPeople.svelte index 745f7bc2..fe9775b8 100644 --- a/src/views/SearchPeople.svelte +++ b/src/views/SearchPeople.svelte @@ -1,10 +1,7 @@ -{#each (search ? search(q) : []).slice(0, 30) as p (p.pubkey)} - {#if p.pubkey !== $user.pubkey} - -
-
-
-

{displayPerson(p)}

-
-

{@html renderContent(ellipsize(p.about || '', 140))}

-
-
+{#each (search ? search(q) : []).slice(0, 30) as person (person.pubkey)} + {#if person.pubkey !== $user.pubkey} + {/if} {/each}