fix: auto-select myself as new stream's member

This commit is contained in:
talksik
2026-03-24 11:29:14 -07:00
parent 83190727f8
commit 3bf3f16be7
2 changed files with 14 additions and 6 deletions
@@ -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<Set<string>>(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 (
+4
View File
@@ -9,3 +9,7 @@ export function getInitials(email: string): string {
const prefix = email.split("@")[0] ?? "";
return prefix.slice(0, 2).toUpperCase();
}
export function removeDuplicates<T>(array: T[]): T[] {
return [...new Set(array)];
}