fix(knowledge): fix search input flicker on clear and plan display name fallback (#3810)

This commit is contained in:
Waleed
2026-03-27 12:23:41 -07:00
committed by GitHub
parent 23677d41a0
commit 34df3333d1
2 changed files with 14 additions and 5 deletions

View File

@@ -60,16 +60,22 @@ export function Knowledge() {
const { mutateAsync: updateKnowledgeBaseMutation } = useUpdateKnowledgeBase(workspaceId)
const { mutateAsync: deleteKnowledgeBaseMutation } = useDeleteKnowledgeBase(workspaceId)
const [searchInputValue, setSearchInputValue] = useState('')
const [debouncedSearchQuery, setDebouncedSearchQuery] = useState('')
const searchTimerRef = useRef<ReturnType<typeof setTimeout>>(null)
const handleSearchChange = useCallback((value: string) => {
setSearchInputValue(value)
if (searchTimerRef.current) clearTimeout(searchTimerRef.current)
searchTimerRef.current = setTimeout(() => {
setDebouncedSearchQuery(value)
}, 300)
}, [])
const handleSearchClearAll = useCallback(() => {
handleSearchChange('')
}, [handleSearchChange])
const [isCreateModalOpen, setIsCreateModalOpen] = useState(false)
const [activeKnowledgeBase, setActiveKnowledgeBase] = useState<KnowledgeBaseWithDocCount | null>(
@@ -256,12 +262,12 @@ export function Knowledge() {
const searchConfig: SearchConfig = useMemo(
() => ({
value: debouncedSearchQuery,
value: searchInputValue,
onChange: handleSearchChange,
onClearAll: () => handleSearchChange(''),
onClearAll: handleSearchClearAll,
placeholder: 'Search knowledge bases...',
}),
[handleSearchChange, debouncedSearchQuery]
[searchInputValue, handleSearchChange, handleSearchClearAll]
)
return (

View File

@@ -138,8 +138,11 @@ export function WorkspaceHeader({
const currentPlan = subscriptionResponse?.data?.plan
const showPlanInfo = isBillingEnabled && typeof currentPlan !== 'undefined'
const rawPlanName = showPlanInfo ? getDisplayPlanName(currentPlan) : ''
const planDisplayName =
showPlanInfo && rawPlanName.includes('for Teams') ? rawPlanName : `${rawPlanName} Plan`
const planDisplayName = showPlanInfo
? rawPlanName.includes('for Teams')
? rawPlanName
: `${rawPlanName} Plan`
: ''
const isFreePlan = showPlanInfo && isFree(currentPlan)
// Listen for open-invite-modal event from context menu