saleor-dashboard/src/hooks/useListSettings.ts
Krzysztof Wolski a82de30309
Add circleci config and enhance our linters (#519)
* Add circleci config

* Season linting config

* Apply code style
2020-05-14 11:30:32 +02:00

41 lines
1.1 KiB
TypeScript

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