Skip to content

Commit

Permalink
fix(docs-infra): add cookie consent gtag event default state
Browse files Browse the repository at this point in the history
This PR sets a default state for cookie consent of 'denied'. The other part of the PR exists in the angular/dev-infra repo which will grant permission when the user accepts the cookie banner.
  • Loading branch information
bencodezen committed Apr 23, 2024
1 parent f84d7dd commit 3154148
Show file tree
Hide file tree
Showing 3 changed files with 122 additions and 52 deletions.
18 changes: 17 additions & 1 deletion adev/src/app/core/services/analytics/analytics.service.ts
Expand Up @@ -8,7 +8,7 @@

import {inject, Injectable} from '@angular/core';

import {WINDOW, ENVIRONMENT} from '@angular/docs';
import {WINDOW, ENVIRONMENT, LOCAL_STORAGE, STORAGE_KEY, setCookieConsent} from '@angular/docs';

import {formatErrorEventForAnalytics} from './analytics-format-error';

Expand All @@ -28,6 +28,7 @@ interface WindowWithAnalytics extends Window {
export class AnalyticsService {
private environment = inject(ENVIRONMENT);
private window: WindowWithAnalytics = inject(WINDOW);
private readonly localStorage = inject(LOCAL_STORAGE);

constructor() {
this._installGlobalSiteTag();
Expand Down Expand Up @@ -64,6 +65,21 @@ export class AnalyticsService {
window.gtag = function () {
window.dataLayer?.push(arguments);
};

// Cookie banner consent initial state
// This code is modified in the @angular/docs package in the cookie-popup component.
// Docs: https://developers.google.com/tag-platform/security/guides/consent
if (this.localStorage) {
if (this.localStorage.getItem(STORAGE_KEY) === 'true') {
setCookieConsent('granted');
} else {
setCookieConsent('denied');
}
} else {
// In case localStorage is not available, we default to denying cookies.
setCookieConsent('denied');
}

window.gtag('js', new Date());

// Configure properties before loading the script. This is necessary to avoid
Expand Down
10 changes: 5 additions & 5 deletions package.json
Expand Up @@ -151,11 +151,11 @@
"// 2": "devDependencies are not used under Bazel. Many can be removed after test.sh is deleted.",
"devDependencies": {
"@actions/core": "^1.10.0",
"@angular-devkit/architect-cli": "^0.1800.0-next",
"@angular/animations": "^18.0.0-next",
"@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#5b1b7bc36648f4c066d8cf917ea7cc9e7eed2b8f",
"@angular/docs": "https://github.com/angular/dev-infra-private-docs-builds.git#12016780c96616656ed6667d65860391a5b56c79",
"@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#43caa47b9ea70629976ccbe2b4fb4869f202c080",
"@angular-devkit/architect-cli": "^0.1703.0-rc",
"@angular/animations": "^17.3.0-rc",
"@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#4a72a4dd4c19416cb8204deee884500766fee9f8",
"@angular/docs": "https://github.com/angular/dev-infra-private-docs-builds.git#ea7f2bc177445d0420103f3e7611d5d40793e8c7",
"@angular/ng-dev": "https://github.com/angular/dev-infra-private-ng-dev-builds.git#7dea535110c0215b221908e37067ee6b605db373",
"@babel/helper-remap-async-to-generator": "^7.18.9",
"@babel/plugin-proposal-async-generator-functions": "^7.20.7",
"@bazel/bazelisk": "^1.7.5",
Expand Down
146 changes: 100 additions & 46 deletions yarn.lock
Expand Up @@ -438,19 +438,19 @@
uuid "^9.0.0"
yargs "^17.0.0"

"@angular/cdk@18.0.0-next.5":
version "18.0.0-next.5"
resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-18.0.0-next.5.tgz#17167794604c0b73b354dab7135f1cc24d5be876"
integrity sha512-O2zFYFCr4IuZwtVl/Ban04NSreuVFYqWUrryvY76rsYzsOdnC9hqy3CsL0cyFZXlEZUL6tN0UYf7RIYKg11YJQ==
"@angular/cdk@17.3.0-rc.0":
version "17.3.0-rc.0"
resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-17.3.0-rc.0.tgz#c4bfc20f46cee133bf08e9beb86e46ec0c38408e"
integrity sha512-A5Oa0J5/uqigfHAFQGoGPYOQXJhG+2s8PWarW5hCY39f1B4xO1JyCI4p6/6tXedDqoLTwgLZ5BbXTSyN2WulbA==
dependencies:
tslib "^2.3.0"
optionalDependencies:
parse5 "^7.1.2"

"@angular/cli@18.0.0-next.3":
version "18.0.0-next.3"
resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-18.0.0-next.3.tgz#db89347a0899d77ac79d8e718f4bde2b60a44f9c"
integrity sha512-hOa142GG3wurxD4PQuiYCpRJ9suYVeIMZmDpjYVbVbFIf8S6jhyai0dYoBcHruVYiOtNRbLBbgmY3hYNAlv2ag==
"@angular/cdk@18.0.0-next.1":
version "18.0.0-next.1"
resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-18.0.0-next.1.tgz#089950a633f97bc091c27dddbf03101b5302a861"
integrity sha512-B9KvXGTu9jWjGV8ueqYnO06jHjqAc7oQNb8lwzH3ev8eJ7rgWsippc51MygNTVt5G/PeEYZl1gf8Gn7l8rfa5A==
dependencies:
"@angular-devkit/architect" "0.1800.0-next.3"
"@angular-devkit/core" "18.0.0-next.3"
Expand All @@ -470,17 +470,17 @@
symbol-observable "4.0.0"
yargs "17.7.2"

"@angular/[email protected].5":
version "18.0.0-next.5"
resolved "https://registry.yarnpkg.com/@angular/common/-/common-18.0.0-next.5.tgz#5954ab0076dad5bf332d3b67681e625f2c997ec8"
integrity sha512-nadG1Ru6KzuUBv/XaXlqXYzBpJ0jELltgw9p5rFv0FWxY0WF3/0u5qq0+leK+hNlMvRZQNNwlb/Nv8viBuyNUg==
"@angular/[email protected].1":
version "18.0.0-next.1"
resolved "https://registry.yarnpkg.com/@angular/common/-/common-18.0.0-next.1.tgz#018492c47e176e8d9667b04778f20785ffd59b6d"
integrity sha512-8SjKz6IZ+BSxbh4sZ7k8BydtKnRatbvKFz3Zu3q0AEU44lEBzeO26pE4gEWX1pw739IB+ldsT6Yfl5Gb6o9Qtg==
dependencies:
tslib "^2.3.0"

"@angular/[email protected].5":
version "18.0.0-next.5"
resolved "https://registry.yarnpkg.com/@angular/core/-/core-18.0.0-next.5.tgz#b7329aa491ab1c5d34ceb5c3531343136e70f533"
integrity sha512-bK2wKQJXjLf9LmwEA2fn5GD1phyidWxXMpa7sCVNbcSlGNlNo2Gp3bPqawpDxkU1cd8bgGBNtoHrK8why0fb0g==
"@angular/[email protected].1":
version "18.0.0-next.1"
resolved "https://registry.yarnpkg.com/@angular/core/-/core-18.0.0-next.1.tgz#f90bef16c1af677ad900318aca0100ed8945041f"
integrity sha512-jdhuX7RROtOYcMuSBb4CG35iACMgz8Ba4n4eURh6sSCyqLHz1phkBOoXzHddZNg4QY64KpahAYvhmhk6eoax+A==
dependencies:
tslib "^2.3.0"

Expand All @@ -491,17 +491,17 @@
dependencies:
tslib "^2.3.0"

"@angular/docs@https://github.com/angular/dev-infra-private-docs-builds.git#12016780c96616656ed6667d65860391a5b56c79":
version "0.0.0-f122b83d2a49e24eb9dfcd54fca9fc97612b832d"
resolved "https://github.com/angular/dev-infra-private-docs-builds.git#12016780c96616656ed6667d65860391a5b56c79"
dependencies:
"@angular/cdk" "18.0.0-next.5"
"@angular/common" "18.0.0-next.5"
"@angular/core" "18.0.0-next.5"
"@angular/forms" "18.0.0-next.5"
"@angular/material" "18.0.0-next.5"
"@angular/platform-browser" "18.0.0-next.5"
"@angular/router" "18.0.0-next.5"
"@angular/docs@https://github.com/angular/dev-infra-private-docs-builds.git#ea7f2bc177445d0420103f3e7611d5d40793e8c7":
version "0.0.0-4b433074a806bbbd4d319264430740cd46e62f27"
resolved "https://github.com/angular/dev-infra-private-docs-builds.git#ea7f2bc177445d0420103f3e7611d5d40793e8c7"
dependencies:
"@angular/cdk" "18.0.0-next.1"
"@angular/common" "18.0.0-next.1"
"@angular/core" "18.0.0-next.1"
"@angular/forms" "18.0.0-next.1"
"@angular/material" "18.0.0-next.1"
"@angular/platform-browser" "18.0.0-next.1"
"@angular/router" "18.0.0-next.1"
"@webcontainer/api" "^1.1.8"
algoliasearch "^4.20.0"
diff "5.2.0"
Expand All @@ -517,17 +517,17 @@
xterm-addon-fit "^0.8.0"
zone.js "^0.14.2"

"@angular/[email protected].5":
version "18.0.0-next.5"
resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-18.0.0-next.5.tgz#9557decde759a3491ee3e2c919d243c069e5afcd"
integrity sha512-KsmVbRpr/AgBPNAeDg8NJ8isizyotq3sSoaCwPu3jN6OWfHfBBHybOnAd/ksYMa3bdZXp7SFJAn93W+Vtq5Nyg==
"@angular/[email protected].1":
version "18.0.0-next.1"
resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-18.0.0-next.1.tgz#c0ea5e969ac0d86ae4879decc2b1ea5784afc4ef"
integrity sha512-yE6iTx0Fhbg3QQixHISoBbh9yIC0pMlm1djQS7KvVf8Xny19t5uuSoqse7fSxB8memHFE822bwcQ57G0JsyPUQ==
dependencies:
tslib "^2.3.0"

"@angular/material@18.0.0-next.5":
version "18.0.0-next.5"
resolved "https://registry.yarnpkg.com/@angular/material/-/material-18.0.0-next.5.tgz#bbe62ef044538fb9e555567a5cb97a9c74c422c0"
integrity sha512-vmsEfJxWW3+fshw7muUG96wQzfAlTXrX8U8hKwjNEfFBJBWXGqnrrjNPsiYVmxuJmncWFd+ZSI04ShT06jjkUA==
"@angular/material@17.3.0-rc.0":
version "17.3.0-rc.0"
resolved "https://registry.yarnpkg.com/@angular/material/-/material-17.3.0-rc.0.tgz#9358ca5dac96fadb3f742b100eba28e0662da158"
integrity sha512-gX9OZvypLw6OvQ9goROwY2GosmKuqazcPZeHKtvk6WrvoIf2wSK+DEaNlX1gbHv0xVEtxFHqGE/diQumFQKYcA==
dependencies:
"@material/animation" "15.0.0-canary.7f224ddd4.0"
"@material/auto-init" "15.0.0-canary.7f224ddd4.0"
Expand Down Expand Up @@ -578,24 +578,78 @@
"@material/typography" "15.0.0-canary.7f224ddd4.0"
tslib "^2.3.0"

"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#43caa47b9ea70629976ccbe2b4fb4869f202c080":
version "0.0.0-f122b83d2a49e24eb9dfcd54fca9fc97612b832d"
resolved "https://github.com/angular/dev-infra-private-ng-dev-builds.git#43caa47b9ea70629976ccbe2b4fb4869f202c080"
"@angular/[email protected]":
version "18.0.0-next.1"
resolved "https://registry.yarnpkg.com/@angular/material/-/material-18.0.0-next.1.tgz#b6561539ac5c5a7ac6358d91dcfd1726bc2ad8dc"
integrity sha512-tdr1+Y9d9cV1JNvfOFmaElWaO7l7lc7TjU0hZLlYjwsgPwXOONhm2qEcRzumatkuGqI4IBM/v9KJaCzOwFfu/Q==
dependencies:
"@material/animation" "15.0.0-canary.7f224ddd4.0"
"@material/auto-init" "15.0.0-canary.7f224ddd4.0"
"@material/banner" "15.0.0-canary.7f224ddd4.0"
"@material/base" "15.0.0-canary.7f224ddd4.0"
"@material/button" "15.0.0-canary.7f224ddd4.0"
"@material/card" "15.0.0-canary.7f224ddd4.0"
"@material/checkbox" "15.0.0-canary.7f224ddd4.0"
"@material/chips" "15.0.0-canary.7f224ddd4.0"
"@material/circular-progress" "15.0.0-canary.7f224ddd4.0"
"@material/data-table" "15.0.0-canary.7f224ddd4.0"
"@material/density" "15.0.0-canary.7f224ddd4.0"
"@material/dialog" "15.0.0-canary.7f224ddd4.0"
"@material/dom" "15.0.0-canary.7f224ddd4.0"
"@material/drawer" "15.0.0-canary.7f224ddd4.0"
"@material/elevation" "15.0.0-canary.7f224ddd4.0"
"@material/fab" "15.0.0-canary.7f224ddd4.0"
"@material/feature-targeting" "15.0.0-canary.7f224ddd4.0"
"@material/floating-label" "15.0.0-canary.7f224ddd4.0"
"@material/form-field" "15.0.0-canary.7f224ddd4.0"
"@material/icon-button" "15.0.0-canary.7f224ddd4.0"
"@material/image-list" "15.0.0-canary.7f224ddd4.0"
"@material/layout-grid" "15.0.0-canary.7f224ddd4.0"
"@material/line-ripple" "15.0.0-canary.7f224ddd4.0"
"@material/linear-progress" "15.0.0-canary.7f224ddd4.0"
"@material/list" "15.0.0-canary.7f224ddd4.0"
"@material/menu" "15.0.0-canary.7f224ddd4.0"
"@material/menu-surface" "15.0.0-canary.7f224ddd4.0"
"@material/notched-outline" "15.0.0-canary.7f224ddd4.0"
"@material/radio" "15.0.0-canary.7f224ddd4.0"
"@material/ripple" "15.0.0-canary.7f224ddd4.0"
"@material/rtl" "15.0.0-canary.7f224ddd4.0"
"@material/segmented-button" "15.0.0-canary.7f224ddd4.0"
"@material/select" "15.0.0-canary.7f224ddd4.0"
"@material/shape" "15.0.0-canary.7f224ddd4.0"
"@material/slider" "15.0.0-canary.7f224ddd4.0"
"@material/snackbar" "15.0.0-canary.7f224ddd4.0"
"@material/switch" "15.0.0-canary.7f224ddd4.0"
"@material/tab" "15.0.0-canary.7f224ddd4.0"
"@material/tab-bar" "15.0.0-canary.7f224ddd4.0"
"@material/tab-indicator" "15.0.0-canary.7f224ddd4.0"
"@material/tab-scroller" "15.0.0-canary.7f224ddd4.0"
"@material/textfield" "15.0.0-canary.7f224ddd4.0"
"@material/theme" "15.0.0-canary.7f224ddd4.0"
"@material/tooltip" "15.0.0-canary.7f224ddd4.0"
"@material/top-app-bar" "15.0.0-canary.7f224ddd4.0"
"@material/touch-target" "15.0.0-canary.7f224ddd4.0"
"@material/typography" "15.0.0-canary.7f224ddd4.0"
tslib "^2.3.0"

"@angular/ng-dev@https://github.com/angular/dev-infra-private-ng-dev-builds.git#7dea535110c0215b221908e37067ee6b605db373":
version "0.0.0-5774b71c01a55c4c998f858ee37d3b77ae704c31"
resolved "https://github.com/angular/dev-infra-private-ng-dev-builds.git#7dea535110c0215b221908e37067ee6b605db373"
dependencies:
"@yarnpkg/lockfile" "^1.1.0"
typescript "~4.9.0"

"@angular/[email protected].5":
version "18.0.0-next.5"
resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-18.0.0-next.5.tgz#d88cb7429802a9c71f8028fd8fcb67d8dbb6cb1e"
integrity sha512-c/cXwnprIsGuP2uTH3vBLtJCWB8rEc4c+HUfq9R3B70kGK0+4DMIMdD3eP45P4qL+nVXqWv62vtzH7BP8zCIxg==
"@angular/[email protected].1":
version "18.0.0-next.1"
resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-18.0.0-next.1.tgz#1b4ae134e27fe3a8176d3c7e3b54cb8e404c7e53"
integrity sha512-n1c+sevDbb2lnvY3KzNmrlhQM686L02HI5qbHLcNw0I28CTat0xrLJIrj8gFHT2uxKESIw9hC7a0Q/DkpBeoqQ==
dependencies:
tslib "^2.3.0"

"@angular/[email protected].5":
version "18.0.0-next.5"
resolved "https://registry.yarnpkg.com/@angular/router/-/router-18.0.0-next.5.tgz#545888fc78f163450329c081d89acd7dc9516640"
integrity sha512-G/CHyrQpTV8Rct/PYkKMnweB7zug0n8qWxajzXHvRshhJVNCmiUGEuCDKi25Fg4IjAUqu9y4dEg9WeIuHtYLZA==
"@angular/[email protected].1":
version "18.0.0-next.1"
resolved "https://registry.yarnpkg.com/@angular/router/-/router-18.0.0-next.1.tgz#06a940870e85cf21be4d0b6df1a6be1ef928d300"
integrity sha512-nq9BPRp1uLOPrNySYGYJbHnDZ+5Tr+orHQ9JRVyhi5NGJlejwfKWfHyOixY3DWwMtfFUacsnjdxoUD+YC5bpmA==
dependencies:
tslib "^2.3.0"

Expand Down

0 comments on commit 3154148

Please sign in to comment.