/**
* 功能:发布自定义事件
* @param {object} actions - 目标对象,自定义事件发送的参数
* @param {string} eventName - 触发自定义事件的名字 默认是onGMSMessageSent
* @returns {object} removeEventListener - 触发该方法删除自定义事件
*/
const useGMSCallback = (actions, eventName='onGMSMessageSent') => {
const actionsRef = {};
actionsRef.current = actions;
//广播消息
const eventHandler = ({ data }) => {
const currentActions = actionsRef.current;
if (Array.isArray(currentActions)) {
const actionItem = currentActions.find((item) => item.type === data.type);
if (actionItem) {
actionItem.callback(data);
}
} else {
if (currentActions.type === data.type) {
currentActions.callback(data);
}
}
};
window.addEventListener(eventName, eventHandler);
return {
removeEventListener: () => {
window.removeEventListener(eventName, eventHandler);
},
};
};
export default useGMSCallback;