First Commit
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
import { useMemo } from 'react';
|
||||
|
||||
// @third-party
|
||||
import useSWR, { mutate } from 'swr';
|
||||
|
||||
const initialState = {
|
||||
openedItem: '',
|
||||
isDashboardDrawerOpened: false
|
||||
};
|
||||
|
||||
export const endpoints = {
|
||||
key: 'api/menu',
|
||||
master: 'master'
|
||||
};
|
||||
|
||||
export function useGetMenuMaster() {
|
||||
// to fetch initial state based on endpoints
|
||||
|
||||
const { data, isLoading } = useSWR(endpoints.key + endpoints.master, () => initialState, {
|
||||
revalidateIfStale: false,
|
||||
revalidateOnFocus: false,
|
||||
revalidateOnReconnect: false
|
||||
});
|
||||
|
||||
const memoizedValue = useMemo(
|
||||
() => ({
|
||||
menuMaster: data,
|
||||
menuMasterLoading: isLoading
|
||||
}),
|
||||
[data, isLoading]
|
||||
);
|
||||
|
||||
return memoizedValue;
|
||||
}
|
||||
|
||||
export function handlerDrawerOpen(isDashboardDrawerOpened) {
|
||||
// to update `isDashboardDrawerOpened` local state based on key
|
||||
|
||||
mutate(
|
||||
endpoints.key + endpoints.master,
|
||||
(currentMenuMaster = initialState) => {
|
||||
return { ...currentMenuMaster, isDashboardDrawerOpened };
|
||||
},
|
||||
false
|
||||
);
|
||||
}
|
||||
|
||||
export function handlerActiveItem(openedItem) {
|
||||
// to update `openedItem` local state based on key
|
||||
|
||||
mutate(
|
||||
endpoints.key + endpoints.master,
|
||||
(currentMenuMaster = initialState) => {
|
||||
return { ...currentMenuMaster, openedItem };
|
||||
},
|
||||
false
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user