fix: enhance typing

This commit is contained in:
yassinedorbozgithub 2025-01-30 11:07:14 +01:00
parent 8ea4251bcf
commit aebeeb1f59
2 changed files with 28 additions and 22 deletions

View File

@ -26,16 +26,24 @@ type BroadcastChannelPayload = {
data?: string | number | boolean | Record<string, unknown> | undefined | null;
};
export type BroadcastChannelData = {
type BroadcastChannelData = {
tabId: string;
payload: BroadcastChannelPayload;
};
export interface IBroadcastChannelProps {
interface IBroadcastChannelProps {
channelName: string;
children: ReactNode;
}
interface IBroadcastChannelContext {
subscribe: (
event: `${EBCEvent}`,
callback: (message: BroadcastChannelData) => void,
) => void;
postMessage: (payload: BroadcastChannelPayload) => void;
}
const getOrCreateTabId = () => {
let storedTabId = sessionStorage.getItem("tab_uuid");
@ -49,14 +57,6 @@ const getOrCreateTabId = () => {
return storedTabId;
};
interface IBroadcastChannelContext {
subscribe: (
event: `${EBCEvent}`,
callback: (message: BroadcastChannelData) => void,
) => void;
postMessage: (payload: BroadcastChannelPayload) => void;
}
export const BroadcastChannelContext = createContext<
IBroadcastChannelContext | undefined
>(undefined);
@ -69,7 +69,10 @@ export const BroadcastChannelProvider: FC<IBroadcastChannelProps> = ({
new BroadcastChannel(channelName),
);
const subscribersRef = useRef<
Record<string, Array<(message: BroadcastChannelData) => void>>
Record<
string,
Array<Parameters<IBroadcastChannelContext["subscribe"]>["1"]>
>
>({});
const tabUuid = getOrCreateTabId();

View File

@ -26,16 +26,24 @@ type BroadcastChannelPayload = {
data?: string | number | boolean | Record<string, unknown> | undefined | null;
};
export type BroadcastChannelData = {
type BroadcastChannelData = {
tabId: string;
payload: BroadcastChannelPayload;
};
export interface IBroadcastChannelProps {
interface IBroadcastChannelProps {
channelName: string;
children: ReactNode;
}
interface IBroadcastChannelContext {
subscribe: (
event: `${EBCEvent}`,
callback: (message: BroadcastChannelData) => void,
) => void;
postMessage: (payload: BroadcastChannelPayload) => void;
}
const getOrCreateTabId = () => {
let storedTabId = sessionStorage.getItem("tab_uuid");
@ -49,14 +57,6 @@ const getOrCreateTabId = () => {
return storedTabId;
};
interface IBroadcastChannelContext {
subscribe: (
event: `${EBCEvent}`,
callback: (message: BroadcastChannelData) => void,
) => void;
postMessage: (payload: BroadcastChannelPayload) => void;
}
export const BroadcastChannelContext = createContext<
IBroadcastChannelContext | undefined
>(undefined);
@ -69,7 +69,10 @@ export const BroadcastChannelProvider: FC<IBroadcastChannelProps> = ({
new BroadcastChannel(channelName),
);
const subscribersRef = useRef<
Record<string, Array<(message: BroadcastChannelData) => void>>
Record<
string,
Array<Parameters<IBroadcastChannelContext["subscribe"]>["1"]>
>
>({});
const tabUuid = getOrCreateTabId();