Appearance
constructWidgetURL
Метод для формирования URL виджета
Внимание
Прежде чем сформировать URL библиотека получает настройки AB эксперимента и использует "конвертор" для получения корректных id сеансов по этому не рекомендуется формировать URL виджета самостоятельно без использования библиотеки!
Инициализация
js
import { WidgetManager } from 'afishaWidgetManager'
const { urlHandler } = new WidgetManager('41fa9cef-a753-4119-8e44-45d013717a2a')
Топ событий
js
/**
* @param {Routes} route - наименование экрана
* @param {EmbedTypes} embedType - тип встраивания
* @param {string} cityId - "id" города
* @param {string} [hostURL] - URL возврата
* @param {string} [widgetKey] - ключ виджета
* @returns {Promise<URL>} - объект URL виджета
*/
const { href } = await urlHandler.constructWidgetURL({
route: ROUTES.creationsTop,
embedType: EMBED_TYPES.inline,
cityId: '2'
})
// Результат
https://www.afisha.ru/w/creationsTop/41fa9cef-a753-4119-8e44-45d013717a2a/https%3A%2F%2Fwww.afisha.ru?embedType=inline
События по типу
js
/**
* @param {Routes} route - наименование экрана
* @param {EmbedTypes} embedType - тип встраивания
* @param {string} cityId - "id" города
* @param {string} creationType - тип события
* @param {string} [hostURL] - URL возврата
* @param {string} [widgetKey] - ключ виджета
* @returns {Promise<URL>} - объект URL виджета
*/
const { href } = await urlHandler.constructWidgetURL({
route: ROUTES.creationsType,
embedType: EMBED_TYPES.modal,
creationType: 'movie',
cityId: '2'
})
// Результат
https://www.afisha.ru/w/creationsType/movie/2/41fa9cef-a753-4119-8e44-45d013717a2a/https%3A%2F%2Fwww.afisha.ru?embedType=modal
Расписание события
js
/**
* @param {Routes} route - наименование экрана
* @param {EmbedTypes} embedType - тип встраивания
* @param {string} cityId - "id" города
* @param {string} creationType - тип события
* @param {string} creationId - id события
* @param {string} [hostURL] - URL возврата
* @param {string} [widgetKey] - ключ виджета
* @returns {Promise<URL>} - объект URL виджета
*/
const { href } = await urlHandler.constructWidgetURL({
route: ROUTES.creations,
embedType: EMBED_TYPES.modal,
cityId: '2',
creationType: 'movie',
creationId: '989798'
})
// Результат
https://www.afisha.ru/w/creations/movie/989798/2/41fa9cef-a753-4119-8e44-45d013717a2a/https%3A%2F%2Fwww.afisha.ru?embedType=modal
// При добавлении параметра placeId, от будет добавлен в URL виджета, как Query String Parameter.
// При открытии виджета будет предустановлен фильтр по площадке
const { href } = await urlHandler.constructWidgetURL({
route: ROUTES.creations,
embedType: EMBED_TYPES.modal,
cityId: '2',
creationType: 'movie',
creationId: '989798',
placeId: '54351'
})
// Результат
https://www.afisha.ru/w/creations/movie/989798/2/41fa9cef-a753-4119-8e44-45d013717a2a/https%3A%2F%2Fwww.afisha.ru?embedType=modal&placeId=54351
Расписание площадки
js
/**
* @param {Routes} route - наименование экрана
* @param {EmbedTypes} embedType - тип встраивания
* @param {string} placeId - id площадки
* @param {string} [hostURL] - URL возврата
* @param {string} [widgetKey] - ключ виджета
* @returns {Promise<URL>} - объект URL виджета
*/
const { href } = await urlHandler.constructWidgetURL({
route: ROUTES.place,
embedType: EMBED_TYPES.modal,
placeId: '54351'
})
// Результат
https://www.afisha.ru/w/place/54351/41fa9cef-a753-4119-8e44-45d013717a2a/https%3A%2F%2Fwww.afisha.ru?embedType=modal
Сеанс
js
/**
* @param {Routes} route - наименование экрана
* @param {EmbedTypes} embedType - тип встраивания
* @param {string} sessionId - id сеанса
* @param {string} [hostURL] - URL возврата
* @param {string} [widgetKey] - ключ виджета
* @returns {Promise<URL>} - объект URL виджета
*/
const { href } = await urlHandler.constructWidgetURL({
route: ROUTES.session,
embedType: EMBED_TYPES.inline,
sessionId: '102573355'
})
// Результат
https://www.afisha.ru/w/session/102573355/41fa9cef-a753-4119-8e44-45d013717a2a/https%3A%2F%2Fwww.afisha.ru?embedType=inline
Магазин
js
/**
* @param {Routes} route - наименование экрана
* @param {EmbedTypes} embedType - тип встраивания
* @param {string} [hostURL] - URL возврата
* @param {string} [widgetKey] - ключ виджета
* @returns {Promise<URL>} - объект URL виджета
*/
const { href } = await urlHandler.constructWidgetURL({
route: ROUTES.store,
embedType: EMBED_TYPES.modal
})
// Результат
https://www.afisha.ru/w/store/41fa9cef-a753-4119-8e44-45d013717a2a/https%3A%2F%2Fwww.afisha.ru?embedType=modal
Оформление заказа
js
/**
* @param {Routes} route - наименование экрана
* @param {EmbedTypes} embedType - тип встраивания
* @param {string} orderId - id заказа
* @param {string} [hostURL] - URL возврата
* @param {string} [widgetKey] - ключ виджета
* @returns {Promise<URL>} - объект URL виджета
*/
const { href } = await urlHandler.constructWidgetURL({
route: ROUTES.checkout,
embedType: EMBED_TYPES.inline,
orderId: '84b80753-757d-442f-8557-738aab0d46c7'
})
// Результат
https://www.afisha.ru/w/checkout/84b80753-757d-442f-8557-738aab0d46c7/41fa9cef-a753-4119-8e44-45d013717a2a/https%3A%2F%2Fwww.afisha.ru?embedType=inline
Заказ
js
/**
* @param {Routes} route - наименование экрана
* @param {EmbedTypes} embedType - тип встраивания
* @param {string} orderId - id заказа
* @param {string} [hostURL] - URL возврата
* @param {string} [widgetKey] - ключ виджета
* @returns {Promise<URL>} - объект URL виджета
*/
const { href } = await urlHandler.constructWidgetURL({
route: ROUTES.order,
embedType: EMBED_TYPES.inline,
orderId: '84b80753-757d-442f-8557-738aab0d46c7'
})
// Результат
https://www.afisha.ru/w/order/84b80753-757d-442f-8557-738aab0d46c7/41fa9cef-a753-4119-8e44-45d013717a2a/https%3A%2F%2Fwww.afisha.ru?embedType=inline
Список билетов
js
/**
* @param {Routes} route - наименование экрана
* @param {EmbedTypes} embedType - тип встраивания
* @param {string} [hostURL] - URL возврата
* @param {string} [widgetKey] - ключ виджета
* @returns {Promise<URL>} - объект URL виджета
*/
const { href } = await urlHandler.constructWidgetURL({
route: ROUTES.tickets,
embedType: EMBED_TYPES.inline
})
// Результат
https://www.afisha.ru/w/tickets/41fa9cef-a753-4119-8e44-45d013717a2a/https%3A%2F%2Fwww.afisha.ru?embedType=inline
Возврат заказов
js
/**
* @param {Routes} route - наименование экрана
* @param {EmbedTypes} embedType - тип встраивания
* @param {string} [hostURL] - URL возврата
* @param {string} [widgetKey] - ключ виджета
* @returns {Promise<URL>} - объект URL виджета
*/
const { href } = await urlHandler.constructWidgetURL({
route: ROUTES.refunds,
embedType: EMBED_TYPES.modal
})
// Результат
https://www.afisha.ru/w/refunds/41fa9cef-a753-4119-8e44-45d013717a2a/https%3A%2F%2Fwww.afisha.ru?embedType=modal
Возврат заказа
js
/**
* @param {Routes} route - наименование экрана
* @param {EmbedTypes} embedType - тип встраивания
* @param {string} orderId - id заказа
* @param {string} [hostURL] - URL возврата
* @param {string} [widgetKey] - ключ виджета
* @returns {Promise<URL>} - объект URL виджета
*/
const { href } = await urlHandler.constructWidgetURL({
route: ROUTES.refundOrder,
embedType: EMBED_TYPES.inline,
orderId: '84b80753-757d-442f-8557-738aab0d46c7'
})
// Результат
https://www.afisha.ru/w/refundOrder/84b80753-757d-442f-8557-738aab0d46c7/41fa9cef-a753-4119-8e44-45d013717a2a/https%3A%2F%2Fwww.afisha.ru?embedType=inline
Возврат неизвестного заказа
js
/**
* @param {Routes} route - наименование экрана
* @param {EmbedTypes} embedType - тип встраивания
* @param {string} [hostURL] - URL возврата
* @param {string} [widgetKey] - ключ виджета
* @returns {Promise<URL>} - объект URL виджета
*/
const { href } = await urlHandler.constructWidgetURL({
route: ROUTES.refundUnknown,
embedType: EMBED_TYPES.modal
})
// Результат
https://www.afisha.ru/w/refundUnknown/41fa9cef-a753-4119-8e44-45d013717a2a/https%3A%2F%2Fwww.afisha.ru?embedType=modal