mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-13 11:20:31 +00:00
79 lines
1.7 KiB
JavaScript
79 lines
1.7 KiB
JavaScript
import { useCallback } from 'react';
|
|
import { useDispatch, useSelector } from 'react-redux';
|
|
import { createSelector } from 'reselect';
|
|
import {
|
|
splashStopLoading,
|
|
splashStartLoading,
|
|
dashboardPageTitle,
|
|
openSidebarSubmenu,
|
|
closeSidebarSubmenu,
|
|
openDialog,
|
|
closeDialog,
|
|
} from '../../store/dashboard/dashboard.actions';
|
|
|
|
export const useDispatchAction = (action) => {
|
|
const dispatch = useDispatch();
|
|
|
|
return useCallback(
|
|
(payload) => {
|
|
dispatch(action(payload));
|
|
},
|
|
[dispatch, action],
|
|
);
|
|
};
|
|
|
|
export const useDashboardPageTitle = () => {
|
|
return useDispatchAction(dashboardPageTitle);
|
|
};
|
|
|
|
/**
|
|
* Splash loading screen actions.
|
|
*/
|
|
export const useSplashLoading = () => {
|
|
return [
|
|
useDispatchAction(splashStartLoading),
|
|
useDispatchAction(splashStopLoading),
|
|
];
|
|
};
|
|
|
|
/**
|
|
* Sidebar submenu actions.
|
|
*/
|
|
export const useSidebarSubmnuActions = () => {
|
|
return {
|
|
openSidebarSubmenu: useDispatchAction(openSidebarSubmenu),
|
|
closeSidebarSubmenu: useDispatchAction(closeSidebarSubmenu),
|
|
toggleSidebarSubmenu: useDispatchAction(openSidebarSubmenu),
|
|
};
|
|
};
|
|
|
|
/**
|
|
* Retrieves the sidebar submenu selector.
|
|
*/
|
|
const sidebarSubmenuSelector = createSelector(
|
|
(state) => state.dashboard.sidebarSubmenu,
|
|
(sidebarSubmenu) => sidebarSubmenu,
|
|
);
|
|
|
|
/**
|
|
* Retrieves the sidebar submenu selector.
|
|
*/
|
|
export const useSidebarSubmenu = () => {
|
|
const sidebarSubmenu = useSelector(sidebarSubmenuSelector);
|
|
|
|
return {
|
|
isOpen: sidebarSubmenu?.isOpen || false,
|
|
submenuId: sidebarSubmenu?.submenuId || null,
|
|
};
|
|
};
|
|
|
|
/**
|
|
* Dialogs actions.
|
|
*/
|
|
export const useDialogActions = () => {
|
|
return {
|
|
openDialog: useDispatchAction(openDialog),
|
|
closeDialog: useDispatchAction(closeDialog),
|
|
};
|
|
};
|