react-native-whip-whep
Version:
An implementation of WHIP and WHEP protocols functionalities for React Native.
32 lines • 1.22 kB
JavaScript
import { useEffect } from "react";
import { ZodError } from "zod";
import nativeModule from "../ReactNativeMobileWhepClientModule";
import { validateNativeEventPayload } from "./eventPayloadValidator";
export function useEvent(eventName, callback) {
useEffect(() => {
const eventListener = nativeModule.addListener(eventName, (event) => {
const payload = event[eventName];
callback(payload);
});
return () => eventListener.remove();
}, [callback, eventName]);
}
export function validateAndLogEventPayload(eventName, payload) {
// Double check just to make sure
if (!__DEV__)
return;
try {
validateNativeEventPayload(eventName, payload);
}
catch (error) {
if (error instanceof ZodError) {
console.error(`Invalid payload received for event ${eventName}:\n`, error.errors
.map((err) => `- ${err.path.join(".")}: ${err.message}`)
.join("\n"), `\n Received:\n${JSON.stringify(payload, null, 2)}\n\n`);
}
else {
console.error(`Unexpected error validating payload for event ${eventName}:`, error);
}
}
}
//# sourceMappingURL=useEvent.js.map