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)
ΠΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΏΠ»Π°Π³ΠΈΠ½Ρ.