Skip to content

Хук useB24Helper

Предоставляет простой интерфейс для работы с Битрикс24, что упрощает интеграцию и управление приложением.

Обеспечивает централизованное управление и доступ к функциональности B24HelperManager и клиенту Pull.

ts
import { useB24Helper, LoadDataType } from '@bitrix24/b24jssdk'

TIP

Работу с useB24Helper можно протестировать в примере.

Методы

initB24Helper

ts
initB24Helper(
	$b24: TypeB24,
	dataTypes: LoadDataType[] = [
		LoadDataType.App,
		LoadDataType.Profile
	]
): Promise<B24HelperManager>

Инициализирует B24HelperManager и загружает данные.

  • $b24: Экземпляр TypeB24
  • dataTypes: Массив типов данных LoadDataType для загрузки
    • по умолчанию загружаются данные приложения и профиля.

isInitB24Helper

ts
isInitB24Helper(): boolean

Возвращает true, если B24HelperManager был инициализирован.

destroyB24Helper

ts
destroyB24Helper(): void

Уничтожает B24HelperManager и сбрасывает состояние инициализации.

getB24Helper

ts
getB24Helper(): B24HelperManager

Возвращает экземпляр B24HelperManager.

Выбрасывает ошибку, если B24HelperManager не был инициализирован.

usePullClient

ts
usePullClient(): void

Инициализирует использование клиента Pull

Выбрасывает ошибку, если B24HelperManager не был инициализирован через initB24Helper.

useSubscribePullClient

ts
useSubscribePullClient(
	callback: (message: TypePullMessage) => void,
	moduleId: string = 'application'
): void

Подписывается на события клиента Pull.

TypePullMessage

  • callback: Функция обратного вызова, вызываемая при получении сообщения.
  • moduleId: Идентификатор модуля для подписки (по умолчанию 'application').

Выбрасывает ошибку, если клиент Pull не был инициализирован через usePullClient.

Методы initB24Helper, usePullClient, и useSubscribePullClient должны быть вызваны в правильной последовательности для корректной работы.

startPullClient

ts
startPullClient(): void

Запускает клиент Pull.

Выбрасывает ошибку, если клиент Pull не был инициализирован через usePullClient.

Типы данных

LoadDataType

Определяет типы данных, которые могут быть загружены в приложении.

Использование

ts
import {
	initializeB24Frame,
	LoggerBrowser,
	B24Frame,
	useB24Helper,
	LoadDataType,
	type TypePullMessage
} from '@bitrix24/b24jssdk'

const {
	initB24Helper,
	destroyB24Helper,
	getB24Helper,
	usePullClient,
	useSubscribePullClient,
	startPullClient
} = useB24Helper()

let $b24: B24Frame
let $isInitB24Helper = false
const $logger = LoggerBrowser.build('MyApp', import.meta.env?.DEV === true)

// ... ////
async function init(): Promise<void>
{
	try
	{
		$b24 = await initializeB24Frame()
		
		await initB24Helper(
			$b24,
			[
				LoadDataType.Profile,
				LoadDataType.App,
				LoadDataType.Currency,
				LoadDataType.AppOptions,
				LoadDataType.UserOptions,
			]
		)
		$isInitB24Helper = true
		
		usePullClient()
		useSubscribePullClient(
			pullCommandHandler.bind(this),
			'main'
		)
		startPullClient()
	}
	catch(error: any)
	{
		// ... ////
	}
}

function pullCommandHandler(message: TypePullMessage): void
{
	$logger.warn('<< pull.get <<<', message)
	
	if(message.command === 'reload.options')
	{
		$logger.info("Get pull command for update. Reinit the application")
		reloadData()
		return
	}
}

async function reloadData(): Promise<void>
{
	if(!$isInitB24Helper)
	{
		return
	}
	
	return getB24Helper().loadData([
		LoadDataType.Profile,
		LoadDataType.App,
		LoadDataType.Currency,
		LoadDataType.AppOptions,
		LoadDataType.UserOptions,
	])
	.then(() => {
		return makeFitWindow()
	})
}

const b24Helper = (): null|B24HelperManager => {
	if($isInitB24Helper)
	{
		return getB24Helper()
	}
	
	return null
}
// ... ////

$logger.info({
	profileInfo: b24Helper?.profileInfo.data,
	appOptions: b24Helper?.appOptions.data,
	userOptions: b24Helper?.userOptions.data,
	isSelfHosted: b24Helper?.isSelfHosted ? 'Y' : 'N'
})

Опубликовано под лицензией MIT.