• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mendersoftware / gui / 1081664682

22 Nov 2023 02:11PM UTC coverage: 82.798% (-17.2%) from 99.964%
1081664682

Pull #4214

gitlab-ci

tranchitella
fix: Fixed the infinite page redirects when the back button is pressed

Remove the location and navigate from the useLocationParams.setValue callback
dependencies as they change the set function that is presented in other
useEffect dependencies. This happens when the back button is clicked, which
leads to the location changing infinitely.

Changelog: Title
Ticket: MEN-6847
Ticket: MEN-6796

Signed-off-by: Ihor Aleksandrychiev <ihor.aleksandrychiev@northern.tech>
Signed-off-by: Fabio Tranchitella <fabio.tranchitella@northern.tech>
Pull Request #4214: fix: Fixed the infinite page redirects when the back button is pressed

4319 of 6292 branches covered (0.0%)

8332 of 10063 relevant lines covered (82.8%)

191.0 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

54.76
/src/js/tracking.js
1
import ReactGA4 from 'react-ga4';
2

3
const cookieConsentCSS = 'https://cdn.jsdelivr.net/npm/cookieconsent@3/build/cookieconsent.min.css';
183✔
4
const cookieConsentJS = 'https://cdn.jsdelivr.net/npm/cookieconsent@3/build/cookieconsent.min.js';
183✔
5

6
const ReactGA = ReactGA4.default;
183✔
7

8
class Tracker {
9
  constructor() {
10
    this.initialized = false;
183✔
11
    this.trackingEnabled = true;
183✔
12
    this.currentPageView = null;
183✔
13
    this.currentOrganizationUser = null;
183✔
14
  }
15
  cookieconsent() {
16
    return new Promise(resolve => {
2✔
17
      const style = document.createElement('link');
2✔
18
      style.href = cookieConsentCSS;
2✔
19
      style.rel = 'stylesheet';
2✔
20
      style.async = true;
2✔
21
      document.head.appendChild(style);
2✔
22
      //
23
      const script = document.createElement('script');
2✔
24
      script.src = cookieConsentJS;
2✔
25
      script.async = false;
2✔
26
      script.addEventListener('load', () => {
2✔
27
        window.cookieconsent.initialise({
×
28
          palette: {
29
            popup: {
30
              background: '#5d0f43',
31
              text: '#ffffff'
32
            },
33
            button: {
34
              background: '#73a4ad',
35
              text: '#ffffff'
36
            }
37
          },
38
          position: 'bottom-left',
39
          type: 'opt-out',
40
          content: {
41
            message: 'We use cookies to analyze our traffic so we can improve our website and give you a better experience.',
42
            link: 'View our cookie policy',
43
            href: 'https://northern.tech/legal/cookies'
44
          },
45
          autoOpen: true,
46
          revokable: false,
47
          law: {
48
            regionalLaw: false
49
          },
50
          onStatusChange: status => {
51
            let hasConsented = status == 'allow';
×
52
            resolve({ trackingConsentGiven: hasConsented });
×
53
          }
54
        });
55
      });
56
      document.body.appendChild(script);
2✔
57
    });
58
  }
59
  exception(error) {
60
    if (this.initialized && this.trackingEnabled) {
×
61
      ReactGA.event('error', error);
×
62
    }
63
  }
64
  event(data) {
65
    if (this.initialized && this.trackingEnabled) {
41!
66
      ReactGA.event(data);
×
67
    }
68
  }
69
  initialize(trackingCode) {
70
    if (this.initialized && this.trackingEnabled) {
×
71
      return false;
×
72
    }
73
    ReactGA.initialize(trackingCode);
×
74
    this.initialized = true;
×
75
    return true;
×
76
  }
77
  pageview(data) {
78
    if (data) {
3!
79
      this.currentPageView = data;
3✔
80
    }
81
  }
82
  set(value) {
83
    if (this.initialized && this.trackingEnabled) {
×
84
      ReactGA.set(value);
×
85
    }
86
  }
87
  setOrganizationUser(organization, user) {
88
    if (this.initialized && this.trackingEnabled && this.currentOrganizationUser != { organization, user }) {
×
89
      this.currentOrganizationUser = { organization, user };
×
90
      this.set({ dimension1: organization.plan });
×
91
      this.set({ dimension2: organization.id });
×
92
      this.set({ dimension3: user.id });
×
93
      this.set({ userId: user.id });
×
94
    }
95
  }
96
  setTrackingEnabled(trackingEnabled) {
97
    this.trackingEnabled = trackingEnabled;
7✔
98
  }
99
}
100

101
const Tracking = new Tracker();
183✔
102
export default Tracking;
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc