@aws-amplify/notifications 2.0.28-unstable.f37faeb.0 → 2.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,7 +3,7 @@
3
3
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
4
  // SPDX-License-Identifier: Apache-2.0
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.extractMetadata = exports.extractContent = exports.interpretLayout = exports.clearMemo = exports.isQuietTime = exports.isBeforeEndDate = exports.getComparator = exports.matchesMetrics = exports.matchesAttributes = exports.matchesEventType = exports.getStartOfDay = exports.recordAnalyticsEvent = exports.logger = void 0;
6
+ exports.mapOSPlatform = exports.extractMetadata = exports.extractContent = exports.interpretLayout = exports.clearMemo = exports.isQuietTime = exports.isBeforeEndDate = exports.getComparator = exports.matchesMetrics = exports.matchesAttributes = exports.matchesEventType = exports.getStartOfDay = exports.recordAnalyticsEvent = exports.logger = void 0;
7
7
  const tslib_1 = require("tslib");
8
8
  const core_1 = require("@aws-amplify/core");
9
9
  const utils_1 = require("@aws-amplify/core/internals/utils");
@@ -187,10 +187,12 @@ const interpretLayout = (layout) => {
187
187
  };
188
188
  exports.interpretLayout = interpretLayout;
189
189
  const extractContent = ({ InAppMessage: message, }) => {
190
+ const clientInfo = (0, utils_1.getClientInfo)();
191
+ const configPlatform = (0, exports.mapOSPlatform)(clientInfo?.platform);
190
192
  return (message?.Content?.map(content => {
191
193
  const { BackgroundColor, BodyConfig, HeaderConfig, ImageUrl, PrimaryBtn, SecondaryBtn, } = content;
192
- const defaultPrimaryButton = PrimaryBtn?.DefaultConfig;
193
- const defaultSecondaryButton = SecondaryBtn?.DefaultConfig;
194
+ const defaultPrimaryButton = getButtonConfig(configPlatform, PrimaryBtn);
195
+ const defaultSecondaryButton = getButtonConfig(configPlatform, SecondaryBtn);
194
196
  const extractedContent = {};
195
197
  if (BackgroundColor) {
196
198
  extractedContent.container = {
@@ -261,4 +263,34 @@ const extractMetadata = ({ InAppMessage: inAppMessage, Priority, Schedule, Treat
261
263
  treatmentId: TreatmentId,
262
264
  });
263
265
  exports.extractMetadata = extractMetadata;
266
+ const mapOSPlatform = (os) => {
267
+ if (!os)
268
+ return 'DefaultConfig';
269
+ // Check if running in a web browser
270
+ if (typeof window !== 'undefined' && typeof window.document !== 'undefined') {
271
+ return 'Web';
272
+ }
273
+ // Native environment checks
274
+ switch (os) {
275
+ case 'android':
276
+ return 'Android';
277
+ case 'ios':
278
+ return 'IOS';
279
+ default:
280
+ return 'DefaultConfig';
281
+ }
282
+ };
283
+ exports.mapOSPlatform = mapOSPlatform;
284
+ const getButtonConfig = (configPlatform, button) => {
285
+ if (!button?.DefaultConfig) {
286
+ return;
287
+ }
288
+ if (!configPlatform || !button?.[configPlatform]) {
289
+ return button?.DefaultConfig;
290
+ }
291
+ return {
292
+ ...button.DefaultConfig,
293
+ ...button[configPlatform],
294
+ };
295
+ };
264
296
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../../../../src/inAppMessaging/providers/pinpoint/utils/helpers.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extractMetadata = exports.extractContent = exports.interpretLayout = exports.clearMemo = exports.isQuietTime = exports.isBeforeEndDate = exports.getComparator = exports.matchesMetrics = exports.matchesAttributes = exports.matchesEventType = exports.getStartOfDay = exports.recordAnalyticsEvent = exports.logger = void 0;\nconst tslib_1 = require(\"tslib\");\nconst core_1 = require(\"@aws-amplify/core\");\nconst utils_1 = require(\"@aws-amplify/core/internals/utils\");\nconst isEmpty_js_1 = tslib_1.__importDefault(require(\"lodash/isEmpty.js\"));\nconst pinpoint_1 = require(\"@aws-amplify/core/internals/providers/pinpoint\");\nconst resolveConfig_1 = require(\"./resolveConfig\");\nconst resolveCredentials_1 = require(\"./resolveCredentials\");\nconst constants_1 = require(\"./constants\");\nconst userAgent_1 = require(\"./userAgent\");\nconst DELIVERY_TYPE = 'IN_APP_MESSAGE';\nlet eventNameMemo = {};\nlet eventAttributesMemo = {};\nlet eventMetricsMemo = {};\nexports.logger = new core_1.ConsoleLogger('InAppMessaging.Pinpoint.Utils');\nconst recordAnalyticsEvent = (event, message) => {\n const { appId, region } = (0, resolveConfig_1.resolveConfig)();\n const { id, metadata } = message;\n (0, resolveCredentials_1.resolveCredentials)()\n .then(({ credentials, identityId }) => {\n (0, pinpoint_1.record)({\n appId,\n category: constants_1.CATEGORY,\n credentials,\n event: {\n name: event,\n attributes: {\n // only include campaign_id field if we have one\n ...(id && { campaign_id: id }),\n delivery_type: DELIVERY_TYPE,\n treatment_id: metadata?.treatmentId,\n },\n },\n identityId,\n region,\n userAgentValue: (0, userAgent_1.getInAppMessagingUserAgentString)(utils_1.InAppMessagingAction.NotifyMessageInteraction),\n });\n })\n .catch(e => {\n // An error occured while fetching credentials or persisting the event to the buffer\n exports.logger.warn('Failed to record event.', e);\n });\n};\nexports.recordAnalyticsEvent = recordAnalyticsEvent;\nconst getStartOfDay = () => {\n const now = new Date();\n now.setHours(0, 0, 0, 0);\n return now.toISOString();\n};\nexports.getStartOfDay = getStartOfDay;\nconst matchesEventType = ({ CampaignId, Schedule }, { name: eventType }) => {\n const { EventType } = Schedule?.EventFilter?.Dimensions ?? {};\n const memoKey = `${CampaignId}:${eventType}`;\n if (!Object.prototype.hasOwnProperty.call(eventNameMemo, memoKey)) {\n eventNameMemo[memoKey] = !!EventType?.Values?.includes(eventType);\n }\n return eventNameMemo[memoKey];\n};\nexports.matchesEventType = matchesEventType;\nconst matchesAttributes = ({ CampaignId, Schedule }, { attributes = {} }) => {\n const { Attributes } = Schedule?.EventFilter?.Dimensions ?? {};\n if ((0, isEmpty_js_1.default)(Attributes)) {\n // if message does not have attributes defined it does not matter what attributes are on the event\n return true;\n }\n if ((0, isEmpty_js_1.default)(attributes)) {\n // if message does have attributes but the event does not then it always fails the check\n return false;\n }\n const memoKey = `${CampaignId}:${JSON.stringify(attributes)}`;\n if (!Object.prototype.hasOwnProperty.call(eventAttributesMemo, memoKey)) {\n eventAttributesMemo[memoKey] =\n !Attributes ||\n Object.entries(Attributes).every(([key, { Values }]) => Values?.includes(attributes[key]));\n }\n return eventAttributesMemo[memoKey];\n};\nexports.matchesAttributes = matchesAttributes;\nconst matchesMetrics = ({ CampaignId, Schedule }, { metrics = {} }) => {\n const { Metrics } = Schedule?.EventFilter?.Dimensions ?? {};\n if ((0, isEmpty_js_1.default)(Metrics)) {\n // if message does not have metrics defined it does not matter what metrics are on the event\n return true;\n }\n if ((0, isEmpty_js_1.default)(metrics)) {\n // if message does have metrics but the event does not then it always fails the check\n return false;\n }\n const memoKey = `${CampaignId}:${JSON.stringify(metrics)}`;\n if (!Object.prototype.hasOwnProperty.call(eventMetricsMemo, memoKey)) {\n eventMetricsMemo[memoKey] =\n !Metrics ||\n Object.entries(Metrics).every(([key, { ComparisonOperator, Value }]) => {\n const compare = (0, exports.getComparator)(ComparisonOperator);\n // if there is some unknown comparison operator, treat as a comparison failure\n return compare && !!Value ? compare(Value, metrics[key]) : false;\n });\n }\n return eventMetricsMemo[memoKey];\n};\nexports.matchesMetrics = matchesMetrics;\nconst getComparator = (operator) => {\n switch (operator) {\n case 'EQUAL':\n return (metricsVal, eventVal) => metricsVal === eventVal;\n case 'GREATER_THAN':\n return (metricsVal, eventVal) => metricsVal < eventVal;\n case 'GREATER_THAN_OR_EQUAL':\n return (metricsVal, eventVal) => metricsVal <= eventVal;\n case 'LESS_THAN':\n return (metricsVal, eventVal) => metricsVal > eventVal;\n case 'LESS_THAN_OR_EQUAL':\n return (metricsVal, eventVal) => metricsVal >= eventVal;\n default:\n return undefined;\n }\n};\nexports.getComparator = getComparator;\nconst isBeforeEndDate = ({ Schedule, }) => {\n if (!Schedule?.EndDate) {\n return true;\n }\n return new Date() < new Date(Schedule.EndDate);\n};\nexports.isBeforeEndDate = isBeforeEndDate;\nconst isQuietTime = (message) => {\n const { Schedule } = message;\n if (!Schedule?.QuietTime) {\n return false;\n }\n const pattern = /^[0-2]\\d:[0-5]\\d$/; // basic sanity check, not a fully featured HH:MM validation\n const { Start, End } = Schedule.QuietTime;\n if (!Start ||\n !End ||\n Start === End ||\n !pattern.test(Start) ||\n !pattern.test(End)) {\n return false;\n }\n const now = new Date();\n const start = new Date(now);\n const end = new Date(now);\n const [startHours, startMinutes] = Start.split(':');\n const [endHours, endMinutes] = End.split(':');\n start.setHours(Number.parseInt(startHours, 10), Number.parseInt(startMinutes, 10), 0, 0);\n end.setHours(Number.parseInt(endHours, 10), Number.parseInt(endMinutes, 10), 0, 0);\n // if quiet time includes midnight, bump the end time to the next day\n if (start > end) {\n end.setDate(end.getDate() + 1);\n }\n const isDuringQuietTime = now >= start && now <= end;\n if (isDuringQuietTime) {\n exports.logger.debug('message filtered due to quiet time', message);\n }\n return isDuringQuietTime;\n};\nexports.isQuietTime = isQuietTime;\nconst clearMemo = () => {\n eventNameMemo = {};\n eventAttributesMemo = {};\n eventMetricsMemo = {};\n};\nexports.clearMemo = clearMemo;\n// in the pinpoint console when a message is created with a Modal or Full Screen layout,\n// it is assigned a layout value of MOBILE_FEED or OVERLAYS respectively in the message payload.\n// In the future, Pinpoint will be updating the layout values in the aforementioned scenario\n// to MODAL and FULL_SCREEN.\n//\n// This utility acts as a safeguard to ensure that:\n// - 1. the usage of MOBILE_FEED and OVERLAYS as values for message layouts are not leaked\n// outside the Pinpoint provider\n// - 2. Amplify correctly handles the legacy layout values from Pinpoint after they are updated\nconst interpretLayout = (layout) => {\n if (layout === 'MOBILE_FEED') {\n return 'MODAL';\n }\n if (layout === 'OVERLAYS') {\n return 'FULL_SCREEN';\n }\n // cast as PinpointInAppMessage['InAppMessage']['Layout'] allows `string` as a value\n return layout;\n};\nexports.interpretLayout = interpretLayout;\nconst extractContent = ({ InAppMessage: message, }) => {\n return (message?.Content?.map(content => {\n const { BackgroundColor, BodyConfig, HeaderConfig, ImageUrl, PrimaryBtn, SecondaryBtn, } = content;\n const defaultPrimaryButton = PrimaryBtn?.DefaultConfig;\n const defaultSecondaryButton = SecondaryBtn?.DefaultConfig;\n const extractedContent = {};\n if (BackgroundColor) {\n extractedContent.container = {\n style: {\n backgroundColor: BackgroundColor,\n },\n };\n }\n if (HeaderConfig) {\n extractedContent.header = {\n // Default to empty string in rare cases we don't have a Header value\n content: HeaderConfig.Header ?? '',\n style: {\n color: HeaderConfig.TextColor,\n textAlign: HeaderConfig.Alignment?.toLowerCase(),\n },\n };\n }\n if (BodyConfig) {\n extractedContent.body = {\n // Default to empty string in rare cases we don't have a Body value\n content: BodyConfig.Body ?? '',\n style: {\n color: BodyConfig.TextColor,\n textAlign: BodyConfig.Alignment?.toLowerCase(),\n },\n };\n }\n if (ImageUrl) {\n extractedContent.image = {\n src: ImageUrl,\n };\n }\n if (defaultPrimaryButton) {\n extractedContent.primaryButton = {\n // Default to empty string in rare cases we don't have a Text value\n title: defaultPrimaryButton.Text ?? '',\n action: defaultPrimaryButton.ButtonAction,\n url: defaultPrimaryButton.Link,\n style: {\n backgroundColor: defaultPrimaryButton.BackgroundColor,\n borderRadius: defaultPrimaryButton.BorderRadius,\n color: defaultPrimaryButton.TextColor,\n },\n };\n }\n if (defaultSecondaryButton) {\n extractedContent.secondaryButton = {\n // Default to empty string in rare cases we don't have a Text value\n title: defaultSecondaryButton.Text ?? '',\n action: defaultSecondaryButton.ButtonAction,\n url: defaultSecondaryButton.Link,\n style: {\n backgroundColor: defaultSecondaryButton.BackgroundColor,\n borderRadius: defaultSecondaryButton.BorderRadius,\n color: defaultSecondaryButton.TextColor,\n },\n };\n }\n return extractedContent;\n }) ?? []);\n};\nexports.extractContent = extractContent;\nconst extractMetadata = ({ InAppMessage: inAppMessage, Priority, Schedule, TreatmentId, }) => ({\n customData: inAppMessage?.CustomConfig,\n endDate: Schedule?.EndDate,\n priority: Priority,\n treatmentId: TreatmentId,\n});\nexports.extractMetadata = extractMetadata;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../../../../src/inAppMessaging/providers/pinpoint/utils/helpers.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mapOSPlatform = exports.extractMetadata = exports.extractContent = exports.interpretLayout = exports.clearMemo = exports.isQuietTime = exports.isBeforeEndDate = exports.getComparator = exports.matchesMetrics = exports.matchesAttributes = exports.matchesEventType = exports.getStartOfDay = exports.recordAnalyticsEvent = exports.logger = void 0;\nconst tslib_1 = require(\"tslib\");\nconst core_1 = require(\"@aws-amplify/core\");\nconst utils_1 = require(\"@aws-amplify/core/internals/utils\");\nconst isEmpty_js_1 = tslib_1.__importDefault(require(\"lodash/isEmpty.js\"));\nconst pinpoint_1 = require(\"@aws-amplify/core/internals/providers/pinpoint\");\nconst resolveConfig_1 = require(\"./resolveConfig\");\nconst resolveCredentials_1 = require(\"./resolveCredentials\");\nconst constants_1 = require(\"./constants\");\nconst userAgent_1 = require(\"./userAgent\");\nconst DELIVERY_TYPE = 'IN_APP_MESSAGE';\nlet eventNameMemo = {};\nlet eventAttributesMemo = {};\nlet eventMetricsMemo = {};\nexports.logger = new core_1.ConsoleLogger('InAppMessaging.Pinpoint.Utils');\nconst recordAnalyticsEvent = (event, message) => {\n const { appId, region } = (0, resolveConfig_1.resolveConfig)();\n const { id, metadata } = message;\n (0, resolveCredentials_1.resolveCredentials)()\n .then(({ credentials, identityId }) => {\n (0, pinpoint_1.record)({\n appId,\n category: constants_1.CATEGORY,\n credentials,\n event: {\n name: event,\n attributes: {\n // only include campaign_id field if we have one\n ...(id && { campaign_id: id }),\n delivery_type: DELIVERY_TYPE,\n treatment_id: metadata?.treatmentId,\n },\n },\n identityId,\n region,\n userAgentValue: (0, userAgent_1.getInAppMessagingUserAgentString)(utils_1.InAppMessagingAction.NotifyMessageInteraction),\n });\n })\n .catch(e => {\n // An error occured while fetching credentials or persisting the event to the buffer\n exports.logger.warn('Failed to record event.', e);\n });\n};\nexports.recordAnalyticsEvent = recordAnalyticsEvent;\nconst getStartOfDay = () => {\n const now = new Date();\n now.setHours(0, 0, 0, 0);\n return now.toISOString();\n};\nexports.getStartOfDay = getStartOfDay;\nconst matchesEventType = ({ CampaignId, Schedule }, { name: eventType }) => {\n const { EventType } = Schedule?.EventFilter?.Dimensions ?? {};\n const memoKey = `${CampaignId}:${eventType}`;\n if (!Object.prototype.hasOwnProperty.call(eventNameMemo, memoKey)) {\n eventNameMemo[memoKey] = !!EventType?.Values?.includes(eventType);\n }\n return eventNameMemo[memoKey];\n};\nexports.matchesEventType = matchesEventType;\nconst matchesAttributes = ({ CampaignId, Schedule }, { attributes = {} }) => {\n const { Attributes } = Schedule?.EventFilter?.Dimensions ?? {};\n if ((0, isEmpty_js_1.default)(Attributes)) {\n // if message does not have attributes defined it does not matter what attributes are on the event\n return true;\n }\n if ((0, isEmpty_js_1.default)(attributes)) {\n // if message does have attributes but the event does not then it always fails the check\n return false;\n }\n const memoKey = `${CampaignId}:${JSON.stringify(attributes)}`;\n if (!Object.prototype.hasOwnProperty.call(eventAttributesMemo, memoKey)) {\n eventAttributesMemo[memoKey] =\n !Attributes ||\n Object.entries(Attributes).every(([key, { Values }]) => Values?.includes(attributes[key]));\n }\n return eventAttributesMemo[memoKey];\n};\nexports.matchesAttributes = matchesAttributes;\nconst matchesMetrics = ({ CampaignId, Schedule }, { metrics = {} }) => {\n const { Metrics } = Schedule?.EventFilter?.Dimensions ?? {};\n if ((0, isEmpty_js_1.default)(Metrics)) {\n // if message does not have metrics defined it does not matter what metrics are on the event\n return true;\n }\n if ((0, isEmpty_js_1.default)(metrics)) {\n // if message does have metrics but the event does not then it always fails the check\n return false;\n }\n const memoKey = `${CampaignId}:${JSON.stringify(metrics)}`;\n if (!Object.prototype.hasOwnProperty.call(eventMetricsMemo, memoKey)) {\n eventMetricsMemo[memoKey] =\n !Metrics ||\n Object.entries(Metrics).every(([key, { ComparisonOperator, Value }]) => {\n const compare = (0, exports.getComparator)(ComparisonOperator);\n // if there is some unknown comparison operator, treat as a comparison failure\n return compare && !!Value ? compare(Value, metrics[key]) : false;\n });\n }\n return eventMetricsMemo[memoKey];\n};\nexports.matchesMetrics = matchesMetrics;\nconst getComparator = (operator) => {\n switch (operator) {\n case 'EQUAL':\n return (metricsVal, eventVal) => metricsVal === eventVal;\n case 'GREATER_THAN':\n return (metricsVal, eventVal) => metricsVal < eventVal;\n case 'GREATER_THAN_OR_EQUAL':\n return (metricsVal, eventVal) => metricsVal <= eventVal;\n case 'LESS_THAN':\n return (metricsVal, eventVal) => metricsVal > eventVal;\n case 'LESS_THAN_OR_EQUAL':\n return (metricsVal, eventVal) => metricsVal >= eventVal;\n default:\n return undefined;\n }\n};\nexports.getComparator = getComparator;\nconst isBeforeEndDate = ({ Schedule, }) => {\n if (!Schedule?.EndDate) {\n return true;\n }\n return new Date() < new Date(Schedule.EndDate);\n};\nexports.isBeforeEndDate = isBeforeEndDate;\nconst isQuietTime = (message) => {\n const { Schedule } = message;\n if (!Schedule?.QuietTime) {\n return false;\n }\n const pattern = /^[0-2]\\d:[0-5]\\d$/; // basic sanity check, not a fully featured HH:MM validation\n const { Start, End } = Schedule.QuietTime;\n if (!Start ||\n !End ||\n Start === End ||\n !pattern.test(Start) ||\n !pattern.test(End)) {\n return false;\n }\n const now = new Date();\n const start = new Date(now);\n const end = new Date(now);\n const [startHours, startMinutes] = Start.split(':');\n const [endHours, endMinutes] = End.split(':');\n start.setHours(Number.parseInt(startHours, 10), Number.parseInt(startMinutes, 10), 0, 0);\n end.setHours(Number.parseInt(endHours, 10), Number.parseInt(endMinutes, 10), 0, 0);\n // if quiet time includes midnight, bump the end time to the next day\n if (start > end) {\n end.setDate(end.getDate() + 1);\n }\n const isDuringQuietTime = now >= start && now <= end;\n if (isDuringQuietTime) {\n exports.logger.debug('message filtered due to quiet time', message);\n }\n return isDuringQuietTime;\n};\nexports.isQuietTime = isQuietTime;\nconst clearMemo = () => {\n eventNameMemo = {};\n eventAttributesMemo = {};\n eventMetricsMemo = {};\n};\nexports.clearMemo = clearMemo;\n// in the pinpoint console when a message is created with a Modal or Full Screen layout,\n// it is assigned a layout value of MOBILE_FEED or OVERLAYS respectively in the message payload.\n// In the future, Pinpoint will be updating the layout values in the aforementioned scenario\n// to MODAL and FULL_SCREEN.\n//\n// This utility acts as a safeguard to ensure that:\n// - 1. the usage of MOBILE_FEED and OVERLAYS as values for message layouts are not leaked\n// outside the Pinpoint provider\n// - 2. Amplify correctly handles the legacy layout values from Pinpoint after they are updated\nconst interpretLayout = (layout) => {\n if (layout === 'MOBILE_FEED') {\n return 'MODAL';\n }\n if (layout === 'OVERLAYS') {\n return 'FULL_SCREEN';\n }\n // cast as PinpointInAppMessage['InAppMessage']['Layout'] allows `string` as a value\n return layout;\n};\nexports.interpretLayout = interpretLayout;\nconst extractContent = ({ InAppMessage: message, }) => {\n const clientInfo = (0, utils_1.getClientInfo)();\n const configPlatform = (0, exports.mapOSPlatform)(clientInfo?.platform);\n return (message?.Content?.map(content => {\n const { BackgroundColor, BodyConfig, HeaderConfig, ImageUrl, PrimaryBtn, SecondaryBtn, } = content;\n const defaultPrimaryButton = getButtonConfig(configPlatform, PrimaryBtn);\n const defaultSecondaryButton = getButtonConfig(configPlatform, SecondaryBtn);\n const extractedContent = {};\n if (BackgroundColor) {\n extractedContent.container = {\n style: {\n backgroundColor: BackgroundColor,\n },\n };\n }\n if (HeaderConfig) {\n extractedContent.header = {\n // Default to empty string in rare cases we don't have a Header value\n content: HeaderConfig.Header ?? '',\n style: {\n color: HeaderConfig.TextColor,\n textAlign: HeaderConfig.Alignment?.toLowerCase(),\n },\n };\n }\n if (BodyConfig) {\n extractedContent.body = {\n // Default to empty string in rare cases we don't have a Body value\n content: BodyConfig.Body ?? '',\n style: {\n color: BodyConfig.TextColor,\n textAlign: BodyConfig.Alignment?.toLowerCase(),\n },\n };\n }\n if (ImageUrl) {\n extractedContent.image = {\n src: ImageUrl,\n };\n }\n if (defaultPrimaryButton) {\n extractedContent.primaryButton = {\n // Default to empty string in rare cases we don't have a Text value\n title: defaultPrimaryButton.Text ?? '',\n action: defaultPrimaryButton.ButtonAction,\n url: defaultPrimaryButton.Link,\n style: {\n backgroundColor: defaultPrimaryButton.BackgroundColor,\n borderRadius: defaultPrimaryButton.BorderRadius,\n color: defaultPrimaryButton.TextColor,\n },\n };\n }\n if (defaultSecondaryButton) {\n extractedContent.secondaryButton = {\n // Default to empty string in rare cases we don't have a Text value\n title: defaultSecondaryButton.Text ?? '',\n action: defaultSecondaryButton.ButtonAction,\n url: defaultSecondaryButton.Link,\n style: {\n backgroundColor: defaultSecondaryButton.BackgroundColor,\n borderRadius: defaultSecondaryButton.BorderRadius,\n color: defaultSecondaryButton.TextColor,\n },\n };\n }\n return extractedContent;\n }) ?? []);\n};\nexports.extractContent = extractContent;\nconst extractMetadata = ({ InAppMessage: inAppMessage, Priority, Schedule, TreatmentId, }) => ({\n customData: inAppMessage?.CustomConfig,\n endDate: Schedule?.EndDate,\n priority: Priority,\n treatmentId: TreatmentId,\n});\nexports.extractMetadata = extractMetadata;\nconst mapOSPlatform = (os) => {\n if (!os)\n return 'DefaultConfig';\n // Check if running in a web browser\n if (typeof window !== 'undefined' && typeof window.document !== 'undefined') {\n return 'Web';\n }\n // Native environment checks\n switch (os) {\n case 'android':\n return 'Android';\n case 'ios':\n return 'IOS';\n default:\n return 'DefaultConfig';\n }\n};\nexports.mapOSPlatform = mapOSPlatform;\nconst getButtonConfig = (configPlatform, button) => {\n if (!button?.DefaultConfig) {\n return;\n }\n if (!configPlatform || !button?.[configPlatform]) {\n return button?.DefaultConfig;\n }\n return {\n ...button.DefaultConfig,\n ...button[configPlatform],\n };\n};\n"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { ConsoleLogger } from '@aws-amplify/core';
2
2
  import type { InAppMessageCampaign as PinpointInAppMessage } from '@aws-amplify/core/internals/aws-clients/pinpoint';
3
3
  import { InAppMessage, InAppMessageContent, InAppMessageLayout, InAppMessagingEvent } from '../../../types';
4
4
  import { MetricsComparator, PinpointMessageEvent } from '../types';
5
+ import { ButtonConfigPlatform } from '../../../types/message';
5
6
  export declare const logger: ConsoleLogger;
6
7
  export declare const recordAnalyticsEvent: (event: PinpointMessageEvent, message: InAppMessage) => void;
7
8
  export declare const getStartOfDay: () => string;
@@ -15,3 +16,4 @@ export declare const clearMemo: () => void;
15
16
  export declare const interpretLayout: (layout: NonNullable<PinpointInAppMessage['InAppMessage']>['Layout']) => InAppMessageLayout;
16
17
  export declare const extractContent: ({ InAppMessage: message, }: PinpointInAppMessage) => InAppMessageContent[];
17
18
  export declare const extractMetadata: ({ InAppMessage: inAppMessage, Priority, Schedule, TreatmentId, }: PinpointInAppMessage) => InAppMessage['metadata'];
19
+ export declare const mapOSPlatform: (os?: string) => ButtonConfigPlatform;
@@ -1,5 +1,5 @@
1
1
  import { ConsoleLogger } from '@aws-amplify/core';
2
- import { InAppMessagingAction } from '@aws-amplify/core/internals/utils';
2
+ import { InAppMessagingAction, getClientInfo } from '@aws-amplify/core/internals/utils';
3
3
  import isEmpty from 'lodash/isEmpty.js';
4
4
  import { record } from '@aws-amplify/core/internals/providers/pinpoint';
5
5
  import { resolveConfig } from './resolveConfig.mjs';
@@ -173,10 +173,12 @@ const interpretLayout = (layout) => {
173
173
  return layout;
174
174
  };
175
175
  const extractContent = ({ InAppMessage: message, }) => {
176
+ const clientInfo = getClientInfo();
177
+ const configPlatform = mapOSPlatform(clientInfo?.platform);
176
178
  return (message?.Content?.map(content => {
177
179
  const { BackgroundColor, BodyConfig, HeaderConfig, ImageUrl, PrimaryBtn, SecondaryBtn, } = content;
178
- const defaultPrimaryButton = PrimaryBtn?.DefaultConfig;
179
- const defaultSecondaryButton = SecondaryBtn?.DefaultConfig;
180
+ const defaultPrimaryButton = getButtonConfig(configPlatform, PrimaryBtn);
181
+ const defaultSecondaryButton = getButtonConfig(configPlatform, SecondaryBtn);
180
182
  const extractedContent = {};
181
183
  if (BackgroundColor) {
182
184
  extractedContent.container = {
@@ -245,6 +247,35 @@ const extractMetadata = ({ InAppMessage: inAppMessage, Priority, Schedule, Treat
245
247
  priority: Priority,
246
248
  treatmentId: TreatmentId,
247
249
  });
250
+ const mapOSPlatform = (os) => {
251
+ if (!os)
252
+ return 'DefaultConfig';
253
+ // Check if running in a web browser
254
+ if (typeof window !== 'undefined' && typeof window.document !== 'undefined') {
255
+ return 'Web';
256
+ }
257
+ // Native environment checks
258
+ switch (os) {
259
+ case 'android':
260
+ return 'Android';
261
+ case 'ios':
262
+ return 'IOS';
263
+ default:
264
+ return 'DefaultConfig';
265
+ }
266
+ };
267
+ const getButtonConfig = (configPlatform, button) => {
268
+ if (!button?.DefaultConfig) {
269
+ return;
270
+ }
271
+ if (!configPlatform || !button?.[configPlatform]) {
272
+ return button?.DefaultConfig;
273
+ }
274
+ return {
275
+ ...button.DefaultConfig,
276
+ ...button[configPlatform],
277
+ };
278
+ };
248
279
 
249
- export { clearMemo, extractContent, extractMetadata, getComparator, getStartOfDay, interpretLayout, isBeforeEndDate, isQuietTime, logger, matchesAttributes, matchesEventType, matchesMetrics, recordAnalyticsEvent };
280
+ export { clearMemo, extractContent, extractMetadata, getComparator, getStartOfDay, interpretLayout, isBeforeEndDate, isQuietTime, logger, mapOSPlatform, matchesAttributes, matchesEventType, matchesMetrics, recordAnalyticsEvent };
250
281
  //# sourceMappingURL=helpers.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.mjs","sources":["../../../../../../src/inAppMessaging/providers/pinpoint/utils/helpers.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger } from '@aws-amplify/core';\nimport { InAppMessagingAction } from '@aws-amplify/core/internals/utils';\nimport isEmpty from 'lodash/isEmpty.js';\nimport { record as recordCore } from '@aws-amplify/core/internals/providers/pinpoint';\nimport { resolveConfig } from './resolveConfig';\nimport { resolveCredentials } from './resolveCredentials';\nimport { CATEGORY } from './constants';\nimport { getInAppMessagingUserAgentString } from './userAgent';\nconst DELIVERY_TYPE = 'IN_APP_MESSAGE';\nlet eventNameMemo = {};\nlet eventAttributesMemo = {};\nlet eventMetricsMemo = {};\nexport const logger = new ConsoleLogger('InAppMessaging.Pinpoint.Utils');\nexport const recordAnalyticsEvent = (event, message) => {\n const { appId, region } = resolveConfig();\n const { id, metadata } = message;\n resolveCredentials()\n .then(({ credentials, identityId }) => {\n recordCore({\n appId,\n category: CATEGORY,\n credentials,\n event: {\n name: event,\n attributes: {\n // only include campaign_id field if we have one\n ...(id && { campaign_id: id }),\n delivery_type: DELIVERY_TYPE,\n treatment_id: metadata?.treatmentId,\n },\n },\n identityId,\n region,\n userAgentValue: getInAppMessagingUserAgentString(InAppMessagingAction.NotifyMessageInteraction),\n });\n })\n .catch(e => {\n // An error occured while fetching credentials or persisting the event to the buffer\n logger.warn('Failed to record event.', e);\n });\n};\nexport const getStartOfDay = () => {\n const now = new Date();\n now.setHours(0, 0, 0, 0);\n return now.toISOString();\n};\nexport const matchesEventType = ({ CampaignId, Schedule }, { name: eventType }) => {\n const { EventType } = Schedule?.EventFilter?.Dimensions ?? {};\n const memoKey = `${CampaignId}:${eventType}`;\n if (!Object.prototype.hasOwnProperty.call(eventNameMemo, memoKey)) {\n eventNameMemo[memoKey] = !!EventType?.Values?.includes(eventType);\n }\n return eventNameMemo[memoKey];\n};\nexport const matchesAttributes = ({ CampaignId, Schedule }, { attributes = {} }) => {\n const { Attributes } = Schedule?.EventFilter?.Dimensions ?? {};\n if (isEmpty(Attributes)) {\n // if message does not have attributes defined it does not matter what attributes are on the event\n return true;\n }\n if (isEmpty(attributes)) {\n // if message does have attributes but the event does not then it always fails the check\n return false;\n }\n const memoKey = `${CampaignId}:${JSON.stringify(attributes)}`;\n if (!Object.prototype.hasOwnProperty.call(eventAttributesMemo, memoKey)) {\n eventAttributesMemo[memoKey] =\n !Attributes ||\n Object.entries(Attributes).every(([key, { Values }]) => Values?.includes(attributes[key]));\n }\n return eventAttributesMemo[memoKey];\n};\nexport const matchesMetrics = ({ CampaignId, Schedule }, { metrics = {} }) => {\n const { Metrics } = Schedule?.EventFilter?.Dimensions ?? {};\n if (isEmpty(Metrics)) {\n // if message does not have metrics defined it does not matter what metrics are on the event\n return true;\n }\n if (isEmpty(metrics)) {\n // if message does have metrics but the event does not then it always fails the check\n return false;\n }\n const memoKey = `${CampaignId}:${JSON.stringify(metrics)}`;\n if (!Object.prototype.hasOwnProperty.call(eventMetricsMemo, memoKey)) {\n eventMetricsMemo[memoKey] =\n !Metrics ||\n Object.entries(Metrics).every(([key, { ComparisonOperator, Value }]) => {\n const compare = getComparator(ComparisonOperator);\n // if there is some unknown comparison operator, treat as a comparison failure\n return compare && !!Value ? compare(Value, metrics[key]) : false;\n });\n }\n return eventMetricsMemo[memoKey];\n};\nexport const getComparator = (operator) => {\n switch (operator) {\n case 'EQUAL':\n return (metricsVal, eventVal) => metricsVal === eventVal;\n case 'GREATER_THAN':\n return (metricsVal, eventVal) => metricsVal < eventVal;\n case 'GREATER_THAN_OR_EQUAL':\n return (metricsVal, eventVal) => metricsVal <= eventVal;\n case 'LESS_THAN':\n return (metricsVal, eventVal) => metricsVal > eventVal;\n case 'LESS_THAN_OR_EQUAL':\n return (metricsVal, eventVal) => metricsVal >= eventVal;\n default:\n return undefined;\n }\n};\nexport const isBeforeEndDate = ({ Schedule, }) => {\n if (!Schedule?.EndDate) {\n return true;\n }\n return new Date() < new Date(Schedule.EndDate);\n};\nexport const isQuietTime = (message) => {\n const { Schedule } = message;\n if (!Schedule?.QuietTime) {\n return false;\n }\n const pattern = /^[0-2]\\d:[0-5]\\d$/; // basic sanity check, not a fully featured HH:MM validation\n const { Start, End } = Schedule.QuietTime;\n if (!Start ||\n !End ||\n Start === End ||\n !pattern.test(Start) ||\n !pattern.test(End)) {\n return false;\n }\n const now = new Date();\n const start = new Date(now);\n const end = new Date(now);\n const [startHours, startMinutes] = Start.split(':');\n const [endHours, endMinutes] = End.split(':');\n start.setHours(Number.parseInt(startHours, 10), Number.parseInt(startMinutes, 10), 0, 0);\n end.setHours(Number.parseInt(endHours, 10), Number.parseInt(endMinutes, 10), 0, 0);\n // if quiet time includes midnight, bump the end time to the next day\n if (start > end) {\n end.setDate(end.getDate() + 1);\n }\n const isDuringQuietTime = now >= start && now <= end;\n if (isDuringQuietTime) {\n logger.debug('message filtered due to quiet time', message);\n }\n return isDuringQuietTime;\n};\nexport const clearMemo = () => {\n eventNameMemo = {};\n eventAttributesMemo = {};\n eventMetricsMemo = {};\n};\n// in the pinpoint console when a message is created with a Modal or Full Screen layout,\n// it is assigned a layout value of MOBILE_FEED or OVERLAYS respectively in the message payload.\n// In the future, Pinpoint will be updating the layout values in the aforementioned scenario\n// to MODAL and FULL_SCREEN.\n//\n// This utility acts as a safeguard to ensure that:\n// - 1. the usage of MOBILE_FEED and OVERLAYS as values for message layouts are not leaked\n// outside the Pinpoint provider\n// - 2. Amplify correctly handles the legacy layout values from Pinpoint after they are updated\nexport const interpretLayout = (layout) => {\n if (layout === 'MOBILE_FEED') {\n return 'MODAL';\n }\n if (layout === 'OVERLAYS') {\n return 'FULL_SCREEN';\n }\n // cast as PinpointInAppMessage['InAppMessage']['Layout'] allows `string` as a value\n return layout;\n};\nexport const extractContent = ({ InAppMessage: message, }) => {\n return (message?.Content?.map(content => {\n const { BackgroundColor, BodyConfig, HeaderConfig, ImageUrl, PrimaryBtn, SecondaryBtn, } = content;\n const defaultPrimaryButton = PrimaryBtn?.DefaultConfig;\n const defaultSecondaryButton = SecondaryBtn?.DefaultConfig;\n const extractedContent = {};\n if (BackgroundColor) {\n extractedContent.container = {\n style: {\n backgroundColor: BackgroundColor,\n },\n };\n }\n if (HeaderConfig) {\n extractedContent.header = {\n // Default to empty string in rare cases we don't have a Header value\n content: HeaderConfig.Header ?? '',\n style: {\n color: HeaderConfig.TextColor,\n textAlign: HeaderConfig.Alignment?.toLowerCase(),\n },\n };\n }\n if (BodyConfig) {\n extractedContent.body = {\n // Default to empty string in rare cases we don't have a Body value\n content: BodyConfig.Body ?? '',\n style: {\n color: BodyConfig.TextColor,\n textAlign: BodyConfig.Alignment?.toLowerCase(),\n },\n };\n }\n if (ImageUrl) {\n extractedContent.image = {\n src: ImageUrl,\n };\n }\n if (defaultPrimaryButton) {\n extractedContent.primaryButton = {\n // Default to empty string in rare cases we don't have a Text value\n title: defaultPrimaryButton.Text ?? '',\n action: defaultPrimaryButton.ButtonAction,\n url: defaultPrimaryButton.Link,\n style: {\n backgroundColor: defaultPrimaryButton.BackgroundColor,\n borderRadius: defaultPrimaryButton.BorderRadius,\n color: defaultPrimaryButton.TextColor,\n },\n };\n }\n if (defaultSecondaryButton) {\n extractedContent.secondaryButton = {\n // Default to empty string in rare cases we don't have a Text value\n title: defaultSecondaryButton.Text ?? '',\n action: defaultSecondaryButton.ButtonAction,\n url: defaultSecondaryButton.Link,\n style: {\n backgroundColor: defaultSecondaryButton.BackgroundColor,\n borderRadius: defaultSecondaryButton.BorderRadius,\n color: defaultSecondaryButton.TextColor,\n },\n };\n }\n return extractedContent;\n }) ?? []);\n};\nexport const extractMetadata = ({ InAppMessage: inAppMessage, Priority, Schedule, TreatmentId, }) => ({\n customData: inAppMessage?.CustomConfig,\n endDate: Schedule?.EndDate,\n priority: Priority,\n treatmentId: TreatmentId,\n});\n"],"names":["recordCore"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.mjs","sources":["../../../../../../src/inAppMessaging/providers/pinpoint/utils/helpers.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { ConsoleLogger } from '@aws-amplify/core';\nimport { InAppMessagingAction, getClientInfo, } from '@aws-amplify/core/internals/utils';\nimport isEmpty from 'lodash/isEmpty.js';\nimport { record as recordCore } from '@aws-amplify/core/internals/providers/pinpoint';\nimport { resolveConfig } from './resolveConfig';\nimport { resolveCredentials } from './resolveCredentials';\nimport { CATEGORY } from './constants';\nimport { getInAppMessagingUserAgentString } from './userAgent';\nconst DELIVERY_TYPE = 'IN_APP_MESSAGE';\nlet eventNameMemo = {};\nlet eventAttributesMemo = {};\nlet eventMetricsMemo = {};\nexport const logger = new ConsoleLogger('InAppMessaging.Pinpoint.Utils');\nexport const recordAnalyticsEvent = (event, message) => {\n const { appId, region } = resolveConfig();\n const { id, metadata } = message;\n resolveCredentials()\n .then(({ credentials, identityId }) => {\n recordCore({\n appId,\n category: CATEGORY,\n credentials,\n event: {\n name: event,\n attributes: {\n // only include campaign_id field if we have one\n ...(id && { campaign_id: id }),\n delivery_type: DELIVERY_TYPE,\n treatment_id: metadata?.treatmentId,\n },\n },\n identityId,\n region,\n userAgentValue: getInAppMessagingUserAgentString(InAppMessagingAction.NotifyMessageInteraction),\n });\n })\n .catch(e => {\n // An error occured while fetching credentials or persisting the event to the buffer\n logger.warn('Failed to record event.', e);\n });\n};\nexport const getStartOfDay = () => {\n const now = new Date();\n now.setHours(0, 0, 0, 0);\n return now.toISOString();\n};\nexport const matchesEventType = ({ CampaignId, Schedule }, { name: eventType }) => {\n const { EventType } = Schedule?.EventFilter?.Dimensions ?? {};\n const memoKey = `${CampaignId}:${eventType}`;\n if (!Object.prototype.hasOwnProperty.call(eventNameMemo, memoKey)) {\n eventNameMemo[memoKey] = !!EventType?.Values?.includes(eventType);\n }\n return eventNameMemo[memoKey];\n};\nexport const matchesAttributes = ({ CampaignId, Schedule }, { attributes = {} }) => {\n const { Attributes } = Schedule?.EventFilter?.Dimensions ?? {};\n if (isEmpty(Attributes)) {\n // if message does not have attributes defined it does not matter what attributes are on the event\n return true;\n }\n if (isEmpty(attributes)) {\n // if message does have attributes but the event does not then it always fails the check\n return false;\n }\n const memoKey = `${CampaignId}:${JSON.stringify(attributes)}`;\n if (!Object.prototype.hasOwnProperty.call(eventAttributesMemo, memoKey)) {\n eventAttributesMemo[memoKey] =\n !Attributes ||\n Object.entries(Attributes).every(([key, { Values }]) => Values?.includes(attributes[key]));\n }\n return eventAttributesMemo[memoKey];\n};\nexport const matchesMetrics = ({ CampaignId, Schedule }, { metrics = {} }) => {\n const { Metrics } = Schedule?.EventFilter?.Dimensions ?? {};\n if (isEmpty(Metrics)) {\n // if message does not have metrics defined it does not matter what metrics are on the event\n return true;\n }\n if (isEmpty(metrics)) {\n // if message does have metrics but the event does not then it always fails the check\n return false;\n }\n const memoKey = `${CampaignId}:${JSON.stringify(metrics)}`;\n if (!Object.prototype.hasOwnProperty.call(eventMetricsMemo, memoKey)) {\n eventMetricsMemo[memoKey] =\n !Metrics ||\n Object.entries(Metrics).every(([key, { ComparisonOperator, Value }]) => {\n const compare = getComparator(ComparisonOperator);\n // if there is some unknown comparison operator, treat as a comparison failure\n return compare && !!Value ? compare(Value, metrics[key]) : false;\n });\n }\n return eventMetricsMemo[memoKey];\n};\nexport const getComparator = (operator) => {\n switch (operator) {\n case 'EQUAL':\n return (metricsVal, eventVal) => metricsVal === eventVal;\n case 'GREATER_THAN':\n return (metricsVal, eventVal) => metricsVal < eventVal;\n case 'GREATER_THAN_OR_EQUAL':\n return (metricsVal, eventVal) => metricsVal <= eventVal;\n case 'LESS_THAN':\n return (metricsVal, eventVal) => metricsVal > eventVal;\n case 'LESS_THAN_OR_EQUAL':\n return (metricsVal, eventVal) => metricsVal >= eventVal;\n default:\n return undefined;\n }\n};\nexport const isBeforeEndDate = ({ Schedule, }) => {\n if (!Schedule?.EndDate) {\n return true;\n }\n return new Date() < new Date(Schedule.EndDate);\n};\nexport const isQuietTime = (message) => {\n const { Schedule } = message;\n if (!Schedule?.QuietTime) {\n return false;\n }\n const pattern = /^[0-2]\\d:[0-5]\\d$/; // basic sanity check, not a fully featured HH:MM validation\n const { Start, End } = Schedule.QuietTime;\n if (!Start ||\n !End ||\n Start === End ||\n !pattern.test(Start) ||\n !pattern.test(End)) {\n return false;\n }\n const now = new Date();\n const start = new Date(now);\n const end = new Date(now);\n const [startHours, startMinutes] = Start.split(':');\n const [endHours, endMinutes] = End.split(':');\n start.setHours(Number.parseInt(startHours, 10), Number.parseInt(startMinutes, 10), 0, 0);\n end.setHours(Number.parseInt(endHours, 10), Number.parseInt(endMinutes, 10), 0, 0);\n // if quiet time includes midnight, bump the end time to the next day\n if (start > end) {\n end.setDate(end.getDate() + 1);\n }\n const isDuringQuietTime = now >= start && now <= end;\n if (isDuringQuietTime) {\n logger.debug('message filtered due to quiet time', message);\n }\n return isDuringQuietTime;\n};\nexport const clearMemo = () => {\n eventNameMemo = {};\n eventAttributesMemo = {};\n eventMetricsMemo = {};\n};\n// in the pinpoint console when a message is created with a Modal or Full Screen layout,\n// it is assigned a layout value of MOBILE_FEED or OVERLAYS respectively in the message payload.\n// In the future, Pinpoint will be updating the layout values in the aforementioned scenario\n// to MODAL and FULL_SCREEN.\n//\n// This utility acts as a safeguard to ensure that:\n// - 1. the usage of MOBILE_FEED and OVERLAYS as values for message layouts are not leaked\n// outside the Pinpoint provider\n// - 2. Amplify correctly handles the legacy layout values from Pinpoint after they are updated\nexport const interpretLayout = (layout) => {\n if (layout === 'MOBILE_FEED') {\n return 'MODAL';\n }\n if (layout === 'OVERLAYS') {\n return 'FULL_SCREEN';\n }\n // cast as PinpointInAppMessage['InAppMessage']['Layout'] allows `string` as a value\n return layout;\n};\nexport const extractContent = ({ InAppMessage: message, }) => {\n const clientInfo = getClientInfo();\n const configPlatform = mapOSPlatform(clientInfo?.platform);\n return (message?.Content?.map(content => {\n const { BackgroundColor, BodyConfig, HeaderConfig, ImageUrl, PrimaryBtn, SecondaryBtn, } = content;\n const defaultPrimaryButton = getButtonConfig(configPlatform, PrimaryBtn);\n const defaultSecondaryButton = getButtonConfig(configPlatform, SecondaryBtn);\n const extractedContent = {};\n if (BackgroundColor) {\n extractedContent.container = {\n style: {\n backgroundColor: BackgroundColor,\n },\n };\n }\n if (HeaderConfig) {\n extractedContent.header = {\n // Default to empty string in rare cases we don't have a Header value\n content: HeaderConfig.Header ?? '',\n style: {\n color: HeaderConfig.TextColor,\n textAlign: HeaderConfig.Alignment?.toLowerCase(),\n },\n };\n }\n if (BodyConfig) {\n extractedContent.body = {\n // Default to empty string in rare cases we don't have a Body value\n content: BodyConfig.Body ?? '',\n style: {\n color: BodyConfig.TextColor,\n textAlign: BodyConfig.Alignment?.toLowerCase(),\n },\n };\n }\n if (ImageUrl) {\n extractedContent.image = {\n src: ImageUrl,\n };\n }\n if (defaultPrimaryButton) {\n extractedContent.primaryButton = {\n // Default to empty string in rare cases we don't have a Text value\n title: defaultPrimaryButton.Text ?? '',\n action: defaultPrimaryButton.ButtonAction,\n url: defaultPrimaryButton.Link,\n style: {\n backgroundColor: defaultPrimaryButton.BackgroundColor,\n borderRadius: defaultPrimaryButton.BorderRadius,\n color: defaultPrimaryButton.TextColor,\n },\n };\n }\n if (defaultSecondaryButton) {\n extractedContent.secondaryButton = {\n // Default to empty string in rare cases we don't have a Text value\n title: defaultSecondaryButton.Text ?? '',\n action: defaultSecondaryButton.ButtonAction,\n url: defaultSecondaryButton.Link,\n style: {\n backgroundColor: defaultSecondaryButton.BackgroundColor,\n borderRadius: defaultSecondaryButton.BorderRadius,\n color: defaultSecondaryButton.TextColor,\n },\n };\n }\n return extractedContent;\n }) ?? []);\n};\nexport const extractMetadata = ({ InAppMessage: inAppMessage, Priority, Schedule, TreatmentId, }) => ({\n customData: inAppMessage?.CustomConfig,\n endDate: Schedule?.EndDate,\n priority: Priority,\n treatmentId: TreatmentId,\n});\nexport const mapOSPlatform = (os) => {\n if (!os)\n return 'DefaultConfig';\n // Check if running in a web browser\n if (typeof window !== 'undefined' && typeof window.document !== 'undefined') {\n return 'Web';\n }\n // Native environment checks\n switch (os) {\n case 'android':\n return 'Android';\n case 'ios':\n return 'IOS';\n default:\n return 'DefaultConfig';\n }\n};\nconst getButtonConfig = (configPlatform, button) => {\n if (!button?.DefaultConfig) {\n return;\n }\n if (!configPlatform || !button?.[configPlatform]) {\n return button?.DefaultConfig;\n }\n return {\n ...button.DefaultConfig,\n ...button[configPlatform],\n };\n};\n"],"names":["recordCore"],"mappings":";;;;;;;;;AAAA;AACA;AASA,MAAM,aAAa,GAAG,gBAAgB,CAAC;AACvC,IAAI,aAAa,GAAG,EAAE,CAAC;AACvB,IAAI,mBAAmB,GAAG,EAAE,CAAC;AAC7B,IAAI,gBAAgB,GAAG,EAAE,CAAC;AACd,MAAC,MAAM,GAAG,IAAI,aAAa,CAAC,+BAA+B,EAAE;AAC7D,MAAC,oBAAoB,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK;AACxD,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC;AAC9C,IAAI,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;AACrC,IAAI,kBAAkB,EAAE;AACxB,SAAS,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK;AAC/C,QAAQA,MAAU,CAAC;AACnB,YAAY,KAAK;AACjB,YAAY,QAAQ,EAAE,QAAQ;AAC9B,YAAY,WAAW;AACvB,YAAY,KAAK,EAAE;AACnB,gBAAgB,IAAI,EAAE,KAAK;AAC3B,gBAAgB,UAAU,EAAE;AAC5B;AACA,oBAAoB,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE;AACjD,oBAAoB,aAAa,EAAE,aAAa;AAChD,oBAAoB,YAAY,EAAE,QAAQ,EAAE,WAAW;AACvD,iBAAiB;AACjB,aAAa;AACb,YAAY,UAAU;AACtB,YAAY,MAAM;AAClB,YAAY,cAAc,EAAE,gCAAgC,CAAC,oBAAoB,CAAC,wBAAwB,CAAC;AAC3G,SAAS,CAAC,CAAC;AACX,KAAK,CAAC;AACN,SAAS,KAAK,CAAC,CAAC,IAAI;AACpB;AACA,QAAQ,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;AAClD,KAAK,CAAC,CAAC;AACP,EAAE;AACU,MAAC,aAAa,GAAG,MAAM;AACnC,IAAI,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;AAC3B,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7B,IAAI,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;AAC7B,EAAE;AACU,MAAC,gBAAgB,GAAG,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK;AACnF,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,UAAU,IAAI,EAAE,CAAC;AAClE,IAAI,MAAM,OAAO,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AACjD,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE;AACvE,QAAQ,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC1E,KAAK;AACL,IAAI,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;AAClC,EAAE;AACU,MAAC,iBAAiB,GAAG,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE,KAAK;AACpF,IAAI,MAAM,EAAE,UAAU,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,UAAU,IAAI,EAAE,CAAC;AACnE,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;AAC7B;AACA,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;AAC7B;AACA,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAClE,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,EAAE;AAC7E,QAAQ,mBAAmB,CAAC,OAAO,CAAC;AACpC,YAAY,CAAC,UAAU;AACvB,gBAAgB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3G,KAAK;AACL,IAAI,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACxC,EAAE;AACU,MAAC,cAAc,GAAG,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,KAAK;AAC9E,IAAI,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,UAAU,IAAI,EAAE,CAAC;AAChE,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;AAC1B;AACA,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;AAC1B;AACA,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/D,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,EAAE;AAC1E,QAAQ,gBAAgB,CAAC,OAAO,CAAC;AACjC,YAAY,CAAC,OAAO;AACpB,gBAAgB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,KAAK;AACxF,oBAAoB,MAAM,OAAO,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAC;AACtE;AACA,oBAAoB,OAAO,OAAO,IAAI,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AACrF,iBAAiB,CAAC,CAAC;AACnB,KAAK;AACL,IAAI,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACrC,EAAE;AACU,MAAC,aAAa,GAAG,CAAC,QAAQ,KAAK;AAC3C,IAAI,QAAQ,QAAQ;AACpB,QAAQ,KAAK,OAAO;AACpB,YAAY,OAAO,CAAC,UAAU,EAAE,QAAQ,KAAK,UAAU,KAAK,QAAQ,CAAC;AACrE,QAAQ,KAAK,cAAc;AAC3B,YAAY,OAAO,CAAC,UAAU,EAAE,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC;AACnE,QAAQ,KAAK,uBAAuB;AACpC,YAAY,OAAO,CAAC,UAAU,EAAE,QAAQ,KAAK,UAAU,IAAI,QAAQ,CAAC;AACpE,QAAQ,KAAK,WAAW;AACxB,YAAY,OAAO,CAAC,UAAU,EAAE,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC;AACnE,QAAQ,KAAK,oBAAoB;AACjC,YAAY,OAAO,CAAC,UAAU,EAAE,QAAQ,KAAK,UAAU,IAAI,QAAQ,CAAC;AACpE,QAAQ;AACR,YAAY,OAAO,SAAS,CAAC;AAC7B,KAAK;AACL,EAAE;AACU,MAAC,eAAe,GAAG,CAAC,EAAE,QAAQ,GAAG,KAAK;AAClD,IAAI,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE;AAC5B,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,OAAO,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACnD,EAAE;AACU,MAAC,WAAW,GAAG,CAAC,OAAO,KAAK;AACxC,IAAI,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;AACjC,IAAI,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE;AAC9B,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,OAAO,GAAG,mBAAmB,CAAC;AACxC,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC;AAC9C,IAAI,IAAI,CAAC,KAAK;AACd,QAAQ,CAAC,GAAG;AACZ,QAAQ,KAAK,KAAK,GAAG;AACrB,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC5B,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL,IAAI,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;AAC3B,IAAI,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,IAAI,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,IAAI,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxD,IAAI,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAClD,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7F,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACvF;AACA,IAAI,IAAI,KAAK,GAAG,GAAG,EAAE;AACrB,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;AACvC,KAAK;AACL,IAAI,MAAM,iBAAiB,GAAG,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC;AACzD,IAAI,IAAI,iBAAiB,EAAE;AAC3B,QAAQ,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,OAAO,CAAC,CAAC;AACpE,KAAK;AACL,IAAI,OAAO,iBAAiB,CAAC;AAC7B,EAAE;AACU,MAAC,SAAS,GAAG,MAAM;AAC/B,IAAI,aAAa,GAAG,EAAE,CAAC;AACvB,IAAI,mBAAmB,GAAG,EAAE,CAAC;AAC7B,IAAI,gBAAgB,GAAG,EAAE,CAAC;AAC1B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,eAAe,GAAG,CAAC,MAAM,KAAK;AAC3C,IAAI,IAAI,MAAM,KAAK,aAAa,EAAE;AAClC,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,IAAI,MAAM,KAAK,UAAU,EAAE;AAC/B,QAAQ,OAAO,aAAa,CAAC;AAC7B,KAAK;AACL;AACA,IAAI,OAAO,MAAM,CAAC;AAClB,EAAE;AACU,MAAC,cAAc,GAAG,CAAC,EAAE,YAAY,EAAE,OAAO,GAAG,KAAK;AAC9D,IAAI,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;AACvC,IAAI,MAAM,cAAc,GAAG,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAC/D,IAAI,QAAQ,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI;AAC7C,QAAQ,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,GAAG,GAAG,OAAO,CAAC;AAC3G,QAAQ,MAAM,oBAAoB,GAAG,eAAe,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;AACjF,QAAQ,MAAM,sBAAsB,GAAG,eAAe,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AACrF,QAAQ,MAAM,gBAAgB,GAAG,EAAE,CAAC;AACpC,QAAQ,IAAI,eAAe,EAAE;AAC7B,YAAY,gBAAgB,CAAC,SAAS,GAAG;AACzC,gBAAgB,KAAK,EAAE;AACvB,oBAAoB,eAAe,EAAE,eAAe;AACpD,iBAAiB;AACjB,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,IAAI,YAAY,EAAE;AAC1B,YAAY,gBAAgB,CAAC,MAAM,GAAG;AACtC;AACA,gBAAgB,OAAO,EAAE,YAAY,CAAC,MAAM,IAAI,EAAE;AAClD,gBAAgB,KAAK,EAAE;AACvB,oBAAoB,KAAK,EAAE,YAAY,CAAC,SAAS;AACjD,oBAAoB,SAAS,EAAE,YAAY,CAAC,SAAS,EAAE,WAAW,EAAE;AACpE,iBAAiB;AACjB,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,IAAI,UAAU,EAAE;AACxB,YAAY,gBAAgB,CAAC,IAAI,GAAG;AACpC;AACA,gBAAgB,OAAO,EAAE,UAAU,CAAC,IAAI,IAAI,EAAE;AAC9C,gBAAgB,KAAK,EAAE;AACvB,oBAAoB,KAAK,EAAE,UAAU,CAAC,SAAS;AAC/C,oBAAoB,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,WAAW,EAAE;AAClE,iBAAiB;AACjB,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,gBAAgB,CAAC,KAAK,GAAG;AACrC,gBAAgB,GAAG,EAAE,QAAQ;AAC7B,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,IAAI,oBAAoB,EAAE;AAClC,YAAY,gBAAgB,CAAC,aAAa,GAAG;AAC7C;AACA,gBAAgB,KAAK,EAAE,oBAAoB,CAAC,IAAI,IAAI,EAAE;AACtD,gBAAgB,MAAM,EAAE,oBAAoB,CAAC,YAAY;AACzD,gBAAgB,GAAG,EAAE,oBAAoB,CAAC,IAAI;AAC9C,gBAAgB,KAAK,EAAE;AACvB,oBAAoB,eAAe,EAAE,oBAAoB,CAAC,eAAe;AACzE,oBAAoB,YAAY,EAAE,oBAAoB,CAAC,YAAY;AACnE,oBAAoB,KAAK,EAAE,oBAAoB,CAAC,SAAS;AACzD,iBAAiB;AACjB,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,IAAI,sBAAsB,EAAE;AACpC,YAAY,gBAAgB,CAAC,eAAe,GAAG;AAC/C;AACA,gBAAgB,KAAK,EAAE,sBAAsB,CAAC,IAAI,IAAI,EAAE;AACxD,gBAAgB,MAAM,EAAE,sBAAsB,CAAC,YAAY;AAC3D,gBAAgB,GAAG,EAAE,sBAAsB,CAAC,IAAI;AAChD,gBAAgB,KAAK,EAAE;AACvB,oBAAoB,eAAe,EAAE,sBAAsB,CAAC,eAAe;AAC3E,oBAAoB,YAAY,EAAE,sBAAsB,CAAC,YAAY;AACrE,oBAAoB,KAAK,EAAE,sBAAsB,CAAC,SAAS;AAC3D,iBAAiB;AACjB,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,OAAO,gBAAgB,CAAC;AAChC,KAAK,CAAC,IAAI,EAAE,EAAE;AACd,EAAE;AACU,MAAC,eAAe,GAAG,CAAC,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,GAAG,MAAM;AACtG,IAAI,UAAU,EAAE,YAAY,EAAE,YAAY;AAC1C,IAAI,OAAO,EAAE,QAAQ,EAAE,OAAO;AAC9B,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,WAAW,EAAE,WAAW;AAC5B,CAAC,EAAE;AACS,MAAC,aAAa,GAAG,CAAC,EAAE,KAAK;AACrC,IAAI,IAAI,CAAC,EAAE;AACX,QAAQ,OAAO,eAAe,CAAC;AAC/B;AACA,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,EAAE;AACjF,QAAQ,OAAO,KAAK,CAAC;AACrB,KAAK;AACL;AACA,IAAI,QAAQ,EAAE;AACd,QAAQ,KAAK,SAAS;AACtB,YAAY,OAAO,SAAS,CAAC;AAC7B,QAAQ,KAAK,KAAK;AAClB,YAAY,OAAO,KAAK,CAAC;AACzB,QAAQ;AACR,YAAY,OAAO,eAAe,CAAC;AACnC,KAAK;AACL,EAAE;AACF,MAAM,eAAe,GAAG,CAAC,cAAc,EAAE,MAAM,KAAK;AACpD,IAAI,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE;AAChC,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,EAAE;AACtD,QAAQ,OAAO,MAAM,EAAE,aAAa,CAAC;AACrC,KAAK;AACL,IAAI,OAAO;AACX,QAAQ,GAAG,MAAM,CAAC,aAAa;AAC/B,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC;AACjC,KAAK,CAAC;AACN,CAAC;;;;"}
@@ -1,6 +1,7 @@
1
1
  export type InAppMessageLayout = 'BOTTOM_BANNER' | 'CAROUSEL' | 'FULL_SCREEN' | 'MIDDLE_BANNER' | 'MODAL' | 'TOP_BANNER';
2
2
  export type InAppMessageAction = 'CLOSE' | 'DEEP_LINK' | 'LINK';
3
3
  export type InAppMessageTextAlign = 'center' | 'left' | 'right';
4
+ export type ButtonConfigPlatform = 'Android' | 'IOS' | 'Web' | 'DefaultConfig';
4
5
  interface InAppMessageContainer {
5
6
  style?: InAppMessageStyle;
6
7
  }
package/package.json CHANGED
@@ -1,106 +1,106 @@
1
1
  {
2
- "name": "@aws-amplify/notifications",
3
- "version": "2.0.28-unstable.f37faeb.0+f37faeb",
4
- "description": "Notifications category of aws-amplify",
5
- "main": "./dist/cjs/index.js",
6
- "module": "./dist/esm/index.mjs",
7
- "react-native": "./src/index.ts",
8
- "typings": "./dist/esm/index.d.ts",
9
- "sideEffects": false,
10
- "publishConfig": {
11
- "access": "public"
12
- },
13
- "scripts": {
14
- "test": "npm run lint && jest -w 1 --coverage --logHeapUsage",
15
- "test:watch": "tslint 'src/**/*.ts' && jest -w 1 --watch",
16
- "build-with-test": "npm run clean && npm run build",
17
- "build:umd": "webpack && webpack --config ./webpack.config.dev.js",
18
- "build:esm-cjs": "rollup -c rollup.config.mjs",
19
- "build:watch": "npm run build:esm-cjs -- --watch",
20
- "build": "npm run clean && npm run build:esm-cjs && npm run build:umd",
21
- "clean": "npm run clean:size && rimraf dist lib lib-esm",
22
- "clean:size": "rimraf dual-publish-tmp tmp*",
23
- "format": "echo \"Not implemented\"",
24
- "lint": "eslint '**/*.{ts,tsx}' && npm run ts-coverage",
25
- "lint:fix": "eslint '**/*.{ts,tsx}' --fix",
26
- "ts-coverage": "typescript-coverage-report -p ./tsconfig.build.json -t 88.21"
27
- },
28
- "typesVersions": {
29
- ">=4.2": {
30
- "in-app-messaging": [
31
- "./dist/esm/inAppMessaging/index.d.ts"
32
- ],
33
- "push-notifications": [
34
- "./dist/esm/pushNotifications/providers/index.d.ts"
35
- ],
36
- "in-app-messaging/pinpoint": [
37
- "./dist/esm/inAppMessaging/providers/pinpoint/index.d.ts"
38
- ],
39
- "push-notifications/pinpoint": [
40
- "./dist/esm/pushNotifications/providers/pinpoint/index.d.ts"
41
- ]
42
- }
43
- },
44
- "exports": {
45
- ".": {
46
- "import": "./dist/esm/index.mjs",
47
- "require": "./dist/cjs/index.js",
48
- "react-native": "./src/index.ts"
49
- },
50
- "./in-app-messaging": {
51
- "types": "./dist/esm/inAppMessaging/index.d.ts",
52
- "import": "./dist/esm/inAppMessaging/index.mjs",
53
- "require": "./dist/cjs/inAppMessaging/index.js",
54
- "react-native": "./src/inAppMessaging/index.ts"
55
- },
56
- "./push-notifications": {
57
- "types": "./dist/esm/pushNotifications/index.d.ts",
58
- "import": "./dist/esm/pushNotifications/index.mjs",
59
- "require": "./dist/cjs/pushNotifications/index.js",
60
- "react-native": "./src/pushNotifications/index.ts"
61
- },
62
- "./in-app-messaging/pinpoint": {
63
- "types": "./dist/esm/inAppMessaging/providers/pinpoint/index.d.ts",
64
- "import": "./dist/esm/inAppMessaging/providers/pinpoint/index.mjs",
65
- "require": "./dist/cjs/inAppMessaging/providers/pinpoint/index.js",
66
- "react-native": "./src/inAppMessaging/providers/pinpoint/index.ts"
67
- },
68
- "./push-notifications/pinpoint": {
69
- "types": "./dist/esm/pushNotifications/providers/pinpoint/index.d.ts",
70
- "import": "./dist/esm/pushNotifications/providers/pinpoint/index.mjs",
71
- "require": "./dist/cjs/pushNotifications/providers/pinpoint/index.js",
72
- "react-native": "./src/pushNotifications/providers/pinpoint/index.ts"
73
- },
74
- "./package.json": "./package.json"
75
- },
76
- "repository": {
77
- "type": "git",
78
- "url": "https://github.com/aws-amplify/amplify-js.git"
79
- },
80
- "author": "Amazon Web Services",
81
- "license": "Apache-2.0",
82
- "bugs": {
83
- "url": "https://github.com/aws/aws-amplify/issues"
84
- },
85
- "homepage": "https://docs.amplify.aws/",
86
- "files": [
87
- "dist/cjs",
88
- "dist/esm",
89
- "src",
90
- "in-app-messaging",
91
- "push-notifications"
92
- ],
93
- "dependencies": {
94
- "lodash": "^4.17.21",
95
- "tslib": "^2.5.0"
96
- },
97
- "peerDependencies": {
98
- "@aws-amplify/core": "6.0.28-unstable.f37faeb.0+f37faeb"
99
- },
100
- "devDependencies": {
101
- "@aws-amplify/core": "6.0.28-unstable.f37faeb.0+f37faeb",
102
- "@aws-amplify/react-native": "1.0.29-unstable.f37faeb.0+f37faeb",
103
- "typescript": "5.0.2"
104
- },
105
- "gitHead": "f37faebacddeed66ce5bc1d7f78b8d1d46aecb17"
2
+ "name": "@aws-amplify/notifications",
3
+ "version": "2.0.28",
4
+ "description": "Notifications category of aws-amplify",
5
+ "main": "./dist/cjs/index.js",
6
+ "module": "./dist/esm/index.mjs",
7
+ "react-native": "./src/index.ts",
8
+ "typings": "./dist/esm/index.d.ts",
9
+ "sideEffects": false,
10
+ "publishConfig": {
11
+ "access": "public"
12
+ },
13
+ "scripts": {
14
+ "test": "npm run lint && jest -w 1 --coverage --logHeapUsage",
15
+ "test:watch": "tslint 'src/**/*.ts' && jest -w 1 --watch",
16
+ "build-with-test": "npm run clean && npm run build",
17
+ "build:umd": "webpack && webpack --config ./webpack.config.dev.js",
18
+ "build:esm-cjs": "rollup -c rollup.config.mjs",
19
+ "build:watch": "npm run build:esm-cjs -- --watch",
20
+ "build": "npm run clean && npm run build:esm-cjs && npm run build:umd",
21
+ "clean": "npm run clean:size && rimraf dist lib lib-esm",
22
+ "clean:size": "rimraf dual-publish-tmp tmp*",
23
+ "format": "echo \"Not implemented\"",
24
+ "lint": "eslint '**/*.{ts,tsx}' && npm run ts-coverage",
25
+ "lint:fix": "eslint '**/*.{ts,tsx}' --fix",
26
+ "ts-coverage": "typescript-coverage-report -p ./tsconfig.build.json -t 88.21"
27
+ },
28
+ "typesVersions": {
29
+ ">=4.2": {
30
+ "in-app-messaging": [
31
+ "./dist/esm/inAppMessaging/index.d.ts"
32
+ ],
33
+ "push-notifications": [
34
+ "./dist/esm/pushNotifications/providers/index.d.ts"
35
+ ],
36
+ "in-app-messaging/pinpoint": [
37
+ "./dist/esm/inAppMessaging/providers/pinpoint/index.d.ts"
38
+ ],
39
+ "push-notifications/pinpoint": [
40
+ "./dist/esm/pushNotifications/providers/pinpoint/index.d.ts"
41
+ ]
42
+ }
43
+ },
44
+ "exports": {
45
+ ".": {
46
+ "import": "./dist/esm/index.mjs",
47
+ "require": "./dist/cjs/index.js",
48
+ "react-native": "./src/index.ts"
49
+ },
50
+ "./in-app-messaging": {
51
+ "types": "./dist/esm/inAppMessaging/index.d.ts",
52
+ "import": "./dist/esm/inAppMessaging/index.mjs",
53
+ "require": "./dist/cjs/inAppMessaging/index.js",
54
+ "react-native": "./src/inAppMessaging/index.ts"
55
+ },
56
+ "./push-notifications": {
57
+ "types": "./dist/esm/pushNotifications/index.d.ts",
58
+ "import": "./dist/esm/pushNotifications/index.mjs",
59
+ "require": "./dist/cjs/pushNotifications/index.js",
60
+ "react-native": "./src/pushNotifications/index.ts"
61
+ },
62
+ "./in-app-messaging/pinpoint": {
63
+ "types": "./dist/esm/inAppMessaging/providers/pinpoint/index.d.ts",
64
+ "import": "./dist/esm/inAppMessaging/providers/pinpoint/index.mjs",
65
+ "require": "./dist/cjs/inAppMessaging/providers/pinpoint/index.js",
66
+ "react-native": "./src/inAppMessaging/providers/pinpoint/index.ts"
67
+ },
68
+ "./push-notifications/pinpoint": {
69
+ "types": "./dist/esm/pushNotifications/providers/pinpoint/index.d.ts",
70
+ "import": "./dist/esm/pushNotifications/providers/pinpoint/index.mjs",
71
+ "require": "./dist/cjs/pushNotifications/providers/pinpoint/index.js",
72
+ "react-native": "./src/pushNotifications/providers/pinpoint/index.ts"
73
+ },
74
+ "./package.json": "./package.json"
75
+ },
76
+ "repository": {
77
+ "type": "git",
78
+ "url": "https://github.com/aws-amplify/amplify-js.git"
79
+ },
80
+ "author": "Amazon Web Services",
81
+ "license": "Apache-2.0",
82
+ "bugs": {
83
+ "url": "https://github.com/aws/aws-amplify/issues"
84
+ },
85
+ "homepage": "https://docs.amplify.aws/",
86
+ "files": [
87
+ "dist/cjs",
88
+ "dist/esm",
89
+ "src",
90
+ "in-app-messaging",
91
+ "push-notifications"
92
+ ],
93
+ "dependencies": {
94
+ "lodash": "^4.17.21",
95
+ "tslib": "^2.5.0"
96
+ },
97
+ "peerDependencies": {
98
+ "@aws-amplify/core": "^6.0.0"
99
+ },
100
+ "devDependencies": {
101
+ "@aws-amplify/core": "6.0.28",
102
+ "@aws-amplify/react-native": "1.0.28",
103
+ "typescript": "5.0.2"
104
+ },
105
+ "gitHead": "672417ff6e9823f8b92c5d43585acf6ad9e43264"
106
106
  }
@@ -2,8 +2,14 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  import { ConsoleLogger } from '@aws-amplify/core';
5
- import { InAppMessagingAction } from '@aws-amplify/core/internals/utils';
6
- import type { InAppMessageCampaign as PinpointInAppMessage } from '@aws-amplify/core/internals/aws-clients/pinpoint';
5
+ import {
6
+ InAppMessagingAction,
7
+ getClientInfo,
8
+ } from '@aws-amplify/core/internals/utils';
9
+ import type {
10
+ InAppMessageButton,
11
+ InAppMessageCampaign as PinpointInAppMessage,
12
+ } from '@aws-amplify/core/internals/aws-clients/pinpoint';
7
13
  import isEmpty from 'lodash/isEmpty.js';
8
14
  import { record as recordCore } from '@aws-amplify/core/internals/providers/pinpoint';
9
15
 
@@ -16,6 +22,7 @@ import {
16
22
  InAppMessagingEvent,
17
23
  } from '../../../types';
18
24
  import { MetricsComparator, PinpointMessageEvent } from '../types';
25
+ import { ButtonConfigPlatform } from '../../../types/message';
19
26
 
20
27
  import { resolveConfig } from './resolveConfig';
21
28
  import { resolveCredentials } from './resolveCredentials';
@@ -251,6 +258,9 @@ export const interpretLayout = (
251
258
  export const extractContent = ({
252
259
  InAppMessage: message,
253
260
  }: PinpointInAppMessage): InAppMessageContent[] => {
261
+ const clientInfo = getClientInfo();
262
+ const configPlatform = mapOSPlatform(clientInfo?.platform);
263
+
254
264
  return (
255
265
  message?.Content?.map(content => {
256
266
  const {
@@ -261,8 +271,13 @@ export const extractContent = ({
261
271
  PrimaryBtn,
262
272
  SecondaryBtn,
263
273
  } = content;
264
- const defaultPrimaryButton = PrimaryBtn?.DefaultConfig;
265
- const defaultSecondaryButton = SecondaryBtn?.DefaultConfig;
274
+
275
+ const defaultPrimaryButton = getButtonConfig(configPlatform, PrimaryBtn);
276
+ const defaultSecondaryButton = getButtonConfig(
277
+ configPlatform,
278
+ SecondaryBtn,
279
+ );
280
+
266
281
  const extractedContent: InAppMessageContent = {};
267
282
  if (BackgroundColor) {
268
283
  extractedContent.container = {
@@ -341,3 +356,37 @@ export const extractMetadata = ({
341
356
  priority: Priority,
342
357
  treatmentId: TreatmentId,
343
358
  });
359
+
360
+ export const mapOSPlatform = (os?: string): ButtonConfigPlatform => {
361
+ if (!os) return 'DefaultConfig';
362
+ // Check if running in a web browser
363
+ if (typeof window !== 'undefined' && typeof window.document !== 'undefined') {
364
+ return 'Web';
365
+ }
366
+ // Native environment checks
367
+ switch (os) {
368
+ case 'android':
369
+ return 'Android';
370
+ case 'ios':
371
+ return 'IOS';
372
+ default:
373
+ return 'DefaultConfig';
374
+ }
375
+ };
376
+
377
+ const getButtonConfig = (
378
+ configPlatform: ButtonConfigPlatform,
379
+ button?: InAppMessageButton,
380
+ ): InAppMessageButton['DefaultConfig'] | undefined => {
381
+ if (!button?.DefaultConfig) {
382
+ return;
383
+ }
384
+ if (!configPlatform || !button?.[configPlatform]) {
385
+ return button?.DefaultConfig;
386
+ }
387
+
388
+ return {
389
+ ...button.DefaultConfig,
390
+ ...button[configPlatform],
391
+ };
392
+ };
@@ -13,6 +13,8 @@ export type InAppMessageAction = 'CLOSE' | 'DEEP_LINK' | 'LINK';
13
13
 
14
14
  export type InAppMessageTextAlign = 'center' | 'left' | 'right';
15
15
 
16
+ export type ButtonConfigPlatform = 'Android' | 'IOS' | 'Web' | 'DefaultConfig';
17
+
16
18
  interface InAppMessageContainer {
17
19
  style?: InAppMessageStyle;
18
20
  }