Foxford-js-sdk
Набор методом для работы с Фоксфорд
Использование
import { Foxford } from '@foxford/foxford-js-sdk'
import type { User } from '@foxford/foxford-js-sdk'
const foxSdk = new Foxford()
const getUser = async function () {
const user: User = await foxSdk.user.getUser()
}
Сервисы
- user - для работы с юзером фокса
- promo - для работы с промокодами
- tag - для работы с тэгами
- cart - для работы с корзиной
- course - для работы с курсами
- widgets - для работы с виджетами
- productPack - для работы с продукт-паками
- leadrequest - для работы с лидреквестами
- api, foxApi, staticApi - для работы с HTTP-запросами
- captcha - для работы с капчей
- analytics - для работы с аналитикой
Описание интерфейсов можно глянуть в index.d.ts
или index.js.flow
Виджеты
Библиотека сама сходит на скриптом по нужному адресу и вставит его в ваш DOM.
После чего проинициализирует виджеты с заданными конфигом.
Теперь нет необходимости инициализировать библиотеку виджетов вручную.
Пример инициализации виджетов
const WIDGETS_CONFIG = Object.freeze({
analyticContext: { prefix: 'app', module: '' },
widgets: [
{
name: 'menu',
options: {
header: true,
footer: true,
headerContainer: document.getElementById(HEADER_CONTAINER_NAME),
footerContainer: document.getElementById(FOOTER_CONTAINER_NAME),
},
},
],
})
const sdk = new Foxford()
sdk.widgets.create(WIDGETS_CONFIG)
Корзина
Саздаем cartItem
и добавляем его в корзину
const sdk = new Foxford()
async function addCourseToCart(id: number) {
try {
const course = await sdk.course.getCourse(id)
const cartItem = sdk.cart.createCartItem(course.id, course.cartItem.type)
await sdk.cart.addCartItemToCart(cartItem)
} catch (error) {
}
}
Курс
Получение информации по курсу
const sdk = new Foxford()
async function getCourse(id: number): Course {
const course = await sdk.course.getCourse(id)
return course
}
Лидрееквест
Создаем лидреквест и отсылаем его
const sdk = new Foxford()
async function sendLeadRequest({ email, phone, name }) {
const lrData = {
email: email,
phone_number: phone,
name: name,
}
const leadRequest = sdk.leadrequest.createLeadRequest(LEAD_REQUEST_TYPE, 'express.foxford.ru | offer', lrData)
await sdk.leadrequest.send(leadRequest, search)
}
User identity event
Для отправки юзер эвентов нужно выполнить
const sdk = new Foxford()
async function sendUserEvent(event: 'experiment' | 'funnel' | 'conversion'): void {
await sdk.user.pushEvent(event)
}
sendUserEvent('conversion')
Api
В случае крайней необходимости есть возможность делать прямые запросы через настроенный api клиент.
const sdk = new Foxford()
const api = sdk.api
const foxApi = sdk.foxApi
const api = sdk.api
const staticApi = sdk.staticApi
foxApi.post(`/api/${endpoint}`, { data })
api.get(`https://some.external.source`).then(({ data }) => data)
const CancelToken = staticApi.CancelToken
const source = CancelToken.source()
staticApi
.get('/user/12345', {
cancelToken: source.token,
})
.catch(function (thrown) {
if (staticApi.isCancel(thrown)) {
console.log('Request canceled', thrown.message)
} else {
}
})
staticApi.post(
'/user/12345',
{
name: 'new name',
},
{
cancelToken: source.token,
}
)
source.cancel('Operation canceled by the user.')
const customClient = staticApi.create({
baseURL: someCustomURL,
responseType: 'text',
})
Плагины
Данные плагины могут быть использованы в любой экосистеме(react, vanilla js)
Ознакомьтесь подробнее с документацией по каждому плагину.