/* global ga */
import * as React from "react";
import env from "~/env";

type Props = {
  children?: React.ReactNode;
};

export default class Analytics extends React.Component<Props> {
  componentDidMount() {
    if (!env.GOOGLE_ANALYTICS_ID) {
      return;
    }

    // standard Google Analytics script
    window.ga =
      window.ga ||
      function (...args) {
        (ga.q = ga.q || []).push(args);
      };

    ga.l = +new Date();
    ga("create", env.GOOGLE_ANALYTICS_ID, "auto");
    ga("set", {
      dimension1: "true",
    });
    ga("send", "pageview");
    const script = document.createElement("script");
    script.src = "https://www.google-analytics.com/analytics.js";
    script.async = true;

    // Track PWA install event
    window.addEventListener("appinstalled", () => {
      ga("send", "event", "pwa", "install");
    });

    if (document.body) {
      document.body.appendChild(script);
    }
  }

  render() {
    return this.props.children || null;
  }
}
