import {getCoreInstance} from "../coreInstanceGetter";
import {EventTeaser} from "./typings";
import {serializeToFlatMapString, serializeToFlatPrimitiveMap} from "./extFunctions";
import {CatalogItemModel} from "../modules/typings";

const injectEvent = (
    name: string,
    property?: string,
    ctx?: any,
    sendNow = false,
    userId = "",
    eventTime?: string
) => {
    const cfLog = getCoreInstance();

    const eventTeaser: EventTeaser = {
        name: name,
        property: property,
        ctx: serializeToFlatPrimitiveMap(ctx)
    };

    cfLog.trackEvent(eventTeaser, userId, sendNow, eventTime);
};

const injectCatalog = (
    id: string,
    type: string,
    kv: any
) => {
    const cfLog = getCoreInstance();

    const catalogItem: CatalogItemModel = {
        id: id,
        type: type,
        kv: serializeToFlatMapString(kv)
    };

    cfLog.trackCatalog(catalogItem);
};

export {injectEvent, injectCatalog};
