From 4eeab2507895b3da8a190aa3d62388e85050ada5 Mon Sep 17 00:00:00 2001 From: Paul Makles Date: Tue, 4 Jun 2024 19:36:45 +0100 Subject: [PATCH] feat: group member list closes #167 --- .../interface/channels/text/MemberSidebar.tsx | 70 +++++++++++++++++-- 1 file changed, 63 insertions(+), 7 deletions(-) diff --git a/packages/client/src/interface/channels/text/MemberSidebar.tsx b/packages/client/src/interface/channels/text/MemberSidebar.tsx index 0dfc1157..d9177bd9 100644 --- a/packages/client/src/interface/channels/text/MemberSidebar.tsx +++ b/packages/client/src/interface/channels/text/MemberSidebar.tsx @@ -1,7 +1,7 @@ import { For, Match, Show, Switch, createMemo, onMount } from "solid-js"; import { VirtualContainer } from "@minht11/solid-virtual-container"; -import { Channel, ServerMember } from "revolt.js"; +import { Channel, ServerMember, User } from "revolt.js"; import { floatingUserMenus } from "@revolt/app/menus/UserContextMenu"; import { useClient } from "@revolt/client"; @@ -37,6 +37,9 @@ interface Props { export function MemberSidebar(props: Props) { return ( + + + @@ -265,6 +268,47 @@ export function ServerMemberSidebar(props: Props) { ); } +/** + * Group Member Sidebar + */ +export function GroupMemberSidebar(props: Props) { + let scrollTargetElement!: HTMLDivElement; + + return ( + + + {props.channel.recipientIds.size} members + + + + {(item) => ( +
+ +
+ )} +
+
+
+ + ); +} + /** * Base styles */ @@ -298,33 +342,45 @@ const CategoryTitle = styled.div` /** * Member */ -function Member(props: { member: ServerMember }) { +function Member(props: { user?: User; member?: ServerMember }) { const t = useTranslation(); /** * Create user information */ - const user = () => userInformation(props.member.user!, props.member); + const user = () => + userInformation(props.user ?? props.member?.user!, props.member); /** * Get user status */ const status = () => - props.member.user?.statusMessage((presence) => + (props.user ?? props.member?.user)?.statusMessage((presence) => t(`app.status.${presence.toLowerCase()}`) ); return ( -
+
} + overlay={ + + } /> } >