Files
bigcapital/src/containers/Dialogs/MoneyOutDialog/MoneyOutDialogProvider.js
2021-10-26 14:33:41 +02:00

61 lines
1.5 KiB
JavaScript

import React from 'react';
import { DialogContent } from 'components';
import {
useAccounts,
useCreateCashflowTransaction,
useCashflowAccounts,
useSettingCashFlow,
} from 'hooks/query';
const MoneyInDialogContent = React.createContext();
/**
* Money out dialog provider.
*/
function MoneyOutProvider({ accountId, accountType, dialogName, ...props }) {
// Fetches accounts list.
const { isLoading: isAccountsLoading, data: accounts } = useAccounts();
// Fetch cash flow list .
const { data: cashflowAccounts, isLoading: isCashFlowAccountsLoading } =
useCashflowAccounts({}, { keepPreviousData: true });
const { mutateAsync: createCashflowTransactionMutate } =
useCreateCashflowTransaction();
// Handle fetching settings.
const { isLoading: isSettingsLoading } = useSettingCashFlow();
// Submit payload.
const [submitPayload, setSubmitPayload] = React.useState({});
// provider.
const provider = {
accounts,
accountId,
accountType,
isAccountsLoading,
cashflowAccounts,
submitPayload,
dialogName,
createCashflowTransactionMutate,
setSubmitPayload,
};
return (
<DialogContent
isLoading={
isAccountsLoading || isCashFlowAccountsLoading || isSettingsLoading
}
>
<MoneyInDialogContent.Provider value={provider} {...props} />
</DialogContent>
);
}
const useMoneyOutDialogContext = () => React.useContext(MoneyInDialogContent);
export { MoneyOutProvider, useMoneyOutDialogContext };