Skip to content

Commit

Permalink
Merge branch 'master' into IOPLT-784
Browse files Browse the repository at this point in the history
  • Loading branch information
CrisTofani authored Feb 10, 2025
2 parents b0e92fa + 851fb1a commit 05f6aad
Show file tree
Hide file tree
Showing 25 changed files with 2,523 additions and 378 deletions.
2 changes: 1 addition & 1 deletion ts/features/bonus/common/components/AvailableBonusItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { BonusAvailable } from "../../../../../definitions/content/BonusAvailabl
import { BonusAvailableContent } from "../../../../../definitions/content/BonusAvailableContent";
import { IOStyles } from "../../../../components/core/variables/IOStyles";
import I18n from "../../../../i18n";
import { getRemoteLocale } from "../../../messages/utils/messages";
import { getRemoteLocale } from "../../../messages/utils/ctas";

export type AvailableBonusItemState = "incoming" | "active" | "completed";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ import { LightModalContext } from "../../../../components/ui/LightModal";
import { useHeaderSecondLevel } from "../../../../hooks/useHeaderSecondLevel";
import I18n from "../../../../i18n";
import { maybeNotNullyString } from "../../../../utils/strings";
import { getRemoteLocale } from "../../../messages/utils/messages";
import { getRemoteLocale } from "../../../messages/utils/ctas";
import TosBonusComponent from "./TosBonusComponent";

type OwnProps = {
Expand Down
70 changes: 70 additions & 0 deletions ts/features/messages/analytics/__test__/index.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import { trackOpenMessage } from "..";
import { ServiceId } from "../../../../../definitions/backend/ServiceId";
import * as MIXPANEL from "../../../../mixpanel";

describe("index", () => {
afterEach(() => {
jest.restoreAllMocks();
});
// eslint-disable-next-line sonarjs/cognitive-complexity
describe("trackOpenMessage", () => {
[false, true].forEach(firstTimeOpening =>
[undefined, false, true].forEach(containsPayment =>
[false, true].forEach(hasRemoteContent =>
[false, true].forEach(containsAttachments =>
[false, true].forEach(fromPushNotifications =>
[false, true].forEach(hasFIMSCTA =>
it(`should have proper values for firstTimeOpening (${firstTimeOpening}) containsPayment (${containsPayment}) hasRemoteContent (${hasRemoteContent}) containsAttachments (${containsAttachments}) fromPushNotifications (${fromPushNotifications}) hasFIMSCTA (${hasFIMSCTA})`, () => {
const spyOnMixpanelTrack = jest
.spyOn(MIXPANEL, "mixpanelTrack")
.mockReturnValue(undefined);
const serviceId = "01JK8TKP8QCNJ689M4D94VA6VG" as ServiceId;
const serviceName = "Service name";
const organizationName = "Organization name";
const organizationFiscalCode = "12345678901";
void trackOpenMessage(
serviceId,
serviceName,
organizationName,
organizationFiscalCode,
firstTimeOpening,
containsPayment,
hasRemoteContent,
containsAttachments,
fromPushNotifications,
hasFIMSCTA
);
expect(spyOnMixpanelTrack.mock.calls.length).toBe(1);
expect(spyOnMixpanelTrack.mock.calls[0].length).toBe(2);
expect(spyOnMixpanelTrack.mock.calls[0][0]).toBe(
"OPEN_MESSAGE"
);
expect(spyOnMixpanelTrack.mock.calls[0][1]).toEqual({
event_category: "UX",
event_type: "screen_view",
flow: undefined,
service_id: serviceId,
service_name: serviceName,
organization_name: organizationName,
organization_fiscal_code: organizationFiscalCode,
contains_payment:
containsPayment != null
? containsPayment
? "yes"
: "no"
: "unknown",
remote_content: hasRemoteContent ? "yes" : "no",
contains_attachment: containsAttachments ? "yes" : "no",
first_time_opening: firstTimeOpening ? "yes" : "no",
fromPushNotification: fromPushNotifications ? "yes" : "no",
has_fims_callback: hasFIMSCTA ? "yes" : "no"
});
})
)
)
)
)
)
);
});
});
15 changes: 6 additions & 9 deletions ts/features/messages/analytics/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import * as t from "io-ts";
import * as O from "fp-ts/lib/Option";
import * as S from "fp-ts/lib/string";
import { pipe } from "fp-ts/lib/function";
import { NonEmptyString } from "@pagopa/ts-commons/lib/strings";
import { getType } from "typesafe-actions";
import { ServiceId } from "../../../../definitions/backend/ServiceId";
Expand Down Expand Up @@ -57,23 +55,22 @@ export const trackOpenMessage = (
containsPayment: boolean | undefined,
hasRemoteContent: boolean,
containsAttachments: boolean,
fromPushNotification: boolean
fromPushNotification: boolean,
hasFIMSCTA: boolean
) => {
const eventName = "OPEN_MESSAGE";
const props = buildEventProperties("UX", "screen_view", {
service_id: serviceId,
service_name: serviceName,
organization_name: organizationName,
organization_fiscal_code: organizationFiscalCode,
contains_payment: pipe(
containsPayment,
O.fromNullable,
O.fold(() => "unknown" as const, booleanToYesNo)
),
contains_payment:
containsPayment != null ? booleanToYesNo(containsPayment) : "unknown",
remote_content: booleanToYesNo(hasRemoteContent),
contains_attachment: booleanToYesNo(containsAttachments),
first_time_opening: booleanToYesNo(firstTimeOpening),
fromPushNotification: booleanToYesNo(fromPushNotification)
fromPushNotification: booleanToYesNo(fromPushNotification),
has_fims_callback: booleanToYesNo(hasFIMSCTA)
});
void mixpanelTrack(eventName, props);
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import {
paymentsButtonStateSelector
} from "../../store/reducers/payments";
import { trackPNOptInMessageAccepted } from "../../../pn/analytics";
import { CTAActionType, handleCtaAction } from "../../utils/messages";
import { CTAActionType, handleCtaAction } from "../../utils/ctas";
import { CTA, CTAS } from "../../types/MessageCTA";
import { ServiceId } from "../../../../../definitions/backend/ServiceId";
import { MessageDetailsPaymentButton } from "./MessageDetailsPaymentButton";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { trackAuthenticationStart } from "../../../fims/common/analytics";
import { serviceByIdSelector } from "../../../services/details/store/reducers";
import { trackCTAPressed, trackPaymentStart } from "../../analytics";
import { CTA } from "../../types/MessageCTA";
import { CTAActionType } from "../../utils/messages";
import { CTAActionType } from "../../utils/ctas";

export const computeAndTrackCTAPressAnalytics = (
isFirstCTA: boolean,
Expand Down
Loading

0 comments on commit 05f6aad

Please sign in to comment.