import { getSdkData, getAuthToken } from "./init.js";
import { logger } from "../index.js";
import { getWebSocketInstance } from "../websocket.js";

async function customEvent(eventName: string, eventData: object, gaId: string) {
    if (typeof eventName !== "string") {
        logger.error("❌ Invalid eventName: Must be a string");
        return;
    }
    
    if (typeof gaId !== "string") {
        logger.error("❌ Invalid gaId: Must be a string");
        return;
    }

    if (Object.prototype.toString.call(eventData) !== "[object Object]") {
        logger.error("❌ Invalid eventData: Must be an object");
        return;
    }

    const sdkData = getSdkData();
    sdkData.userID = gaId;

    if (sdkData.show_custom_event === "1") {
        logger.info("✅ Custom Event is enabled");

        let webSocketInstance = getWebSocketInstance(gaId);
        webSocketInstance.send("eventData", {
            token: getAuthToken(),
            ...eventData,
            "website_url": sdkData.website_url
        });
    } else {
        logger.info("❌ Custom Event is not enabled");
    }
}


export { customEvent };
