2019-08-09 10:17:04 +00:00
|
|
|
import useLocalStorage from "@saleor/hooks/useLocalStorage";
|
2020-05-14 09:30:32 +00:00
|
|
|
import { useEffect } from "react";
|
|
|
|
|
2019-08-09 10:17:04 +00:00
|
|
|
import { AppListViewSettings, defaultListSettings } from "./../config";
|
|
|
|
import { ListSettings, ListViews } from "./../types";
|
|
|
|
|
|
|
|
export interface UseListSettings<TColumns extends string = string> {
|
|
|
|
settings: ListSettings<TColumns>;
|
|
|
|
updateListSettings: (key: keyof ListSettings<TColumns>, value: any) => void;
|
|
|
|
}
|
|
|
|
export default function useListSettings<TColumns extends string = string>(
|
|
|
|
listName: ListViews
|
|
|
|
): UseListSettings<TColumns> {
|
|
|
|
const [settings, setListSettings] = useLocalStorage<AppListViewSettings>(
|
|
|
|
"listConfig",
|
|
|
|
defaultListSettings
|
|
|
|
);
|
|
|
|
|
2020-01-30 11:46:35 +00:00
|
|
|
useEffect(() => {
|
|
|
|
if (settings[listName] === undefined) {
|
|
|
|
setListSettings(settings => ({
|
|
|
|
...settings,
|
|
|
|
[listName]: defaultListSettings[listName]
|
|
|
|
}));
|
|
|
|
}
|
|
|
|
}, []);
|
|
|
|
|
2019-08-09 10:17:04 +00:00
|
|
|
const updateListSettings = (key: keyof ListSettings, value: any) =>
|
|
|
|
setListSettings(settings => ({
|
|
|
|
...settings,
|
|
|
|
[listName]: {
|
|
|
|
...settings[listName],
|
|
|
|
[key]: value
|
|
|
|
}
|
|
|
|
}));
|
|
|
|
|
|
|
|
return {
|
|
|
|
settings: settings[listName] as ListSettings<TColumns>,
|
|
|
|
updateListSettings
|
|
|
|
};
|
|
|
|
}
|