@benshi.ai/js-sdk
Version:
Benshi SDK
80 lines (66 loc) • 2.1 kB
text/typescript
import PaymentsPropertiesTI, { DeferredPaymentType } from './typings-ti'
import { injectEvent } from "../../core/injector"
import {
DeferredPaymentProperties,
PaymentMethodProperties,
PaymentsMethodType,
PaymentsTypes,
} from './typings'
import { ContentBlock } from '../Navigation/typings'
import { ICurrencyRepository } from '../../core/repositories/currency/CurrencyRepository';
let currencyRepository: ICurrencyRepository;
const moduleName = ContentBlock.Payment
/**
*
* @param properties
* @param {string} userId use this parameter when the logger user is not the same than the user who has created this log
* @param sendNow
*/
const logPaymentMethodEvent = async (properties: PaymentMethodProperties, userId = '', sendNow = false) => {
const internalProps = {
...properties,
usd_rate: (await currencyRepository.convertCurrencyToUSD(properties.currency)).usd
}
injectEvent(
internalProps,
[PaymentsPropertiesTI],
PaymentsTypes.PaymentMethod,
moduleName,
userId,
sendNow
)
}
/**
*
* @param properties
* @param {string} userId use this parameter when the logger user is not the same than the user who has created this log
* @param sendNow
*/
const logDeferredPaymentEvent = async (properties: DeferredPaymentProperties, userId, sendNow = false): Promise<void> => {
const internalProps = {
...properties,
type: properties.type ? properties.type : PaymentsMethodType.BankTransfer,
usd_rate: (await currencyRepository.convertCurrencyToUSD(properties.currency)).usd
}
injectEvent(
internalProps,
[PaymentsPropertiesTI],
PaymentsTypes.DeferredPayment,
moduleName,
userId,
sendNow
)
}
/**
* Private function to inject CurrencyRepository
*
* @ignore
*/
const init = (injectedCurrencyRepository: ICurrencyRepository) => {
currencyRepository = injectedCurrencyRepository
}
export default {
logDeferredPaymentEvent,
logPaymentMethodEvent,
init
}