saleor-dashboard/src/hooks/useListSettings.ts
2019-08-09 12:17:04 +02:00

30 lines
941 B
TypeScript

import useLocalStorage from "@saleor/hooks/useLocalStorage";
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
);
const updateListSettings = (key: keyof ListSettings, value: any) =>
setListSettings(settings => ({
...settings,
[listName]: {
...settings[listName],
[key]: value
}
}));
return {
settings: settings[listName] as ListSettings<TColumns>,
updateListSettings
};
}