About Condo Bridge

Condo Bridge is a JS library that allows the frontend of your mini-application to communicate with the main application frontend.

Installation

To install the library, just run the following command according to your package manager:
bash
npm i @open-condo/bridge

Basic usage example

You can use bridge either within your frontend framework or directly in the browser environment:
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])

Sends a message to main client and returns the Promise object with response data
Parameters
  • method (required) The method of Condo Bridge
  • params (optional) Object containing method args
Example
typescript
// Sending event to client bridge .send('CondoWebAppResizeWindow', { height: 800 }) .then(data => { // Handling response console.log(data.height) }) .catch(error => { // Handling an error });
Since bridge.send returns a Promise you can use async / await flow for handling events:
typescript
try { const response = await bridge.send('CondoWebAppResizeWindow', { height: 800 }) // Handling response console.log(response.height) } catch (err) { // Handling error }

bridge.subscribe(listener)

Subscribes listener to all incoming events and responses.
Parameters
  • listener (required) Function handling events
Example
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)

Unsubscribes a function from event listening
Parameters
  • listener (required) Function handling events
Example
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)

Checks if the main client (runtime environment) supports this method
Parameters
  • method (required) The method of Condo Bridge
Example
typescript
// Checking if event is available if (bridge.supports('CondoWebAppResizeWindow')) { // Then sending actual event bridge.send('CondoWebAppResizeWindow', { height: document.body.scrollHeight }) }

Error types

Each error in Condo Bridge has the following structure::
typescript
type ClientErrorResponseData<Reason extends ErrorReason> = { errorType: 'client', errorReason: Reason errorCode: ErrorCode<Reason>, errorMessage: string }
The error details can be found in the errorMessage field and the error can be processed by its code / cause:

Error ReasonError CodeErro description
ACCESS_DENIED0Your application has no access to execute this method
UNKNOWN_ERROR1Something went wrong on the Condo side, which is probably a bug
UNKNOWN_METHOD2Application was tried to call unknown or unsupported method for current platform
INVALID_PARAMETERS3Invalid method parameters was passed
HANDLER_ERROR4Error was thrown during handler execution
TIMEOUT_REACHED5Response / error was not received in specified timeout