Хук 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
: ЭкземплярTypeB24
dataTypes
: Массив типов данных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'
})