Skip to content

Commit 8eef915

Browse files
committed
fix: update method
1 parent e50ab16 commit 8eef915

File tree

1 file changed

+23
-28
lines changed

1 file changed

+23
-28
lines changed

packages/editor/src/core/extensions/mentions/mentions-list-dropdown.tsx

Lines changed: 23 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,6 @@
11
import { FloatingOverlay } from "@floating-ui/react";
22
import type { SuggestionProps } from "@tiptap/suggestion";
3-
import {
4-
forwardRef,
5-
useCallback,
6-
useEffect,
7-
useImperativeHandle,
8-
useLayoutEffect,
9-
useMemo,
10-
useRef,
11-
useState,
12-
} from "react";
3+
import { forwardRef, useCallback, useEffect, useImperativeHandle, useLayoutEffect, useRef, useState } from "react";
134
import { v4 as uuidv4 } from "uuid";
145
import { debounce } from "lodash-es";
156
// plane utils
@@ -85,34 +76,38 @@ export const MentionsListDropdown = forwardRef(function MentionsListDropdown(pro
8576
});
8677
}, [sections]);
8778

88-
// create debounced search callback
89-
const debouncedSearchCallback = useMemo(
90-
() =>
91-
debounce(async (searchQuery: string) => {
92-
setIsLoading(true);
93-
try {
94-
const sectionsResponse = await searchCallback?.(searchQuery);
95-
if (sectionsResponse) {
96-
setSections(sectionsResponse);
97-
}
98-
} catch (error) {
99-
console.error("Failed to fetch suggestions:", error);
100-
} finally {
101-
setIsLoading(false);
79+
// debounced search callback
80+
const debouncedSearchCallback = useCallback(
81+
debounce(async (searchQuery: string) => {
82+
setIsLoading(true);
83+
try {
84+
const sectionsResponse = await searchCallback?.(searchQuery);
85+
if (sectionsResponse) {
86+
setSections(sectionsResponse);
10287
}
103-
}, 300),
88+
} catch (error) {
89+
console.error("Failed to fetch suggestions:", error);
90+
} finally {
91+
setIsLoading(false);
92+
}
93+
}, 300),
10494
[searchCallback]
10595
);
10696

97+
// trigger debounced search when query changes
10798
useEffect(() => {
10899
if (query) {
109100
void debouncedSearchCallback(query);
110101
}
102+
}, [query, debouncedSearchCallback]);
111103

112-
return () => {
104+
// cancel pending debounced calls on unmount
105+
useEffect(
106+
() => () => {
113107
debouncedSearchCallback.cancel();
114-
};
115-
}, [query, debouncedSearchCallback]);
108+
},
109+
[debouncedSearchCallback]
110+
);
116111

117112
// scroll to the dropdown item when navigating via keyboard
118113
useLayoutEffect(() => {

0 commit comments

Comments
 (0)