Files
ColdBreeze-chat-web/src/common/hook/useTabBroadcast.ts
T
2023-01-20 23:48:14 +08:00

33 lines
981 B
TypeScript

import { useState, useEffect } from 'react';
import { BroadcastChannel } from 'broadcast-channel';
// import useStreaming from './useStreaming';
type ChannelData = {
type: "NEW_TAB",
message: string
}
const channel = new BroadcastChannel('VOCECHAT_CHANNEL');
const useTabBroadcast = () => {
// const { stopStreaming } = useStreaming();
const [tabActive, setTabActive] = useState(true);
useEffect(() => {
channel.postMessage({ type: "NEW_TAB", message: "new tab opened" } as ChannelData);
const handler = (data: ChannelData) => {
console.log("channel data", data);
if (data.type == "NEW_TAB") {
setTabActive(false);
}
};
channel.addEventListener('message', handler);
return () => {
channel.removeEventListener("message", handler);
channel.close();
};
}, []);
return {
tabActive
};
};
export default useTabBroadcast;