diff --git a/js/src/features/compose/configure-stream-step.tsx b/js/src/features/compose/configure-stream-step.tsx index 5c542c8..a959a35 100644 --- a/js/src/features/compose/configure-stream-step.tsx +++ b/js/src/features/compose/configure-stream-step.tsx @@ -1,6 +1,7 @@ -import { useState, useEffect, useRef, useCallback } from "react"; +import { useState, useCallback } from "react"; import { useNetworks } from "@/hooks/use-networks"; -import { cn } from "@/lib/utils"; +import { cn, removeDuplicates } from "@/lib/utils"; +import { useAuthStore } from "@/stores/auth-store"; import { generateRandomName } from "@/lib/random-name"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; @@ -20,12 +21,14 @@ export function ConfigureStreamStep({ }: ConfigureStreamStepProps) { const { data: networks } = useNetworks(); const network = networks?.find((n) => n.id === networkId); - const members = network?.humans ?? []; const [name, setName] = useState(() => generateRandomName()); const [everyone, setEveryone] = useState(true); + const userEmail = useAuthStore((s) => s.user?.email); const [selectedEmails, setSelectedEmails] = useState>(new Set()); + const members = (network?.humans ?? []).filter((h) => h.email !== userEmail); + const toggleMember = useCallback((email: string) => { setSelectedEmails((prev) => { const next = new Set(prev); @@ -37,8 +40,9 @@ export function ConfigureStreamStep({ const buildVisibleTo = useCallback((): string[] => { if (everyone && networkId) return [`network:${networkId}`]; - return Array.from(selectedEmails).map((e) => `human:${e}`); - }, [everyone, networkId, selectedEmails]); + + return Array.from(removeDuplicates([...selectedEmails, userEmail])).map((e) => `human:${e}`); + }, [everyone, networkId, selectedEmails, userEmail]); const handleSubmit = useCallback(() => { if (!name.trim() || !networkId) return; @@ -61,7 +65,7 @@ export function ConfigureStreamStep({ return; } }, - [onCancel, handleSubmit, members, name, toggleMember], + [onCancel, handleSubmit], ); return ( diff --git a/js/src/lib/utils.ts b/js/src/lib/utils.ts index fd4498c..2351235 100644 --- a/js/src/lib/utils.ts +++ b/js/src/lib/utils.ts @@ -9,3 +9,7 @@ export function getInitials(email: string): string { const prefix = email.split("@")[0] ?? ""; return prefix.slice(0, 2).toUpperCase(); } + +export function removeDuplicates(array: T[]): T[] { + return [...new Set(array)]; +}