|
1 | 1 | import type { ProjectIconColor, ProjectIconOverride } from "@t3tools/contracts"; |
2 | 2 | import { DynamicIcon, type IconName } from "lucide-react/dynamic"; |
3 | | -import { useEffect, useMemo, useState } from "react"; |
| 3 | +import { useEffect, useMemo, useRef, useState } from "react"; |
4 | 4 | import { |
5 | 5 | filterProjectIconNames, |
6 | 6 | firstEmoji, |
@@ -56,15 +56,18 @@ export function ProjectIconPickerDialog({ |
56 | 56 | const [emoji, setEmoji] = useState(current?.kind === "emoji" ? current.emoji : "💻"); |
57 | 57 | const [query, setQuery] = useState(""); |
58 | 58 | const [customEmoji, setCustomEmoji] = useState(""); |
| 59 | + const previousOpenRef = useRef(false); |
59 | 60 |
|
60 | 61 | useEffect(() => { |
61 | | - if (!open) return; |
62 | | - setMode(current?.kind === "lucide" ? "lucide" : "emoji"); |
63 | | - setIconName(current?.kind === "lucide" ? (current.name as IconName) : DEFAULT_ICON); |
64 | | - setColor(current?.kind === "lucide" ? current.color : DEFAULT_COLOR); |
65 | | - setEmoji(current?.kind === "emoji" ? current.emoji : "💻"); |
66 | | - setQuery(""); |
67 | | - setCustomEmoji(""); |
| 62 | + if (open && !previousOpenRef.current) { |
| 63 | + setMode(current?.kind === "lucide" ? "lucide" : "emoji"); |
| 64 | + setIconName(current?.kind === "lucide" ? (current.name as IconName) : DEFAULT_ICON); |
| 65 | + setColor(current?.kind === "lucide" ? current.color : DEFAULT_COLOR); |
| 66 | + setEmoji(current?.kind === "emoji" ? current.emoji : "💻"); |
| 67 | + setQuery(""); |
| 68 | + setCustomEmoji(""); |
| 69 | + } |
| 70 | + previousOpenRef.current = open; |
68 | 71 | }, [current, open]); |
69 | 72 |
|
70 | 73 | const icons = useMemo(() => filterProjectIconNames(query), [query]); |
|
0 commit comments