Skip to content

Commit cc14701

Browse files
committed
fix: add handleUpdateSelectedTags as dependency
1 parent 233849b commit cc14701

File tree

2 files changed

+19
-17
lines changed

2 files changed

+19
-17
lines changed

src/Shared/Components/Plugin/PluginListContainer.tsx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ const PluginListContainer = ({
4848
// Have to make a state to trigger clear filters, since filters are not on URL
4949
// TODO: Ask should it be number since in case of large state it can be a problem
5050
const [clearSearchTrigger, setClearSearchTrigger] = useState<boolean>(false)
51-
const [clearTagFilterTrigger, setClearTagFiltersTrigger] = useState<boolean>(false)
5251

5352
const handlePluginListUpdate = (updatedPluginList: PluginListItemType[]) => {
5453
setPluginList(updatedPluginList)
@@ -160,7 +159,6 @@ const PluginListContainer = ({
160159
})
161160

162161
setClearSearchTrigger((prev) => !prev)
163-
setClearTagFiltersTrigger((prev) => !prev)
164162
handlePersistFiltersChange()
165163
}
166164

@@ -188,7 +186,6 @@ const PluginListContainer = ({
188186
selectedTags: filterConfig.selectedTags,
189187
})
190188

191-
setClearTagFiltersTrigger((prev) => !prev)
192189
handlePersistFiltersChange()
193190
}
194191

@@ -210,7 +207,6 @@ const PluginListContainer = ({
210207
/>
211208

212209
<PluginTagSelect
213-
key={`plugin-tag-select-key-${Number(clearTagFilterTrigger)}`}
214210
availableTags={availableTags}
215211
handleUpdateSelectedTags={handleUpdateSelectedTags}
216212
selectedTags={selectedTags}

src/Shared/Components/Plugin/PluginTagSelect.tsx

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useCallback, useMemo, useState } from 'react'
1+
import { useCallback, useEffect, useMemo, useState } from 'react'
22
import ReactSelect, { MenuListProps, ValueContainerProps } from 'react-select'
33
import { Option, OptionType } from '../../../Common'
44
import { LoadingIndicator, MenuListWithApplyButton, MultiSelectValueContainer } from '../ReactSelect'
@@ -14,10 +14,13 @@ const PluginTagSelect = ({
1414
hasError,
1515
reloadTags,
1616
}: PluginTagSelectProps) => {
17+
const getInitialSelectedOptions = () => selectedTags?.map((tag) => ({ label: tag, value: tag })) ?? []
1718
const [isMenuOpen, setIsMenuOpen] = useState<boolean>(false)
18-
const [localSelectedOptions, setLocalSelectedOptions] = useState<OptionType[]>(
19-
selectedTags?.map((tag) => ({ label: tag, value: tag })) ?? [],
20-
)
19+
const [localSelectedOptions, setLocalSelectedOptions] = useState<OptionType[]>(getInitialSelectedOptions())
20+
21+
useEffect(() => {
22+
setLocalSelectedOptions(getInitialSelectedOptions())
23+
}, [selectedTags])
2124

2225
const tagOptions: OptionType[] = useMemo(
2326
() => availableTags?.map((tag) => ({ label: tag, value: tag })) || [],
@@ -34,7 +37,7 @@ const PluginTagSelect = ({
3437

3538
const handleMenuClose = () => {
3639
setIsMenuOpen(false)
37-
setLocalSelectedOptions(selectedTags?.map((tag) => ({ label: tag, value: tag })) ?? [])
40+
setLocalSelectedOptions(getInitialSelectedOptions())
3841
}
3942

4043
const renderNoOptionsMessage = () => {
@@ -44,16 +47,19 @@ const PluginTagSelect = ({
4447
return <p className="m-0 cn-7 fs-13 fw-4 lh-20 py-6 px-8">No tags found</p>
4548
}
4649

47-
const renderMenuList = useCallback((props: MenuListProps<OptionType, true>) => {
48-
const selectedOptions = props.getValue() || []
50+
const renderMenuList = useCallback(
51+
(props: MenuListProps<OptionType, true>) => {
52+
const selectedOptions = props.getValue() || []
4953

50-
const handleApplyFilters = () => {
51-
handleMenuClose()
52-
handleUpdateSelectedTags(selectedOptions.map((option) => option.value))
53-
}
54+
const handleApplyFilters = () => {
55+
handleMenuClose()
56+
handleUpdateSelectedTags(selectedOptions.map((option) => option.value))
57+
}
5458

55-
return <MenuListWithApplyButton {...props} handleApplyFilter={handleApplyFilters} />
56-
}, [])
59+
return <MenuListWithApplyButton {...props} handleApplyFilter={handleApplyFilters} />
60+
},
61+
[handleUpdateSelectedTags],
62+
)
5763

5864
const renderValueContainer = useCallback(
5965
(props: ValueContainerProps<OptionType, true>) => <MultiSelectValueContainer {...props} title="Category" />,

0 commit comments

Comments
 (0)