Skip to content

Commit b3326ba

Browse files
committed
LPD-70790 Consistently unfreeze before using global state value. This prevents future bugs and keeps TS clean. Original global state value is still key as dependency for useEffects.
1 parent 49b65d0 commit b3326ba

File tree

1 file changed

+46
-30
lines changed
  • modules/apps/frontend-data-set/frontend-data-set-web/src/main/resources/META-INF/resources

1 file changed

+46
-30
lines changed

modules/apps/frontend-data-set/frontend-data-set-web/src/main/resources/META-INF/resources/FrontendDataSet.tsx

Lines changed: 46 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -359,14 +359,13 @@ const FrontendDataSetContent = ({
359359
id,
360360
});
361361

362-
const [globalFDSStateValue, setGlobalFDSStateValue] =
363-
useLiferayState<IFDSState>(
364-
atom ??
365-
State.atom<IFDSState>(`${id}_fdsState`, {
366-
filters: [],
367-
search: {query: ''},
368-
})
369-
);
362+
const [globalFDSState, setGlobalFDSState] = useLiferayState<IFDSState>(
363+
atom ??
364+
State.atom<IFDSState>(`${id}_fdsState`, {
365+
filters: [],
366+
search: {query: ''},
367+
})
368+
);
370369

371370
const [globalFDSStateInitialized, setGlobalFDSStateInitialized] =
372371
useState(false);
@@ -749,12 +748,16 @@ const FrontendDataSetContent = ({
749748
]);
750749

751750
const onClearFilters = useCallback(() => {
752-
setGlobalFDSStateValue({
753-
...globalFDSStateValue,
754-
filters: filters.map((filter: any) => deactivateFilter(filter)),
751+
const unfrozenAdvancedFDSState: IFDSState = deepClone(globalFDSState);
752+
753+
setGlobalFDSState({
754+
...unfrozenAdvancedFDSState,
755+
filters: unfrozenAdvancedFDSState.filters.map((filter) =>
756+
deactivateFilter(filter)
757+
),
755758
search: {query: ''},
756759
});
757-
}, [filters, globalFDSStateValue, setGlobalFDSStateValue]);
760+
}, [globalFDSState, setGlobalFDSState]);
758761

759762
useEffect(() => {
760763
if (
@@ -765,7 +768,7 @@ const FrontendDataSetContent = ({
765768
return;
766769
}
767770

768-
setGlobalFDSStateValue({
771+
setGlobalFDSState({
769772
filters,
770773
search: {
771774
query: searchParam ?? '',
@@ -779,7 +782,7 @@ const FrontendDataSetContent = ({
779782
filters,
780783
globalFDSStateInitialized,
781784
searchParam,
782-
setGlobalFDSStateValue,
785+
setGlobalFDSState,
783786
]);
784787

785788
useEffect(() => {
@@ -788,7 +791,7 @@ const FrontendDataSetContent = ({
788791
}
789792

790793
const unfrozenGlobalFDSStateValue = deepClone(
791-
globalFDSStateValue as IFDSState
794+
globalFDSState as IFDSState
792795
);
793796

794797
if (apiURL || appURL) {
@@ -834,7 +837,7 @@ const FrontendDataSetContent = ({
834837
apiURL,
835838
appURL,
836839
globalFDSStateInitialized,
837-
globalFDSStateValue,
840+
globalFDSState,
838841
itemsProp,
839842
updateFilters,
840843
updateSearchParam,
@@ -1848,19 +1851,25 @@ const FrontendDataSetContent = ({
18481851
onActionDropdownItemClick,
18491852
onBulkActionItemClick,
18501853
onClearResultsBar: () => {
1851-
setGlobalFDSStateValue({
1852-
...globalFDSStateValue,
1853-
filters: filters.map((filter: IBaseFilterState) =>
1854-
deactivateFilter(filter)
1854+
const unfrozenAdvancedFDSState: IFDSState =
1855+
deepClone(globalFDSState);
1856+
1857+
setGlobalFDSState({
1858+
...unfrozenAdvancedFDSState,
1859+
filters: unfrozenAdvancedFDSState.filters.map(
1860+
(filter) => deactivateFilter(filter)
18551861
),
18561862
search: {
18571863
query: '',
18581864
},
18591865
});
18601866
},
18611867
onClearSearch: () => {
1862-
setGlobalFDSStateValue({
1863-
...(globalFDSStateValue as IFDSState),
1868+
const unfrozenAdvancedFDSState: IFDSState =
1869+
deepClone(globalFDSState);
1870+
1871+
setGlobalFDSState({
1872+
...unfrozenAdvancedFDSState,
18641873
search: {
18651874
query: '',
18661875
},
@@ -1871,12 +1880,16 @@ const FrontendDataSetContent = ({
18711880
}: {
18721881
changedFilter: IBaseFilterState;
18731882
}) => {
1874-
setGlobalFDSStateValue({
1875-
...globalFDSStateValue,
1876-
filters: filters.map((filter: IBaseFilterState) =>
1877-
filter.id === changedFilter.id
1878-
? changedFilter
1879-
: filter
1883+
const unfrozenAdvancedFDSState: IFDSState =
1884+
deepClone(globalFDSState);
1885+
1886+
setGlobalFDSState({
1887+
...unfrozenAdvancedFDSState,
1888+
filters: unfrozenAdvancedFDSState.filters.map(
1889+
(filter) =>
1890+
filter.id === changedFilter.id
1891+
? changedFilter
1892+
: filter
18801893
),
18811894
});
18821895
},
@@ -1885,8 +1898,11 @@ const FrontendDataSetContent = ({
18851898
},
18861899
onItemsChange,
18871900
onSearch: ({query}) => {
1888-
setGlobalFDSStateValue({
1889-
...(globalFDSStateValue as IFDSState),
1901+
const unfrozenAdvancedFDSState: IFDSState =
1902+
deepClone(globalFDSState);
1903+
1904+
setGlobalFDSState({
1905+
...unfrozenAdvancedFDSState,
18901906
search: {
18911907
query,
18921908
},

0 commit comments

Comments
 (0)