import publicApi from '../../Api'; import type { TrackingCustomerFields } from './types'; import { customerProfileAction } from '../events/actions/customerProfile'; import { generateLead } from '../events/actions/generateLead'; import { loginAction } from '../events/actions/login'; import { signupAction } from '../events/actions/signup'; import type { CustomerLead } from '../types'; import type { ApiParams, CustomerConditionFields, CustomerFields, CustomerSortFields, SigninCustomerByDocument, SigninCustomerByEmail, SignupCustomer, } from '../../Api/types'; export function detail( options?: Pick< ApiParams< TrackingCustomerFields, CustomerSortFields, CustomerConditionFields >, 'condition' | 'fields' | 'order' >, ) { let fields: Array = ['addresses', 'flags']; if (options?.fields) fields = [...options.fields, ...fields]; return publicApi.customer .detail({ ...options, fields }) .then(data => { customerProfileAction(data); return data; }); } export function signup(payload: SignupCustomer) { return publicApi.customer.signup(payload).then(data => { signupAction(); return data; }); } export function signinByEmail(payload: SigninCustomerByEmail) { return publicApi.customer.signinByEmail(payload).then(data => { loginAction(); return data; }); } export function signinByDocument(payload: SigninCustomerByDocument) { return publicApi.customer.signinByDocument(payload).then(data => { loginAction(); return data; }); } export function addNewsletter(payload: CustomerLead) { return publicApi.customer.addNewsletter(payload).then(data => { generateLead(payload); return data; }); }