import { CONVERSATION_API } from '../../utils/ResourceConstants' import { encodeQueryData } from '../../utils/helpers' import { createAjaxRoute, lessThanThreeErrors } from '../utils/apiHelpers' import { IFetchPlaybookForEndUserOptions, ISearchPlaybooksOptions, IEnrollOptions, IFetchEnrolledSequenceCountOptions } from './interfaces' export const searchPlaybooks = (options: ISearchPlaybooksOptions) => { return createAjaxRoute({ url: `${CONVERSATION_API}/playbooks?${encodeQueryData({ status: 'ENABLED', reportType: 'OUTBOUND_SEQUENCE' })}`, method: 'GET', token: options.accessToken, }) .retryWhen(lessThanThreeErrors) .map((data: any) => data.response) } export const enroll = (options: IEnrollOptions) => { return createAjaxRoute({ url: `${CONVERSATION_API}/playbooks/${options.playbookId}/manual_enroll`, method: 'POST', token: options.accessToken, body: JSON.stringify({ endUserId: options.endUserId, email: options.email, action: options.action, }), }) .map((data: any) => data.response) } export const fetchEnrolledSequenceCount = (options: IFetchEnrolledSequenceCountOptions) => { return createAjaxRoute({ url: `${CONVERSATION_API}/sequences/sends`, method: 'GET', token: options.accessToken, }) .retryWhen(lessThanThreeErrors) .map((data: any) => data.response.count) } export const fetchPlaybookForEndUser = (options: IFetchPlaybookForEndUserOptions) => { return createAjaxRoute({ url: `${CONVERSATION_API}/playbooks/${options.playbookId}/for_end_user?${encodeQueryData({ email: options.email })}`, method: 'GET', token: options.accessToken, }) .retryWhen(lessThanThreeErrors) .map((data: any) => data.response) }