Skip to content

Commit fc71edc

Browse files
committed
fix(web): preserve project icon picker state
1 parent 9eb703e commit fc71edc

2 files changed

Lines changed: 12 additions & 9 deletions

File tree

‎apps/web/src/components/Sidebar.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ import {
2929
scopeThreadRef,
3030
scopedThreadKey,
3131
} from "@t3tools/client-runtime/environment";
32-
import type { ProjectIconOverride, ScopedThreadRef, ThreadId } from "@t3tools/contracts";
3332
import {
3433
resolveEnvironmentMachineKind,
3534
type EnvironmentMachineKind,
35+
type ProjectIconOverride,
3636
type ScopedThreadRef,
3737
type ThreadId,
3838
} from "@t3tools/contracts";

‎apps/web/src/components/settings/ProjectIconPickerDialog.tsx‎

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { ProjectIconColor, ProjectIconOverride } from "@t3tools/contracts";
22
import { DynamicIcon, type IconName } from "lucide-react/dynamic";
3-
import { useEffect, useMemo, useState } from "react";
3+
import { useEffect, useMemo, useRef, useState } from "react";
44
import {
55
filterProjectIconNames,
66
firstEmoji,
@@ -56,15 +56,18 @@ export function ProjectIconPickerDialog({
5656
const [emoji, setEmoji] = useState(current?.kind === "emoji" ? current.emoji : "💻");
5757
const [query, setQuery] = useState("");
5858
const [customEmoji, setCustomEmoji] = useState("");
59+
const previousOpenRef = useRef(false);
5960

6061
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;
6871
}, [current, open]);
6972

7073
const icons = useMemo(() => filterProjectIconNames(query), [query]);

0 commit comments

Comments
 (0)