From cd8d8b548f6340e6424284cd83a8818608c3b9b9 Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Mon, 16 Dec 2024 12:54:17 -0800 Subject: [PATCH] Add profile detail modal --- src/app/components/ChannelMessage.svelte | 18 +++-- src/app/components/Chat.svelte | 8 ++- src/app/components/ChatMessage.svelte | 18 ++--- src/app/components/ContentMention.svelte | 11 +-- src/app/components/PrimaryNav.svelte | 2 +- src/app/components/Profile.svelte | 15 ++-- src/app/components/ProfileDetail.svelte | 76 ++++++++++++++++++++ src/app/components/ProfileMultiSelect.svelte | 9 +-- src/app/components/ThreadItem.svelte | 9 ++- src/routes/settings/about/+page.svelte | 9 ++- src/routes/spaces/[relay]/+page.svelte | 30 ++++---- 11 files changed, 150 insertions(+), 55 deletions(-) create mode 100644 src/app/components/ProfileDetail.svelte diff --git a/src/app/components/ChannelMessage.svelte b/src/app/components/ChannelMessage.svelte index c8086c2b..338a9b28 100644 --- a/src/app/components/ChannelMessage.svelte +++ b/src/app/components/ChannelMessage.svelte @@ -11,16 +11,16 @@ import {isMobile} from "@lib/html" import LongPress from "@lib/components/LongPress.svelte" import Avatar from "@lib/components/Avatar.svelte" - import Link from "@lib/components/Link.svelte" import Icon from "@lib/components/Icon.svelte" import Button from "@lib/components/Button.svelte" import Content from "@app/components/Content.svelte" import ThunkStatus from "@app/components/ThunkStatus.svelte" + import ProfileDetail from "@app/components/ProfileDetail.svelte" import ReactionSummary from "@app/components/ReactionSummary.svelte" import ChannelMessageEmojiButton from "@app/components/ChannelMessageEmojiButton.svelte" import ChannelMessageMenuButton from "@app/components/ChannelMessageMenuButton.svelte" import ChannelMessageMenuMobile from "@app/components/ChannelMessageMenuMobile.svelte" - import {colors, tagRoom, pubkeyLink, PROTECTED} from "@app/state" + import {colors, tagRoom, PROTECTED} from "@app/state" import {publishDelete, publishReaction} from "@app/commands" import {pushModal} from "@app/modal" @@ -39,6 +39,8 @@ const onLongPress = () => pushModal(ChannelMessageMenuMobile, {url, event}) + const openProfile = () => pushModal(ProfileDetail, {pubkey: event.pubkey}) + const onReactionClick = (content: string, events: TrustedEvent[]) => { const reaction = events.find(e => e.pubkey === $pubkey) @@ -61,22 +63,18 @@ class="group relative flex w-full cursor-default flex-col p-2 pb-3 text-left">
{#if showPubkey} - + {:else}
{/if}
{#if showPubkey}
- + {formatTimestampAsTime(event.created_at)}
{/if} diff --git a/src/app/components/Chat.svelte b/src/app/components/Chat.svelte index ba851039..7f4aa522 100644 --- a/src/app/components/Chat.svelte +++ b/src/app/components/Chat.svelte @@ -32,10 +32,11 @@ import ProfileName from "@app/components/ProfileName.svelte" import ProfileCircle from "@app/components/ProfileCircle.svelte" import ProfileCircles from "@app/components/ProfileCircles.svelte" + import ProfileDetail from "@app/components/ProfileDetail.svelte" import ProfileList from "@app/components/ProfileList.svelte" import ChatMessage from "@app/components/ChatMessage.svelte" import ChatCompose from "@app/components/ChannelCompose.svelte" - import {userSettingValues, deriveChat, splitChatId, PLATFORM_NAME, pubkeyLink} from "@app/state" + import {userSettingValues, deriveChat, splitChatId, PLATFORM_NAME} from "@app/state" import {pushModal} from "@app/modal" import {sendWrapped} from "@app/commands" @@ -125,10 +126,11 @@
{#if others.length === 1} {@const pubkey = others[0]} - + {@const onClick = () => pushModal(ProfileDetail, {pubkey})} + {:else}
diff --git a/src/app/components/ChatMessage.svelte b/src/app/components/ChatMessage.svelte index b4844ebc..6c652a82 100644 --- a/src/app/components/ChatMessage.svelte +++ b/src/app/components/ChatMessage.svelte @@ -11,16 +11,17 @@ } from "@welshman/app" import {isMobile} from "@lib/html" import Icon from "@lib/components/Icon.svelte" - import Link from "@lib/components/Link.svelte" + import Button from "@lib/components/Button.svelte" import Tippy from "@lib/components/Tippy.svelte" import LongPress from "@lib/components/LongPress.svelte" import Avatar from "@lib/components/Avatar.svelte" import Content from "@app/components/Content.svelte" import ReactionSummary from "@app/components/ReactionSummary.svelte" import ThunkStatus from "@app/components/ThunkStatus.svelte" + import ProfileDetail from "@app/components/ProfileDetail.svelte" import ChatMessageMenu from "@app/components/ChatMessageMenu.svelte" import ChatMessageMenuMobile from "@app/components/ChatMessageMenuMobile.svelte" - import {colors, pubkeyLink} from "@app/state" + import {colors} from "@app/state" import {makeDelete, makeReaction, sendWrapped} from "@app/commands" import {pushModal} from "@app/modal" @@ -42,6 +43,8 @@ await sendWrapped({template, pubkeys}) } + const openProfile = () => pushModal(ProfileDetail, {pubkey: event.pubkey}) + const showMobileMenu = () => pushModal(ChatMessageMenuMobile, {event, pubkeys}) const togglePopover = () => { @@ -94,21 +97,20 @@ {#if showPubkey}
{#if !isOwn} - +
- + {/if} {formatTimestampAsTime(event.created_at)}
diff --git a/src/app/components/ContentMention.svelte b/src/app/components/ContentMention.svelte index 7dfd8776..876d1146 100644 --- a/src/app/components/ContentMention.svelte +++ b/src/app/components/ContentMention.svelte @@ -1,14 +1,17 @@ - + diff --git a/src/app/components/PrimaryNav.svelte b/src/app/components/PrimaryNav.svelte index 252e5309..c7ad5bcc 100644 --- a/src/app/components/PrimaryNav.svelte +++ b/src/app/components/PrimaryNav.svelte @@ -90,7 +90,7 @@ - + pushModal(ProfileDetail, {pubkey}) + $: following = pubkey === $session!.pubkey || getPubkeyTagValues(getListTags($userFollows)).includes(pubkey)
- +
- +
diff --git a/src/app/components/ProfileDetail.svelte b/src/app/components/ProfileDetail.svelte new file mode 100644 index 00000000..251c938a --- /dev/null +++ b/src/app/components/ProfileDetail.svelte @@ -0,0 +1,76 @@ + + +
+
+ + + +
+
+ + {$profileDisplay} + + +
+
+ {$handle ? displayHandle($handle) : displayPubkey(pubkey)} +
+
+
+ + + +
+ + + See Complete Profile + + +
+
+
diff --git a/src/app/components/ProfileMultiSelect.svelte b/src/app/components/ProfileMultiSelect.svelte index 4cdf9b64..a96319cd 100644 --- a/src/app/components/ProfileMultiSelect.svelte +++ b/src/app/components/ProfileMultiSelect.svelte @@ -5,12 +5,12 @@ import {profileSearch} from "@welshman/app" import Icon from "@lib/components/Icon.svelte" import Tippy from "@lib/components/Tippy.svelte" - import Link from "@lib/components/Link.svelte" import Button from "@lib/components/Button.svelte" import Suggestions from "@lib/editor/Suggestions.svelte" import SuggestionProfile from "@lib/editor/SuggestionProfile.svelte" import ProfileName from "@app/components/ProfileName.svelte" - import {pubkeyLink} from "@app/state" + import ProfileDetail from "@app/components/ProfileDetail.svelte" + import {pushModal} from "@app/modal" export let value: string[] export let autofocus = false @@ -48,13 +48,14 @@
{#each value as pubkey (pubkey)} + {@const onClick = () => pushModal(ProfileDetail, {pubkey})}
- +
{/each}
diff --git a/src/app/components/ThreadItem.svelte b/src/app/components/ThreadItem.svelte index 03cb29ca..53b853c7 100644 --- a/src/app/components/ThreadItem.svelte +++ b/src/app/components/ThreadItem.svelte @@ -4,15 +4,18 @@ import Link from "@lib/components/Link.svelte" import Content from "@app/components/Content.svelte" import ProfileName from "@app/components/ProfileName.svelte" + import ProfileDetail from "@app/components/ProfileDetail.svelte" import ThreadActions from "@app/components/ThreadActions.svelte" import {makeThreadPath} from "@app/routes" - import {pubkeyLink} from "@app/state" + import {pushModal} from "@app/modal" export let url export let event export let hideActions = false const title = event.tags.find(nthEq(0, "title"))?.[1] + + const openProfile = () => pushModal(ProfileDetail, {pubkey: event.pubkey}) @@ -32,9 +35,9 @@
Posted by - + {#if !hideActions} diff --git a/src/routes/settings/about/+page.svelte b/src/routes/settings/about/+page.svelte index 73d9dfb7..32e6d63a 100644 --- a/src/routes/settings/about/+page.svelte +++ b/src/routes/settings/about/+page.svelte @@ -1,9 +1,14 @@
@@ -34,7 +39,7 @@

Built with 💜 by - @hodlbod + @

diff --git a/src/routes/spaces/[relay]/+page.svelte b/src/routes/spaces/[relay]/+page.svelte index 1d08f71c..8a95c708 100644 --- a/src/routes/spaces/[relay]/+page.svelte +++ b/src/routes/spaces/[relay]/+page.svelte @@ -120,8 +120,8 @@

- -
+
+ Threads {#if $notifications.has(threadsPath)}
- {#if channelIsLocked($channelsById.get(makeChannelId(url, room)))} - - {:else} - - {/if} -
+
+ {#if channelIsLocked($channelsById.get(makeChannelId(url, room)))} + + {:else} + + {/if} {#if $notifications.has(roomPath)}
- {#if channelIsLocked($channelsById.get(makeChannelId(url, room)))} - - {:else} - - {/if} - +
+ {#if channelIsLocked($channelsById.get(makeChannelId(url, room)))} + + {:else} + + {/if} + +
{/each}