From 38d540a91fe2e72a102c7d1146581416be341079 Mon Sep 17 00:00:00 2001
From: Nemanja Glumac <31325167+nemanjaglumac@users.noreply.github.com>
Date: Mon, 13 May 2024 12:01:41 +0200
Subject: [PATCH] Remove code related to GoogleAnalytics tracking (#42556)

---
 .clj-kondo/hooks/metabase/models/setting.clj  |  2 --
 .../src/metabase-types/api/mocks/settings.ts  |  1 -
 frontend/src/metabase-types/api/settings.ts   |  1 -
 frontend/src/metabase/lib/analytics.js        | 36 -------------------
 frontend/src/metabase/lib/settings.ts         |  7 ----
 src/metabase/public_settings.clj              | 15 --------
 6 files changed, 62 deletions(-)

diff --git a/.clj-kondo/hooks/metabase/models/setting.clj b/.clj-kondo/hooks/metabase/models/setting.clj
index b32162995bb..32eb3266aec 100644
--- a/.clj-kondo/hooks/metabase/models/setting.clj
+++ b/.clj-kondo/hooks/metabase/models/setting.clj
@@ -38,8 +38,6 @@
      engines
      enum-cardinality-threshold
      follow-up-email-sent
-     ga-code
-     ga-enabled
      google-auth-auto-create-accounts-domain
      google-auth-client-id
      google-auth-configured
diff --git a/frontend/src/metabase-types/api/mocks/settings.ts b/frontend/src/metabase-types/api/mocks/settings.ts
index dd522ee268e..d36ea4a9cfc 100644
--- a/frontend/src/metabase-types/api/mocks/settings.ts
+++ b/frontend/src/metabase-types/api/mocks/settings.ts
@@ -178,7 +178,6 @@ export const createMockSettings = (
   "has-user-setup": true,
   "hide-embed-branding?": true,
   "show-static-embed-terms": true,
-  "ga-enabled": false,
   "google-auth-auto-create-accounts-domain": null,
   "google-auth-client-id": null,
   "google-auth-configured": false,
diff --git a/frontend/src/metabase-types/api/settings.ts b/frontend/src/metabase-types/api/settings.ts
index 1e4df5d62db..12a92c97903 100644
--- a/frontend/src/metabase-types/api/settings.ts
+++ b/frontend/src/metabase-types/api/settings.ts
@@ -281,7 +281,6 @@ interface PublicSettings {
   "enable-enhancements?": boolean;
   "enable-password-login": boolean;
   engines: Record<string, Engine>;
-  "ga-enabled": boolean;
   "google-auth-client-id": string | null;
   "google-auth-enabled": boolean;
   "has-user-setup": boolean;
diff --git a/frontend/src/metabase/lib/analytics.js b/frontend/src/metabase/lib/analytics.js
index 315ac94afa2..035bd2d01c2 100644
--- a/frontend/src/metabase/lib/analytics.js
+++ b/frontend/src/metabase/lib/analytics.js
@@ -5,15 +5,9 @@ import Settings from "metabase/lib/settings";
 import { getUserId } from "metabase/selectors/user";
 
 export const createTracker = store => {
-  if (Settings.googleAnalyticsEnabled()) {
-    createGoogleAnalyticsTracker();
-  }
-
   if (Settings.snowplowEnabled()) {
     createSnowplowTracker(store);
-  }
 
-  if (Settings.googleAnalyticsEnabled() || Settings.snowplowEnabled()) {
     document.body.addEventListener("click", handleStructEventClick, true);
   }
 };
@@ -23,10 +17,6 @@ export const trackPageView = url => {
     return;
   }
 
-  if (Settings.googleAnalyticsEnabled()) {
-    trackGoogleAnalyticsPageView(getSanitizedUrl(url));
-  }
-
   if (Settings.snowplowEnabled()) {
     trackSnowplowPageView(getSanitizedUrl(url));
   }
@@ -39,10 +29,6 @@ export const trackStructEvent = (category, action, label, value) => {
   if (!category || !label || !Settings.trackingEnabled()) {
     return;
   }
-
-  if (Settings.googleAnalyticsEnabled()) {
-    trackGoogleAnalyticsStructEvent(category, action, label, value);
-  }
 };
 
 export const trackSchemaEvent = (schema, version, data) => {
@@ -66,28 +52,6 @@ export const trackSchemaEvent = (schema, version, data) => {
   }
 };
 
-const createGoogleAnalyticsTracker = () => {
-  const code = Settings.get("ga-code");
-  window.ga?.("create", code, "auto");
-
-  Settings.on("anon-tracking-enabled", enabled => {
-    window[`ga-disable-${code}`] = enabled ? null : true;
-  });
-};
-
-const trackGoogleAnalyticsPageView = url => {
-  const version = Settings.get("version", {});
-  window.ga?.("set", "dimension1", version.tag);
-  window.ga?.("set", "page", url);
-  window.ga?.("send", "pageview", url);
-};
-
-const trackGoogleAnalyticsStructEvent = (category, action, label, value) => {
-  const version = Settings.get("version", {});
-  window.ga?.("set", "dimension1", version.tag);
-  window.ga?.("send", "event", category, action, label, value);
-};
-
 const createSnowplowTracker = store => {
   Snowplow.newTracker("sp", Settings.snowplowUrl(), {
     appId: "metabase",
diff --git a/frontend/src/metabase/lib/settings.ts b/frontend/src/metabase/lib/settings.ts
index 4f4a41104b0..69711849603 100644
--- a/frontend/src/metabase/lib/settings.ts
+++ b/frontend/src/metabase/lib/settings.ts
@@ -220,13 +220,6 @@ class MetabaseSettings {
     return !!(this.get("uploads-enabled") && this.get("uploads-database-id"));
   }
 
-  /**
-   * @deprecated use getSetting(state, "ga-enabled")
-   */
-  googleAnalyticsEnabled() {
-    return this.get("ga-enabled") || false;
-  }
-
   /**
    * @deprecated use getSetting(state, "snowplow-enabled")
    */
diff --git a/src/metabase/public_settings.clj b/src/metabase/public_settings.clj
index f1ac3c10753..0cab2bb3d05 100644
--- a/src/metabase/public_settings.clj
+++ b/src/metabase/public_settings.clj
@@ -214,21 +214,6 @@
   :visibility :public
   :audit      :getter)
 
-(defsetting ga-code
-  (deferred-tru "Google Analytics tracking code.")
-  :default    "UA-60817802-1"
-  :visibility :public
-  :doc        false)
-
-(defsetting ga-enabled
-  (deferred-tru "Boolean indicating whether analytics data should be sent to Google Analytics on the frontend")
-  :type       :boolean
-  :setter     :none
-  :getter     (fn [] (and config/is-prod? (anon-tracking-enabled)))
-  :visibility :public
-  :audit      :never
-  :doc        false)
-
 (defsetting map-tile-server-url
   (deferred-tru "The map tile server URL template used in map visualizations, for example from OpenStreetMaps or MapBox.")
   :default    "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
-- 
GitLab