О Condo Bridge

Condo Bridge – это JS-библиотека, позволяющая интерфейсу вашего мини-приложения взаимодействовать с основным интерфейсом приложения.

Установка

Чтобы установить библиотеку, просто выполните следующую команду в соответствии с вашим пакетным менеджером:
bash
npm i @open-condo/bridge

Пример использования

Вы можете использовать bridge как внутри вашего frontend-фреймворка, так и напрямую браузерном окружении:
typescript
import bridge from '@open-condo/bridge' // Send event bridge.send('<event-name>') // Send event with args bridge.send('<event-name>', { someArg: 'some value' }) // Send event and process response bridge.send('<event-name>', { someArg: 'some value' }) .then((response) => { // successful state processing }).catch((error) => { // error processing })

API Reference

bridge.send(method[, params])

Отправляет главному клиенту метод для запуска с его параметрами и возвращает Promise с результатами его выполнения.
Если выполнение метода прошло успешно, то в Promise будет содержаться возвращаемое значение метода. Если же в процессе выполнения возникла ошибка, то Promise будет отклонен, а саму ошибку можно будет найти в блоке catch.
Параметры метода:
  • method (обязательный) Имя вызываемого метода
  • params (опциональный) Объект с аргументами метода
Пример использования:
typescript
// Sending event to client bridge .send('CondoWebAppResizeWindow', { height: 800 }) .then(data => { // Handling response console.log(data.height) }) .catch(error => { // Handling an error })
Поскольку bridge.send возвращает Promise, вы также можете использовать паттерн async / await для обработки событий:
typescript
try { const response = await bridge.send('CondoWebAppResizeWindow', { height: 800 }) // Handling response console.log(response.height) } catch (err) { // Handling error }

bridge.subscribe(listener)

Подписывает обработчик на все входящие события и ответы от главного клиента.
Параметры метода:
  • listener (обязательный) Функция, обрабатывающая поступающие события.
Пример использования:
typescript
// Subscribing to receive events bridge.subscribe((event) => { const { type, data } = event if (type === 'CondoWebAppResizeWindowResult') { // Processing event result console.log(data.height) } else if (type === 'CondoWebAppResizeWindowError') { // Processing event error const { errorType, errorMessage } = data } })

bridge.unsubscribe(listener)

Убирает обработчик событий из списка обработчиков.
Параметры метода:
  • listener (обязательный) Функция, обрабатывающая поступающие события.
Пример использования:
typescript
import bridge, { type CondoBridgeSubscriptionListener } from '@open-condo/bridge' const myListener: CondoBridgeSubscriptionListener = (event) => { logger.info(event) } // Subscribing bridge.subscribe(myListener) // Unsubscribing bridge.unsubscribe(myListener)

bridge.supports(method)

Проверяет, поддерживает ли текущий клиент данный метод.
Параметры метода:
  • method (обязательный) метод Condo Bridge
Пример использования:
typescript
// Checking if event is available if (bridge.supports('CondoWebAppResizeWindow')) { // Then sending actual event bridge.send('CondoWebAppResizeWindow', { height: document.body.scrollHeight }) }

Типы ошибок

Каждая ошибка в Condo Bridge имеет следующую структуру:
typescript
type ClientErrorResponseData<Reason extends ErrorReason> = { errorType: 'client', errorReason: Reason errorCode: ErrorCode<Reason>, errorMessage: string }
Прочитать подробную информацию об ошибке можно в поле errorMessage, а обрабатывать ошибку можно по ее коду / причине:

Тип ошибкиКод ошибкиОписание ошибки
ACCESS_DENIED0У вашего приложения нет права на вызов данного метода
UNKNOWN_ERROR1Что-то пошло не так на стороне Condo
UNKNOWN_METHOD2Приложение попыталось вызвать неизвестный или неподдерживаемый на платформе метод
INVALID_PARAMETERS3Неверные параметры метода
HANDLER_ERROR4В процессе вызова метода была выкинута ошибка
TIMEOUT_REACHED5Ответ от клиента не был получен в течение заданного времени