Fixed pinned filters being backed up into session storage (#142262)

This commit is contained in:
Devon Thomson 2022-09-29 15:48:36 -04:00 committed by GitHub
parent 1530d1720a
commit 1bf14d7ab8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -101,12 +101,17 @@ export const diffDashboardState = async ({
getEmbeddable
);
const optionsAreEqual = getOptionsAreEqual(originalState.options, newState.options);
const filtersAreEqual = getFiltersAreEqual(originalState.filters, newState.filters, true);
const controlGroupIsEqual = persistableControlGroupInputIsEqual(
originalState.controlGroupInput,
newState.controlGroupInput
);
const filterStateDiff = getFiltersAreEqual(originalState.filters, newState.filters, true)
? {}
: {
filters: newState.filters.filter((f) => !isFilterPinned(f)),
};
const timeStatediff = getTimeSettingsAreEqual({
currentTimeRestore: newState.timeRestore,
lastSaved: { ...pick(originalState, ['timeRange', 'timeRestore', 'refreshInterval']) },
@ -117,9 +122,9 @@ export const diffDashboardState = async ({
return {
...commonStateDiff,
...(panelsAreEqual ? {} : { panels: newState.panels }),
...(filtersAreEqual ? {} : { filters: newState.filters }),
...(optionsAreEqual ? {} : { options: newState.options }),
...(controlGroupIsEqual ? {} : { controlGroupInput: newState.controlGroupInput }),
...filterStateDiff,
...timeStatediff,
};
};
@ -174,7 +179,7 @@ const getFiltersAreEqual = (
ignorePinned?: boolean
): boolean => {
return compareFilters(
filtersA,
ignorePinned ? filtersA.filter((f) => !isFilterPinned(f)) : filtersA,
ignorePinned ? filtersB.filter((f) => !isFilterPinned(f)) : filtersB,
COMPARE_ALL_OPTIONS
);