mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-19 06:10:31 +00:00
feat: wip preview invoice payment mail
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
import { useFormikContext } from 'formik';
|
||||
import { chain } from 'lodash';
|
||||
import { camelCase, chain, defaultTo, mapKeys, upperFirst } from 'lodash';
|
||||
import { InvoiceSendMailFormValues } from './_types';
|
||||
import { useInvoiceSendMailBoot } from './InvoiceSendMailContentBoot';
|
||||
import { useMemo } from 'react';
|
||||
|
||||
export const useInvoiceMailItems = () => {
|
||||
const { values } = useFormikContext<InvoiceSendMailFormValues>();
|
||||
@@ -16,3 +18,42 @@ export const useInvoiceMailItems = () => {
|
||||
}))
|
||||
.value();
|
||||
};
|
||||
|
||||
export const useSendInvoiceMailFormatArgs = () => {
|
||||
const { invoiceMailOptions } = useInvoiceSendMailBoot();
|
||||
|
||||
return useMemo(() => {
|
||||
return mapKeys(invoiceMailOptions?.formatArgs, (_, key) =>
|
||||
upperFirst(camelCase(key)),
|
||||
);
|
||||
}, [invoiceMailOptions]);
|
||||
};
|
||||
|
||||
export const useSendInvoiceMailSubject = () => {
|
||||
const { values } = useFormikContext<InvoiceSendMailFormValues>();
|
||||
const formatArgs = useSendInvoiceMailFormatArgs();
|
||||
|
||||
return formatSmsMessage(values?.subject, formatArgs);
|
||||
};
|
||||
|
||||
export const useSendInvoiceMailMessage = () => {
|
||||
const { values } = useFormikContext<InvoiceSendMailFormValues>();
|
||||
const formatArgs = useSendInvoiceMailFormatArgs();
|
||||
|
||||
return formatSmsMessage(values?.message, formatArgs);
|
||||
};
|
||||
|
||||
export const formatSmsMessage = (
|
||||
message: string,
|
||||
args: Record<string, any>,
|
||||
) => {
|
||||
let formattedMessage = message;
|
||||
|
||||
Object.keys(args).forEach((key) => {
|
||||
const variable = `{${key}}`;
|
||||
const value = defaultTo(args[key], '');
|
||||
|
||||
formattedMessage = formattedMessage.replace(variable, value);
|
||||
});
|
||||
return formattedMessage;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user