From 8655fd1840ec3838f753adbe737dda25580b44a9 Mon Sep 17 00:00:00 2001 From: codytseng Date: Thu, 11 Sep 2025 10:09:32 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=90=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/SearchBar/index.tsx | 12 ++++++------ src/services/modal-manager.service.ts | 6 ++++++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/components/SearchBar/index.tsx b/src/components/SearchBar/index.tsx index 461c1a68..e243877b 100644 --- a/src/components/SearchBar/index.tsx +++ b/src/components/SearchBar/index.tsx @@ -168,18 +168,18 @@ const SearchBar = forwardRef< }, [input, debouncedInput, profiles]) useEffect(() => { - if (list) { + setDisplayList(searching && !!input) + }, [searching, input]) + + useEffect(() => { + if (displayList && list) { modalManager.register(id, () => { setDisplayList(false) }) } else { modalManager.unregister(id) } - }, [list]) - - useEffect(() => { - setDisplayList(searching && !!input) - }, [searching, input]) + }, [displayList, list]) const handleKeyDown = useCallback( (e: React.KeyboardEvent) => { diff --git a/src/services/modal-manager.service.ts b/src/services/modal-manager.service.ts index d3685be5..10b597ab 100644 --- a/src/services/modal-manager.service.ts +++ b/src/services/modal-manager.service.ts @@ -11,6 +11,12 @@ class ModalManagerService { } register(id: string, cb: () => void) { + const modal = this.modals.find((m) => m.id === id) + if (modal) { + // already registered, update callback + modal.cb = cb + return + } this.modals.push({ id, cb }) }