import React from "react";
import { sendPageview } from "../events/pageView";
import { sendTrackingConsentEvent } from "../events/trackingConsent";
import { LongTermTrackingKey, LongTermTrackingState, getLongTermTrackingState, isTrackingEnabled } from "../settings";
export class LongTermTrackingOptIn extends React.Component {
    constructor() {
        super(...arguments);
        this.state = {
            trackingState: getLongTermTrackingState()
        };
        this.setTrackingState = (trackingEnabled) => {
            if (trackingEnabled) {
                localStorage.setItem(LongTermTrackingOptIn.Key, LongTermTrackingState.Enabled);
            }
            else {
                localStorage.setItem(LongTermTrackingOptIn.Key, LongTermTrackingState.Disabled);
            }
            window.dispatchEvent(new StorageEvent("storage", {
                key: LongTermTrackingOptIn.Key
            }));
            sendTrackingConsentEvent(trackingEnabled);
        };
        this.storageDidChange = () => {
            this.setState({
                trackingState: getLongTermTrackingState()
            }, () => {
                sendPageview(false); // Update the cookies based on tracking state
            });
        };
        this.storageEvent = (e) => {
            if (e.key === LongTermTrackingOptIn.Key) {
                this.storageDidChange();
            }
        };
    }
    componentDidMount() {
        this.storageDidChange();
        window.addEventListener("storage", this.storageEvent);
        window.addEventListener("analytics", this.storageDidChange);
    }
    componentWillUnmount() {
        window.removeEventListener("storage", this.storageEvent);
        window.removeEventListener("analytics", this.storageDidChange);
    }
    render() {
        return (<>
        {this.props.children(this.state.trackingState, this.setTrackingState, isTrackingEnabled())}
      </>);
    }
}
LongTermTrackingOptIn.Key = LongTermTrackingKey;
//# sourceMappingURL=longTermTrackingOptIn.jsx.map