Хук useB24Helper
Предоставляет простой интерфейс для работы с Битрикс24, что упрощает интеграцию и управление приложением.
Обеспечивает централизованное управление и доступ к функциональности B24HelperManager и клиенту Pull.
import { useB24Helper, LoadDataType } from '@bitrix24/b24jssdk'TIP
Работу с useB24Helper можно протестировать в примере.
Методы
initB24Helper
initB24Helper(
$b24: TypeB24,
dataTypes: LoadDataType[] = [
LoadDataType.App,
LoadDataType.Profile
]
): Promise<B24HelperManager>Инициализирует B24HelperManager и загружает данные.
$b24: ЭкземплярTypeB24dataTypes: Массив типов данныхLoadDataTypeдля загрузки- по умолчанию загружаются данные приложения и профиля.
isInitB24Helper
isInitB24Helper(): booleanВозвращает true, если B24HelperManager был инициализирован.
destroyB24Helper
destroyB24Helper(): voidУничтожает B24HelperManager и сбрасывает состояние инициализации.
getB24Helper
getB24Helper(): B24HelperManagerВозвращает экземпляр B24HelperManager.
Выбрасывает ошибку, если B24HelperManager не был инициализирован.
usePullClient
usePullClient(): voidИнициализирует использование клиента Pull
Выбрасывает ошибку, если B24HelperManager не был инициализирован через initB24Helper.
useSubscribePullClient
useSubscribePullClient(
callback: (message: TypePullMessage) => void,
moduleId: string = 'application'
): voidПодписывается на события клиента Pull.
callback: Функция обратного вызова, вызываемая при получении сообщения.moduleId: Идентификатор модуля для подписки (по умолчанию'application').
Выбрасывает ошибку, если клиент Pull не был инициализирован через usePullClient.
Методы
initB24Helper,usePullClient, иuseSubscribePullClientдолжны быть вызваны в правильной последовательности для корректной работы.
startPullClient
startPullClient(): voidЗапускает клиент Pull.
Выбрасывает ошибку, если клиент Pull не был инициализирован через usePullClient.
Типы данных
LoadDataType
Определяет типы данных, которые могут быть загружены в приложении.
App: Данные статуса приложения, оплаты приложения, лицензии Битрикс24.Profile: Данные профиля.Currency: Данные валюты.AppOptions: Опции приложения.UserOptions: Опции пользователя.
Использование
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'
})