Files
bigcapital/src/containers/FinancialStatements/GeneralLedger/GeneralLedgerHeaderDimensionsPanelProvider.js
2022-03-28 16:01:07 +02:00

48 lines
1.2 KiB
JavaScript

import React from 'react';
import { Features } from 'common';
import { useBranches } from 'hooks/query';
import { useFeatureCan } from 'hooks/state';
import { FinancialHeaderLoadingSkeleton } from '../FinancialHeaderLoadingSkeleton';
const GeneralLedgerHeaderDimensionsPanelContext = React.createContext();
/**
* General Ledger Header Dimensions Panel provider.
* @returns
*/
function GeneralLedgerHeaderDimensionsPanelProvider({ query, ...props }) {
// Features guard.
const { featureCan } = useFeatureCan();
const isBranchFeatureCan = featureCan(Features.Branches);
// Fetches the branches list.
const { isLoading: isBranchesLoading, data: branches } = useBranches(query, {
enabled: isBranchFeatureCan,
keepPreviousData: true,
});
// Provider
const provider = {
branches,
isBranchesLoading,
};
return isBranchesLoading ? (
<FinancialHeaderLoadingSkeleton />
) : (
<GeneralLedgerHeaderDimensionsPanelContext.Provider
value={provider}
{...props}
/>
);
}
const useGeneralLedgerHeaderDimensionsContext = () =>
React.useContext(GeneralLedgerHeaderDimensionsPanelContext);
export {
GeneralLedgerHeaderDimensionsPanelProvider,
useGeneralLedgerHeaderDimensionsContext,
};