mirror of
https://github.com/stashapp/stash.git
synced 2025-12-18 21:04:37 +03:00
Fix list hook state
This commit is contained in:
@@ -96,19 +96,19 @@ const useList = <QueryResult extends IQueryResult, QueryData extends IDataItem>(
|
|||||||
const totalCount = options.getCount(result);
|
const totalCount = options.getCount(result);
|
||||||
const items = options.getData(result);
|
const items = options.getData(result);
|
||||||
|
|
||||||
const updateInterfaceConfig = useCallback((filter: ListFilterModel) => {
|
const updateInterfaceConfig = useCallback((updatedFilter: ListFilterModel) => {
|
||||||
setInterfaceState(config => {
|
setInterfaceState(config => {
|
||||||
const data = { ...config } as IInterfaceConfig;
|
const data = { ...config } as IInterfaceConfig;
|
||||||
data.queries = {
|
data.queries = {
|
||||||
[options.filterMode]: {
|
[options.filterMode]: {
|
||||||
filter: filter.makeQueryParameters(),
|
filter: updatedFilter.makeQueryParameters(),
|
||||||
itemsPerPage: filter.itemsPerPage,
|
itemsPerPage: updatedFilter.itemsPerPage,
|
||||||
currentPage: filter.currentPage
|
currentPage: updatedFilter.currentPage
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return data;
|
return data;
|
||||||
});
|
});
|
||||||
}, [location.search, options.filterMode, setInterfaceState]);
|
}, [options.filterMode, setInterfaceState]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if(interfaceState.loading)
|
if(interfaceState.loading)
|
||||||
@@ -122,9 +122,9 @@ const useList = <QueryResult extends IQueryResult, QueryData extends IDataItem>(
|
|||||||
const storedQuery = interfaceState.data?.queries?.[options.filterMode];
|
const storedQuery = interfaceState.data?.queries?.[options.filterMode];
|
||||||
if (!storedQuery) return;
|
if (!storedQuery) return;
|
||||||
|
|
||||||
const queryFilter = queryString.parse(location.search);
|
const queryFilter = queryString.parse(history.location.search);
|
||||||
const storedFilter = queryString.parse(storedQuery.filter);
|
const storedFilter = queryString.parse(storedQuery.filter);
|
||||||
const query = location.search ? {
|
const query = history.location.search ? {
|
||||||
sortby: storedFilter.sortby,
|
sortby: storedFilter.sortby,
|
||||||
sortdir: storedFilter.sortdir,
|
sortdir: storedFilter.sortdir,
|
||||||
disp: storedFilter.disp,
|
disp: storedFilter.disp,
|
||||||
@@ -139,12 +139,14 @@ const useList = <QueryResult extends IQueryResult, QueryData extends IDataItem>(
|
|||||||
|
|
||||||
// Compare constructed filter with current filter.
|
// Compare constructed filter with current filter.
|
||||||
// If different it's the result of navigation, and we update the filter.
|
// If different it's the result of navigation, and we update the filter.
|
||||||
const newLocation = { ...location };
|
const newLocation = { ...history.location };
|
||||||
newLocation.search = newFilter.makeQueryParameters();
|
newLocation.search = newFilter.makeQueryParameters();
|
||||||
if(newLocation.search !== filter.makeQueryParameters()) {
|
if(newLocation.search !== filter.makeQueryParameters()) {
|
||||||
setFilter(newFilter);
|
setFilter(newFilter);
|
||||||
updateInterfaceConfig(newFilter);
|
updateInterfaceConfig(newFilter);
|
||||||
const newLocation = { ...location };
|
}
|
||||||
|
// If constructed search is different from current, update it as well
|
||||||
|
if(newLocation.search !== location.search) {
|
||||||
newLocation.search = newFilter.makeQueryParameters();
|
newLocation.search = newFilter.makeQueryParameters();
|
||||||
history.replace(newLocation);
|
history.replace(newLocation);
|
||||||
}
|
}
|
||||||
@@ -152,26 +154,14 @@ const useList = <QueryResult extends IQueryResult, QueryData extends IDataItem>(
|
|||||||
filter,
|
filter,
|
||||||
interfaceState.data,
|
interfaceState.data,
|
||||||
interfaceState.loading,
|
interfaceState.loading,
|
||||||
location,
|
history,
|
||||||
|
location.search,
|
||||||
options.subComponent,
|
options.subComponent,
|
||||||
options.filterMode,
|
options.filterMode,
|
||||||
forageInitialised,
|
forageInitialised,
|
||||||
updateInterfaceConfig
|
updateInterfaceConfig
|
||||||
]);
|
]);
|
||||||
|
|
||||||
/*
|
|
||||||
useEffect(() => {
|
|
||||||
if (options.subComponent || !forageInitialised) return;
|
|
||||||
|
|
||||||
const newFilter = new ListFilterModel(
|
|
||||||
options.filterMode,
|
|
||||||
options.subComponent ? undefined : queryString.parse(location.search)
|
|
||||||
);
|
|
||||||
setFilter(newFilter);
|
|
||||||
|
|
||||||
}, [location, options.filterMode, options.subComponent, setInterfaceState, forageInitialised]);
|
|
||||||
*/
|
|
||||||
|
|
||||||
function getFilter() {
|
function getFilter() {
|
||||||
if (!options.filterHook) {
|
if (!options.filterHook) {
|
||||||
return filter;
|
return filter;
|
||||||
|
|||||||
Reference in New Issue
Block a user