useB24Helper Hook
Provides a simple interface for working with Bitrix24, simplifying integration and application management.
It offers centralized management and access to the functionality of B24HelperManager and the Pull client.
import { useB24Helper, LoadDataType } from '@bitrix24/b24jssdk'TIP
You can test working with useB24Helper in this example.
Methods
initB24Helper
initB24Helper(
$b24: TypeB24,
dataTypes: LoadDataType[] = [
LoadDataType.App,
LoadDataType.Profile
]
): Promise<B24HelperManager>Initializes the B24HelperManager and loads data.
$b24: Instance ofTypeB24dataTypes: Array of data typesLoadDataTypeto load- By default, application and profile data are loaded.
isInitB24Helper
isInitB24Helper(): booleanReturns true if the B24HelperManager has been initialized.
destroyB24Helper
destroyB24Helper(): voidDestroys the B24HelperManager and resets the initialization state.
getB24Helper
getB24Helper(): B24HelperManagerReturns an instance of B24HelperManager.
Throws an error if B24HelperManager has not been initialized.
usePullClient
usePullClient(): voidInitializes the use of the Pull client.
Throws an error if B24HelperManager has not been initialized through initB24Helper.
useSubscribePullClient
useSubscribePullClient(
callback: (message: TypePullMessage) => void,
moduleId: string = 'application'
): voidSubscribes to events from the Pull client.
callback: Callback function invoked when a message is received.moduleId: Module identifier for subscription (default is'application').
Throws an error if the Pull client has not been initialized through usePullClient.
Methods
initB24Helper,usePullClient, anduseSubscribePullClientmust be called in the correct sequence for proper operation.
startPullClient
startPullClient(): voidStarts the Pull client.
Throws an error if the Pull client has not been initialized through usePullClient.
Data Types
LoadDataType
Defines the types of data that can be loaded in the application.
App: Data on application status, application payment, Bitrix24 license.Profile: Data on the profile.Currency: Data on currency.AppOptions: Application options.UserOptions: User options.
Usage
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'
})