useOnMessage.ts
1.13 KB
import type { RenderComponentExposeType } from '../types'
import type { CommandSource } from '@/core/websocket/processor'
import type { SubscriptionUpdateMsg } from '@/core/websocket/type/message'
import { DataSourceTypeEnum } from '@/enums/datasource'
interface UseOnMessageParamsType {
onReceiveActMessage?: (commandSource: CommandSource, message: SubscriptionUpdateMsg) => any
onReceiveEventMessage?: (commandSource: CommandSource, message: SubscriptionUpdateMsg) => any
onReceiveDataSourceMessage?: (commandSource: CommandSource, message: SubscriptionUpdateMsg) => any
}
export const useOnMessage = (params?: UseOnMessageParamsType) => {
const onMessage: RenderComponentExposeType['onMessage'] = (commandSource, message) => {
const { dataType } = commandSource
if (dataType === DataSourceTypeEnum.DATASOURCE)
params?.onReceiveDataSourceMessage?.(commandSource, message)
else if (dataType === DataSourceTypeEnum.ACT)
params?.onReceiveActMessage?.(commandSource, message)
else if (dataType === DataSourceTypeEnum.EVENT)
params?.onReceiveEventMessage?.(commandSource, message)
}
return { onMessage }
}