@foxford/foxford-js-sdk
TypeScript icon, indicating that this package has built-in type declarations

3.2.1 • Public • Published

Foxford-js-sdk

Набор методом для работы с Фоксфорд

Использование

// @flow
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)
    // создаем cart-item
    const cartItem = sdk.cart.createCartItem(course.id, course.cartItem.type)
    // добавляем cart-item в корзину
    await sdk.cart.addCartItemToCart(cartItem)
    // redirect
  } catch (error) {
    // 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)

// ---------------------------------------------------------------------------------------- //

/*
    `staticApi` можно использовать для доступа к статичным методам и свойствам апи

    * staticApi.create() - для создания нового инстанса
    * staticApi.isCancel() - для проверки был ли запрос отменен пользователем
    * staticApi.CancelToken - для отмены запросов
  */

// Отмена запроса
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)

Ознакомьтесь подробнее с документацией по каждому плагину.

Readme

Keywords

none

Package Sidebar

Install

npm i @foxford/foxford-js-sdk

Weekly Downloads

601

Version

3.2.1

License

MIT

Unpacked Size

495 kB

Total Files

17

Last publish

Collaborators

  • foxford-service
  • iammalikov
  • dmeremyanin
  • romanlex
  • alexkonst
  • stud-mai