Skip to content

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