diff --git a/app/client/src/usagePulse/index.ts b/app/client/src/usagePulse/index.ts index 0587889db13f..53edcb3b04ec 100644 --- a/app/client/src/usagePulse/index.ts +++ b/app/client/src/usagePulse/index.ts @@ -18,6 +18,7 @@ import { PULSE_INTERVAL as PULSE_INTERVAL_CE } from "ce/constants/UsagePulse"; import { PULSE_INTERVAL as PULSE_INTERVAL_EE } from "ee/constants/UsagePulse"; import store from "store"; import type { PageListReduxState } from "reducers/entityReducers/pageListReducer"; +import { isAirgapped } from "ee/utils/airgapHelpers"; class UsagePulse { static userAnonymousId: string | undefined; @@ -26,6 +27,7 @@ class UsagePulse { static isTelemetryEnabled: boolean; static isAnonymousUser: boolean; static isFreePlan: boolean; + static isAirgapped = isAirgapped(); /* * Function to check if the given URL is trakable or not. @@ -143,6 +145,10 @@ class UsagePulse { * registers listeners to wait for the user to go to a trackable url */ static async sendPulseAndScheduleNext() { + if (UsagePulse.isAirgapped) { + return; + } + UsagePulse.sendPulse(); UsagePulse.scheduleNextActivityListeners(); } diff --git a/app/client/src/usagePulse/usagePulse.test.ts b/app/client/src/usagePulse/usagePulse.test.ts index 9929128ea5df..2fa3c4507647 100644 --- a/app/client/src/usagePulse/usagePulse.test.ts +++ b/app/client/src/usagePulse/usagePulse.test.ts @@ -29,4 +29,34 @@ describe("Usage pulse", () => { }); }); }); + + describe("sendPulseAndScheduleNext", () => { + let sendPulseSpy: jest.SpyInstance; + let scheduleNextActivityListenersSpy: jest.SpyInstance; + + beforeEach(() => { + sendPulseSpy = jest + .spyOn(UsagePulse, "sendPulse") + .mockImplementation(() => {}); + scheduleNextActivityListenersSpy = jest + .spyOn(UsagePulse, "scheduleNextActivityListeners") + .mockImplementation(() => {}); + UsagePulse.isAirgapped = false; + }); + + it("should not send pulse or schedule next when airgapped", () => { + UsagePulse.isAirgapped = true; + UsagePulse.sendPulseAndScheduleNext(); + + expect(sendPulseSpy).not.toHaveBeenCalled(); + expect(scheduleNextActivityListenersSpy).not.toHaveBeenCalled(); + }); + + it("should send pulse and schedule next activity listeners when not airgapped", () => { + UsagePulse.sendPulseAndScheduleNext(); + + expect(sendPulseSpy).toHaveBeenCalledTimes(1); + expect(scheduleNextActivityListenersSpy).toHaveBeenCalledTimes(1); + }); + }); });