@aws-amplify/notifications 2.0.22 → 2.0.23
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.
- package/dist/cjs/eventListeners/eventListeners.js +4 -7
- package/dist/cjs/eventListeners/eventListeners.js.map +1 -1
- package/dist/cjs/inAppMessaging/providers/pinpoint/apis/clearMessages.js +1 -1
- package/dist/cjs/inAppMessaging/providers/pinpoint/apis/clearMessages.js.map +1 -1
- package/dist/cjs/inAppMessaging/providers/pinpoint/apis/dispatchEvent.js +7 -7
- package/dist/cjs/inAppMessaging/providers/pinpoint/apis/dispatchEvent.js.map +1 -1
- package/dist/cjs/inAppMessaging/providers/pinpoint/apis/identifyUser.js +3 -2
- package/dist/cjs/inAppMessaging/providers/pinpoint/apis/identifyUser.js.map +1 -1
- package/dist/cjs/inAppMessaging/providers/pinpoint/apis/initializeInAppMessaging.js +2 -2
- package/dist/cjs/inAppMessaging/providers/pinpoint/apis/initializeInAppMessaging.js.map +1 -1
- package/dist/cjs/inAppMessaging/providers/pinpoint/apis/onMessageDisplayed.js +1 -1
- package/dist/cjs/inAppMessaging/providers/pinpoint/apis/onMessageDisplayed.js.map +1 -1
- package/dist/cjs/inAppMessaging/providers/pinpoint/apis/setConflictHandler.js +3 -27
- package/dist/cjs/inAppMessaging/providers/pinpoint/apis/setConflictHandler.js.map +1 -1
- package/dist/cjs/inAppMessaging/providers/pinpoint/apis/syncMessages.js +1 -1
- package/dist/cjs/inAppMessaging/providers/pinpoint/apis/syncMessages.js.map +1 -1
- package/dist/cjs/inAppMessaging/providers/pinpoint/utils/conflictHandlerManager.js +50 -0
- package/dist/cjs/inAppMessaging/providers/pinpoint/utils/conflictHandlerManager.js.map +1 -0
- package/dist/cjs/inAppMessaging/providers/pinpoint/utils/helpers.js +8 -8
- package/dist/cjs/inAppMessaging/providers/pinpoint/utils/helpers.js.map +1 -1
- package/dist/cjs/inAppMessaging/providers/pinpoint/utils/index.js +4 -1
- package/dist/cjs/inAppMessaging/providers/pinpoint/utils/index.js.map +1 -1
- package/dist/cjs/inAppMessaging/providers/pinpoint/utils/messageProcessingHelpers.js +5 -6
- package/dist/cjs/inAppMessaging/providers/pinpoint/utils/messageProcessingHelpers.js.map +1 -1
- package/dist/cjs/pushNotifications/providers/pinpoint/apis/initializePushNotifications.native.js +14 -5
- package/dist/cjs/pushNotifications/providers/pinpoint/apis/initializePushNotifications.native.js.map +1 -1
- package/dist/cjs/pushNotifications/providers/pinpoint/utils/getAnalyticsEvent.js +1 -1
- package/dist/cjs/pushNotifications/providers/pinpoint/utils/getAnalyticsEvent.js.map +1 -1
- package/dist/esm/eventListeners/eventListeners.d.ts +2 -2
- package/dist/esm/eventListeners/eventListeners.mjs +4 -7
- package/dist/esm/eventListeners/eventListeners.mjs.map +1 -1
- package/dist/esm/eventListeners/types.d.ts +6 -5
- package/dist/esm/inAppMessaging/providers/pinpoint/apis/clearMessages.mjs +1 -1
- package/dist/esm/inAppMessaging/providers/pinpoint/apis/clearMessages.mjs.map +1 -1
- package/dist/esm/inAppMessaging/providers/pinpoint/apis/dispatchEvent.mjs +5 -4
- package/dist/esm/inAppMessaging/providers/pinpoint/apis/dispatchEvent.mjs.map +1 -1
- package/dist/esm/inAppMessaging/providers/pinpoint/apis/identifyUser.d.ts +2 -2
- package/dist/esm/inAppMessaging/providers/pinpoint/apis/identifyUser.mjs +3 -2
- package/dist/esm/inAppMessaging/providers/pinpoint/apis/identifyUser.mjs.map +1 -1
- package/dist/esm/inAppMessaging/providers/pinpoint/apis/initializeInAppMessaging.mjs +2 -2
- package/dist/esm/inAppMessaging/providers/pinpoint/apis/initializeInAppMessaging.mjs.map +1 -1
- package/dist/esm/inAppMessaging/providers/pinpoint/apis/onMessageDisplayed.d.ts +1 -1
- package/dist/esm/inAppMessaging/providers/pinpoint/apis/onMessageDisplayed.mjs +1 -1
- package/dist/esm/inAppMessaging/providers/pinpoint/apis/onMessageDisplayed.mjs.map +1 -1
- package/dist/esm/inAppMessaging/providers/pinpoint/apis/setConflictHandler.d.ts +1 -2
- package/dist/esm/inAppMessaging/providers/pinpoint/apis/setConflictHandler.mjs +7 -27
- package/dist/esm/inAppMessaging/providers/pinpoint/apis/setConflictHandler.mjs.map +1 -1
- package/dist/esm/inAppMessaging/providers/pinpoint/apis/syncMessages.mjs +1 -1
- package/dist/esm/inAppMessaging/providers/pinpoint/apis/syncMessages.mjs.map +1 -1
- package/dist/esm/inAppMessaging/providers/pinpoint/types/inputs.d.ts +3 -3
- package/dist/esm/inAppMessaging/providers/pinpoint/types/types.d.ts +4 -4
- package/dist/esm/inAppMessaging/providers/pinpoint/utils/conflictHandlerManager.d.ts +13 -0
- package/dist/esm/inAppMessaging/providers/pinpoint/utils/conflictHandlerManager.mjs +46 -0
- package/dist/esm/inAppMessaging/providers/pinpoint/utils/conflictHandlerManager.mjs.map +1 -0
- package/dist/esm/inAppMessaging/providers/pinpoint/utils/helpers.d.ts +1 -1
- package/dist/esm/inAppMessaging/providers/pinpoint/utils/helpers.mjs +8 -8
- package/dist/esm/inAppMessaging/providers/pinpoint/utils/helpers.mjs.map +1 -1
- package/dist/esm/inAppMessaging/providers/pinpoint/utils/index.d.ts +1 -0
- package/dist/esm/inAppMessaging/providers/pinpoint/utils/index.mjs +1 -0
- package/dist/esm/inAppMessaging/providers/pinpoint/utils/index.mjs.map +1 -1
- package/dist/esm/inAppMessaging/providers/pinpoint/utils/messageProcessingHelpers.d.ts +1 -1
- package/dist/esm/inAppMessaging/providers/pinpoint/utils/messageProcessingHelpers.mjs +5 -6
- package/dist/esm/inAppMessaging/providers/pinpoint/utils/messageProcessingHelpers.mjs.map +1 -1
- package/dist/esm/inAppMessaging/providers/pinpoint/utils/userAgent.mjs.map +1 -1
- package/dist/esm/inAppMessaging/types/event.d.ts +2 -2
- package/dist/esm/inAppMessaging/types/inputs.d.ts +2 -2
- package/dist/esm/pushNotifications/providers/pinpoint/apis/initializePushNotifications.native.mjs +14 -5
- package/dist/esm/pushNotifications/providers/pinpoint/apis/initializePushNotifications.native.mjs.map +1 -1
- package/dist/esm/pushNotifications/providers/pinpoint/types/analytics.d.ts +2 -2
- package/dist/esm/pushNotifications/providers/pinpoint/types/inputs.d.ts +1 -1
- package/dist/esm/pushNotifications/providers/pinpoint/utils/createMessageEventRecorder.d.ts +1 -1
- package/dist/esm/pushNotifications/providers/pinpoint/utils/getAnalyticsEvent.mjs +1 -1
- package/dist/esm/pushNotifications/providers/pinpoint/utils/getAnalyticsEvent.mjs.map +1 -1
- package/dist/esm/pushNotifications/providers/pinpoint/utils/resolveConfig.mjs.map +1 -1
- package/dist/esm/pushNotifications/types/inputs.d.ts +2 -2
- package/dist/esm/pushNotifications/utils/resolveCredentials.mjs.map +1 -1
- package/package.json +6 -5
- package/src/eventListeners/eventListeners.ts +16 -9
- package/src/eventListeners/types.ts +7 -5
- package/src/inAppMessaging/errors/assertServiceError.ts +1 -0
- package/src/inAppMessaging/providers/pinpoint/apis/clearMessages.ts +3 -2
- package/src/inAppMessaging/providers/pinpoint/apis/dispatchEvent.ts +18 -11
- package/src/inAppMessaging/providers/pinpoint/apis/identifyUser.ts +5 -7
- package/src/inAppMessaging/providers/pinpoint/apis/initializeInAppMessaging.ts +5 -3
- package/src/inAppMessaging/providers/pinpoint/apis/notifyMessageInteraction.ts +1 -0
- package/src/inAppMessaging/providers/pinpoint/apis/onMessageActionTaken.ts +2 -0
- package/src/inAppMessaging/providers/pinpoint/apis/onMessageDismissed.ts +2 -0
- package/src/inAppMessaging/providers/pinpoint/apis/onMessageDisplayed.ts +3 -1
- package/src/inAppMessaging/providers/pinpoint/apis/onMessageReceived.ts +2 -0
- package/src/inAppMessaging/providers/pinpoint/apis/setConflictHandler.ts +7 -34
- package/src/inAppMessaging/providers/pinpoint/apis/syncMessages.ts +12 -10
- package/src/inAppMessaging/providers/pinpoint/types/inputs.ts +8 -7
- package/src/inAppMessaging/providers/pinpoint/types/types.ts +4 -4
- package/src/inAppMessaging/providers/pinpoint/utils/conflictHandlerManager.ts +54 -0
- package/src/inAppMessaging/providers/pinpoint/utils/helpers.ts +19 -9
- package/src/inAppMessaging/providers/pinpoint/utils/index.ts +4 -0
- package/src/inAppMessaging/providers/pinpoint/utils/messageProcessingHelpers.ts +19 -11
- package/src/inAppMessaging/providers/pinpoint/utils/resolveConfig.ts +2 -0
- package/src/inAppMessaging/providers/pinpoint/utils/resolveCredentials.ts +2 -0
- package/src/inAppMessaging/providers/pinpoint/utils/userAgent.ts +2 -2
- package/src/inAppMessaging/types/event.ts +2 -2
- package/src/inAppMessaging/types/inputs.ts +4 -3
- package/src/pushNotifications/errors/errorHelpers.ts +2 -0
- package/src/pushNotifications/providers/pinpoint/apis/getBadgeCount.native.ts +2 -0
- package/src/pushNotifications/providers/pinpoint/apis/getBadgeCount.ts +1 -0
- package/src/pushNotifications/providers/pinpoint/apis/getLaunchNotification.native.ts +2 -0
- package/src/pushNotifications/providers/pinpoint/apis/getLaunchNotification.ts +1 -0
- package/src/pushNotifications/providers/pinpoint/apis/getPermissionStatus.native.ts +2 -0
- package/src/pushNotifications/providers/pinpoint/apis/getPermissionStatus.ts +1 -0
- package/src/pushNotifications/providers/pinpoint/apis/identifyUser.native.ts +1 -0
- package/src/pushNotifications/providers/pinpoint/apis/identifyUser.ts +1 -0
- package/src/pushNotifications/providers/pinpoint/apis/initializePushNotifications.native.ts +21 -12
- package/src/pushNotifications/providers/pinpoint/apis/initializePushNotifications.ts +1 -0
- package/src/pushNotifications/providers/pinpoint/apis/onNotificationOpened.native.ts +1 -0
- package/src/pushNotifications/providers/pinpoint/apis/onNotificationOpened.ts +1 -0
- package/src/pushNotifications/providers/pinpoint/apis/onNotificationReceivedInBackground.native.ts +1 -0
- package/src/pushNotifications/providers/pinpoint/apis/onNotificationReceivedInBackground.ts +1 -0
- package/src/pushNotifications/providers/pinpoint/apis/onNotificationReceivedInForeground.native.ts +1 -0
- package/src/pushNotifications/providers/pinpoint/apis/onNotificationReceivedInForeground.ts +1 -0
- package/src/pushNotifications/providers/pinpoint/apis/onTokenReceived.native.ts +1 -0
- package/src/pushNotifications/providers/pinpoint/apis/onTokenReceived.ts +1 -0
- package/src/pushNotifications/providers/pinpoint/apis/requestPermissions.native.ts +2 -0
- package/src/pushNotifications/providers/pinpoint/apis/requestPermissions.ts +1 -0
- package/src/pushNotifications/providers/pinpoint/apis/setBadgeCount.native.ts +1 -0
- package/src/pushNotifications/providers/pinpoint/apis/setBadgeCount.ts +1 -0
- package/src/pushNotifications/providers/pinpoint/types/analytics.ts +2 -2
- package/src/pushNotifications/providers/pinpoint/types/inputs.ts +4 -3
- package/src/pushNotifications/providers/pinpoint/utils/createMessageEventRecorder.ts +5 -1
- package/src/pushNotifications/providers/pinpoint/utils/getAnalyticsEvent.ts +3 -1
- package/src/pushNotifications/providers/pinpoint/utils/getChannelType.ts +1 -0
- package/src/pushNotifications/providers/pinpoint/utils/resolveConfig.ts +3 -1
- package/src/pushNotifications/types/inputs.ts +4 -3
- package/src/pushNotifications/utils/getPushNotificationUserAgentString.ts +1 -1
- package/src/pushNotifications/utils/resolveCredentials.ts +3 -1
|
@@ -2,7 +2,7 @@ import { UserProfile } from '@aws-amplify/core';
|
|
|
2
2
|
import { PushNotificationServiceOptions } from './options';
|
|
3
3
|
import { PushNotificationPermissions } from './module';
|
|
4
4
|
import { OnPushNotificationMessageHandler, OnTokenReceivedHandler } from './pushNotifications';
|
|
5
|
-
export
|
|
5
|
+
export interface PushNotificationIdentifyUserInput<ServiceOptions extends PushNotificationServiceOptions = PushNotificationServiceOptions> {
|
|
6
6
|
/**
|
|
7
7
|
* A User ID associated to the current device.
|
|
8
8
|
*/
|
|
@@ -15,7 +15,7 @@ export type PushNotificationIdentifyUserInput<ServiceOptions extends PushNotific
|
|
|
15
15
|
* Options to be passed to the API.
|
|
16
16
|
*/
|
|
17
17
|
options?: ServiceOptions;
|
|
18
|
-
}
|
|
18
|
+
}
|
|
19
19
|
export type PushNotificationRequestPermissionsInput = PushNotificationPermissions;
|
|
20
20
|
export type PushNotificationSetBadgeCountInput = number;
|
|
21
21
|
export type PushNotificationOnNotificationOpenedInput = OnPushNotificationMessageHandler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveCredentials.mjs","sources":["../../../../src/pushNotifications/utils/resolveCredentials.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { fetchAuthSession } from '@aws-amplify/core';\nimport {
|
|
1
|
+
{"version":3,"file":"resolveCredentials.mjs","sources":["../../../../src/pushNotifications/utils/resolveCredentials.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { fetchAuthSession } from '@aws-amplify/core';\nimport { PushNotificationValidationErrorCode, assert, } from '../errors/errorHelpers';\n/**\n * @internal\n */\nexport const resolveCredentials = async () => {\n const { credentials, identityId } = await fetchAuthSession();\n assert(!!credentials, PushNotificationValidationErrorCode.NoCredentials);\n return { credentials, identityId };\n};\n"],"names":[],"mappings":";;;AAAA;AACA;AAGA;AACA;AACA;AACY,MAAC,kBAAkB,GAAG,YAAY;AAC9C,IAAI,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,gBAAgB,EAAE,CAAC;AACjE,IAAI,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,mCAAmC,CAAC,aAAa,CAAC,CAAC;AAC7E,IAAI,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AACvC;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-amplify/notifications",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.23",
|
|
4
4
|
"description": "Notifications category of aws-amplify",
|
|
5
5
|
"main": "./dist/cjs/index.js",
|
|
6
6
|
"module": "./dist/esm/index.mjs",
|
|
@@ -21,7 +21,8 @@
|
|
|
21
21
|
"clean": "npm run clean:size && rimraf dist lib lib-esm",
|
|
22
22
|
"clean:size": "rimraf dual-publish-tmp tmp*",
|
|
23
23
|
"format": "echo \"Not implemented\"",
|
|
24
|
-
"lint": "
|
|
24
|
+
"lint": "eslint '**/*.{ts,tsx}' && npm run ts-coverage",
|
|
25
|
+
"lint:fix": "eslint '**/*.{ts,tsx}' --fix",
|
|
25
26
|
"ts-coverage": "typescript-coverage-report -p ./tsconfig.build.json -t 88.21"
|
|
26
27
|
},
|
|
27
28
|
"typesVersions": {
|
|
@@ -97,9 +98,9 @@
|
|
|
97
98
|
"@aws-amplify/core": "^6.0.0"
|
|
98
99
|
},
|
|
99
100
|
"devDependencies": {
|
|
100
|
-
"@aws-amplify/core": "6.0.
|
|
101
|
-
"@aws-amplify/react-native": "1.0.
|
|
101
|
+
"@aws-amplify/core": "6.0.23",
|
|
102
|
+
"@aws-amplify/react-native": "1.0.24",
|
|
102
103
|
"typescript": "5.0.2"
|
|
103
104
|
},
|
|
104
|
-
"gitHead": "
|
|
105
|
+
"gitHead": "6c46368559f4c3229024d10c18aabb34c58efe68"
|
|
105
106
|
}
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
EventListener,
|
|
6
|
+
EventListenerHandler,
|
|
7
|
+
EventListenerRemover,
|
|
8
|
+
EventType,
|
|
9
|
+
} from './types';
|
|
5
10
|
|
|
6
|
-
const eventListeners: Record<
|
|
11
|
+
const eventListeners: Record<
|
|
12
|
+
string,
|
|
13
|
+
Set<EventListener<EventListenerHandler>>
|
|
14
|
+
> = {};
|
|
7
15
|
|
|
8
16
|
export const notifyEventListeners = (type: EventType, ...args: any[]): void => {
|
|
9
17
|
eventListeners[type]?.forEach(listener => {
|
|
@@ -17,15 +25,11 @@ export const notifyEventListenersAndAwaitHandlers = (
|
|
|
17
25
|
): Promise<void[]> =>
|
|
18
26
|
Promise.all<void>(
|
|
19
27
|
Array.from(eventListeners[type] ?? []).map(async listener => {
|
|
20
|
-
|
|
21
|
-
await listener.handleEvent(...args);
|
|
22
|
-
} catch (err) {
|
|
23
|
-
throw err;
|
|
24
|
-
}
|
|
28
|
+
await listener.handleEvent(...args);
|
|
25
29
|
}),
|
|
26
30
|
);
|
|
27
31
|
|
|
28
|
-
export const addEventListener = <EventHandler extends
|
|
32
|
+
export const addEventListener = <EventHandler extends EventListenerHandler>(
|
|
29
33
|
type: EventType,
|
|
30
34
|
handler: EventHandler,
|
|
31
35
|
): EventListenerRemover => {
|
|
@@ -40,7 +44,10 @@ export const addEventListener = <EventHandler extends Function>(
|
|
|
40
44
|
},
|
|
41
45
|
};
|
|
42
46
|
eventListeners[type].add(listener);
|
|
47
|
+
|
|
43
48
|
return {
|
|
44
|
-
remove: () =>
|
|
49
|
+
remove: () => {
|
|
50
|
+
listener.remove();
|
|
51
|
+
},
|
|
45
52
|
};
|
|
46
53
|
};
|
|
@@ -4,13 +4,15 @@
|
|
|
4
4
|
import { InAppMessageInteractionEvent } from '../inAppMessaging/types';
|
|
5
5
|
import { PushNotificationEvent } from '../pushNotifications/types';
|
|
6
6
|
|
|
7
|
-
export
|
|
7
|
+
export type EventListenerHandler = (...args: any[]) => unknown;
|
|
8
|
+
|
|
9
|
+
export interface EventListener<EventHandler extends EventListenerHandler> {
|
|
8
10
|
handleEvent: EventHandler;
|
|
9
|
-
remove
|
|
11
|
+
remove(): void;
|
|
10
12
|
}
|
|
11
13
|
|
|
12
14
|
export type EventType = InAppMessageInteractionEvent | PushNotificationEvent;
|
|
13
15
|
|
|
14
|
-
export
|
|
15
|
-
remove
|
|
16
|
-
}
|
|
16
|
+
export interface EventListenerRemover {
|
|
17
|
+
remove(): void;
|
|
18
|
+
}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
4
|
import { defaultStorage } from '@aws-amplify/core';
|
|
5
|
-
import { STORAGE_KEY_SUFFIX, PINPOINT_KEY_PREFIX } from '../utils';
|
|
6
5
|
|
|
6
|
+
import { PINPOINT_KEY_PREFIX, STORAGE_KEY_SUFFIX } from '../utils';
|
|
7
7
|
import { InAppMessagingValidationErrorCode } from '../../../errors';
|
|
8
8
|
import { assertIsInitialized } from '../../../utils';
|
|
9
9
|
|
|
@@ -22,5 +22,6 @@ import { assertIsInitialized } from '../../../utils';
|
|
|
22
22
|
export async function clearMessages(): Promise<void> {
|
|
23
23
|
assertIsInitialized();
|
|
24
24
|
const key = `${PINPOINT_KEY_PREFIX}${STORAGE_KEY_SUFFIX}`;
|
|
25
|
-
|
|
25
|
+
|
|
26
|
+
await defaultStorage.removeItem(key);
|
|
26
27
|
}
|
|
@@ -1,20 +1,26 @@
|
|
|
1
1
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
+
import flatten from 'lodash/flatten.js';
|
|
5
|
+
import { defaultStorage } from '@aws-amplify/core';
|
|
6
|
+
|
|
7
|
+
import { notifyEventListeners } from '../../../../eventListeners';
|
|
8
|
+
import {
|
|
9
|
+
InAppMessagingValidationErrorCode,
|
|
10
|
+
assertServiceError,
|
|
11
|
+
} from '../../../errors';
|
|
12
|
+
import { InAppMessage } from '../../../types';
|
|
13
|
+
import { assertIsInitialized } from '../../../utils';
|
|
14
|
+
import { DispatchEventInput } from '../types';
|
|
4
15
|
import {
|
|
5
16
|
PINPOINT_KEY_PREFIX,
|
|
6
17
|
STORAGE_KEY_SUFFIX,
|
|
18
|
+
getConflictHandler,
|
|
7
19
|
processInAppMessages,
|
|
8
20
|
} from '../utils';
|
|
9
|
-
|
|
10
|
-
import flatten from 'lodash/flatten.js';
|
|
11
|
-
import { defaultStorage } from '@aws-amplify/core';
|
|
12
|
-
import { notifyEventListeners } from '../../../../eventListeners';
|
|
13
|
-
import { assertServiceError } from '../../../errors';
|
|
14
|
-
import { DispatchEventInput } from '../types';
|
|
21
|
+
|
|
15
22
|
import { syncMessages } from './syncMessages';
|
|
16
|
-
import {
|
|
17
|
-
import { assertIsInitialized } from '../../../utils';
|
|
23
|
+
import { setConflictHandler } from './setConflictHandler';
|
|
18
24
|
|
|
19
25
|
/**
|
|
20
26
|
* Triggers an In-App message to be displayed. Use this after your campaigns have been synced to the device using
|
|
@@ -27,13 +33,13 @@ import { assertIsInitialized } from '../../../utils';
|
|
|
27
33
|
* your own logic for resolving message conflicts.
|
|
28
34
|
*
|
|
29
35
|
* @param input The input object that holds the event to be dispatched.
|
|
30
|
-
*
|
|
36
|
+
*
|
|
31
37
|
* @throws validation: {@link InAppMessagingValidationErrorCode} - Thrown when the provided parameters or library
|
|
32
38
|
* configuration is incorrect, or if In App messaging hasn't been initialized.
|
|
33
39
|
* @throws service exceptions - Thrown when the underlying Pinpoint service returns an error.
|
|
34
|
-
*
|
|
40
|
+
*
|
|
35
41
|
* @returns A promise that will resolve when the operation is complete.
|
|
36
|
-
*
|
|
42
|
+
*
|
|
37
43
|
* @example
|
|
38
44
|
* ```ts
|
|
39
45
|
* // Sync message before disptaching an event
|
|
@@ -54,6 +60,7 @@ export async function dispatchEvent(input: DispatchEventInput): Promise<void> {
|
|
|
54
60
|
);
|
|
55
61
|
const flattenedMessages = flatten(messages);
|
|
56
62
|
if (flattenedMessages.length > 0) {
|
|
63
|
+
const conflictHandler = getConflictHandler();
|
|
57
64
|
notifyEventListeners(
|
|
58
65
|
'messageReceived',
|
|
59
66
|
conflictHandler(flattenedMessages),
|
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
|
|
4
4
|
import { InAppMessagingAction } from '@aws-amplify/core/internals/utils';
|
|
5
5
|
import {
|
|
6
|
-
updateEndpoint,
|
|
7
6
|
UpdateEndpointException,
|
|
7
|
+
updateEndpoint,
|
|
8
8
|
} from '@aws-amplify/core/internals/providers/pinpoint';
|
|
9
|
+
|
|
9
10
|
import { InAppMessagingValidationErrorCode } from '../../../errors';
|
|
10
11
|
import {
|
|
11
12
|
CATEGORY,
|
|
@@ -22,7 +23,7 @@ import { assertIsInitialized } from '../../../utils';
|
|
|
22
23
|
* profile and activities or actions in your application. Activity can be tracked across devices & platforms by using
|
|
23
24
|
* the same `userId`.
|
|
24
25
|
*
|
|
25
|
-
* @param
|
|
26
|
+
* @param input The input object that conforms to {@link IdentifyUserInput} used to construct requests sent to Pinpoint's UpdateEndpoint
|
|
26
27
|
* API.
|
|
27
28
|
* @throws service: {@link UpdateEndpointException} - Thrown when the underlying Pinpoint service returns an error.
|
|
28
29
|
* @throws validation: {@link InAppMessagingValidationErrorCode} - Thrown when the provided parameters or library
|
|
@@ -66,11 +67,8 @@ import { assertIsInitialized } from '../../../utils';
|
|
|
66
67
|
* },
|
|
67
68
|
* });
|
|
68
69
|
*/
|
|
69
|
-
export const identifyUser = async ({
|
|
70
|
-
userId,
|
|
71
|
-
userProfile,
|
|
72
|
-
options,
|
|
73
|
-
}: IdentifyUserInput): Promise<void> => {
|
|
70
|
+
export const identifyUser = async (input: IdentifyUserInput): Promise<void> => {
|
|
71
|
+
const { userId, userProfile, options } = input;
|
|
74
72
|
assertIsInitialized();
|
|
75
73
|
const { credentials, identityId } = await resolveCredentials();
|
|
76
74
|
const { appId, region } = resolveConfig();
|
|
@@ -2,14 +2,16 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
4
|
import { sessionListener } from '@aws-amplify/core/internals/utils';
|
|
5
|
+
import { Hub, HubCapsule } from '@aws-amplify/core';
|
|
6
|
+
|
|
5
7
|
import { InAppMessage, InAppMessagingEvent } from '../../../types';
|
|
6
8
|
import { addEventListener } from '../../../../eventListeners';
|
|
7
9
|
import { recordAnalyticsEvent } from '../utils/helpers';
|
|
8
10
|
import { PinpointMessageEvent } from '../types';
|
|
9
|
-
import { Hub, HubCapsule } from '@aws-amplify/core';
|
|
10
|
-
import { dispatchEvent } from './dispatchEvent';
|
|
11
11
|
import { incrementMessageCounts, sessionStateChangeHandler } from '../utils';
|
|
12
|
-
import {
|
|
12
|
+
import { initialize, isInitialized } from '../../../utils';
|
|
13
|
+
|
|
14
|
+
import { dispatchEvent } from './dispatchEvent';
|
|
13
15
|
|
|
14
16
|
/**
|
|
15
17
|
* Initialize and set up in-app messaging category. This API needs to be called to enable other InAppMessaging APIs.
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
4
|
import { notifyEventListeners } from '../../../../eventListeners';
|
|
5
|
+
import { InAppMessagingValidationErrorCode } from '../../../errors';
|
|
5
6
|
import { assertIsInitialized } from '../../../utils';
|
|
6
7
|
import { NotifyMessageInteractionInput } from '../types/inputs';
|
|
7
8
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
4
|
import { addEventListener } from '../../../../eventListeners';
|
|
5
|
+
import { InAppMessagingValidationErrorCode } from '../../../errors';
|
|
5
6
|
import { assertIsInitialized } from '../../../utils';
|
|
6
7
|
import { OnMessageActionTakenInput } from '../types/inputs';
|
|
7
8
|
import { OnMessageActionTakenOutput } from '../types/outputs';
|
|
@@ -25,5 +26,6 @@ export function onMessageActionTaken(
|
|
|
25
26
|
input: OnMessageActionTakenInput,
|
|
26
27
|
): OnMessageActionTakenOutput {
|
|
27
28
|
assertIsInitialized();
|
|
29
|
+
|
|
28
30
|
return addEventListener('messageActionTaken', input);
|
|
29
31
|
}
|
|
@@ -5,6 +5,7 @@ import { addEventListener } from '../../../../eventListeners';
|
|
|
5
5
|
import { OnMessageDismissedOutput } from '../types/outputs';
|
|
6
6
|
import { OnMessageDismissedInput } from '../types/inputs';
|
|
7
7
|
import { assertIsInitialized } from '../../../utils';
|
|
8
|
+
import { InAppMessagingValidationErrorCode } from '../../../errors';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Registers a callback that will be invoked on `messageDismissed` events.
|
|
@@ -25,5 +26,6 @@ export function onMessageDismissed(
|
|
|
25
26
|
input: OnMessageDismissedInput,
|
|
26
27
|
): OnMessageDismissedOutput {
|
|
27
28
|
assertIsInitialized();
|
|
29
|
+
|
|
28
30
|
return addEventListener('messageDismissed', input);
|
|
29
31
|
}
|
|
@@ -5,6 +5,7 @@ import { addEventListener } from '../../../../eventListeners';
|
|
|
5
5
|
import { OnMessageDisplayedOutput } from '../types/outputs';
|
|
6
6
|
import { OnMessageDisplayedInput } from '../types/inputs';
|
|
7
7
|
import { assertIsInitialized } from '../../../utils';
|
|
8
|
+
import { InAppMessagingValidationErrorCode } from '../../../errors';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Registers a callback that will be invoked on `messageDisplayed` events.
|
|
@@ -12,7 +13,7 @@ import { assertIsInitialized } from '../../../utils';
|
|
|
12
13
|
* @param {OnMessageDisplayedInput} input - The input object that holds the callback handler.
|
|
13
14
|
* @throws validation: {@link InAppMessagingValidationErrorCode} - Thrown when the provided parameters or library
|
|
14
15
|
* configuration is incorrect, or if In App messaging hasn't been initialized.
|
|
15
|
-
* @returns {
|
|
16
|
+
* @returns {OnMessageDisplayedOutput} - An object that holds a remove method to stop listening to events.
|
|
16
17
|
* @example
|
|
17
18
|
* ```ts
|
|
18
19
|
* onMessageDisplayed((message) => {
|
|
@@ -25,5 +26,6 @@ export function onMessageDisplayed(
|
|
|
25
26
|
input: OnMessageDisplayedInput,
|
|
26
27
|
): OnMessageDisplayedOutput {
|
|
27
28
|
assertIsInitialized();
|
|
29
|
+
|
|
28
30
|
return addEventListener('messageDisplayed', input);
|
|
29
31
|
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
4
|
import { addEventListener } from '../../../../eventListeners';
|
|
5
|
+
import { InAppMessagingValidationErrorCode } from '../../../errors';
|
|
5
6
|
import { assertIsInitialized } from '../../../utils';
|
|
6
7
|
import { OnMessageReceivedInput } from '../types/inputs';
|
|
7
8
|
import { OnMessageReceivedOutput } from '../types/outputs';
|
|
@@ -25,5 +26,6 @@ export function onMessageReceived(
|
|
|
25
26
|
input: OnMessageReceivedInput,
|
|
26
27
|
): OnMessageReceivedOutput {
|
|
27
28
|
assertIsInitialized();
|
|
29
|
+
|
|
28
30
|
return addEventListener('messageReceived', input);
|
|
29
31
|
}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import { InAppMessagingValidationErrorCode } from '../../../errors';
|
|
5
5
|
import { assertIsInitialized } from '../../../utils';
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
export let conflictHandler: InAppMessageConflictHandler =
|
|
9
|
-
defaultConflictHandler;
|
|
6
|
+
import { SetConflictHandlerInput } from '../types';
|
|
7
|
+
import { setConflictHandler as setConflictHandlerInteral } from '../utils';
|
|
10
8
|
|
|
11
9
|
/**
|
|
12
10
|
* Set a conflict handler that will be used to resolve conflicts that may emerge
|
|
@@ -15,12 +13,12 @@ export let conflictHandler: InAppMessageConflictHandler =
|
|
|
15
13
|
* @remark
|
|
16
14
|
* The conflict handler is not persisted across app restarts and so must be set again before dispatching an event for
|
|
17
15
|
* any custom handling to take effect.
|
|
18
|
-
*
|
|
16
|
+
*
|
|
19
17
|
* @throws validation: {@link InAppMessagingValidationErrorCode} - Thrown when the provided parameters or library
|
|
20
18
|
* configuration is incorrect, or if In App messaging hasn't been initialized.
|
|
21
|
-
*
|
|
19
|
+
*
|
|
22
20
|
* @param input The input object that holds the conflict handler to be used.
|
|
23
|
-
*
|
|
21
|
+
*
|
|
24
22
|
* @example
|
|
25
23
|
* ```ts
|
|
26
24
|
* // Sync messages before dispatching an event
|
|
@@ -42,30 +40,5 @@ export let conflictHandler: InAppMessageConflictHandler =
|
|
|
42
40
|
*/
|
|
43
41
|
export function setConflictHandler(input: SetConflictHandlerInput): void {
|
|
44
42
|
assertIsInitialized();
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
function defaultConflictHandler(messages: InAppMessage[]): InAppMessage {
|
|
49
|
-
// default behavior is to return the message closest to expiry
|
|
50
|
-
// this function assumes that messages processed by providers already filters out expired messages
|
|
51
|
-
const sorted = messages.sort((a, b) => {
|
|
52
|
-
const endDateA = a.metadata?.endDate;
|
|
53
|
-
const endDateB = b.metadata?.endDate;
|
|
54
|
-
// if both message end dates are falsy or have the same date string, treat them as equal
|
|
55
|
-
if (endDateA === endDateB) {
|
|
56
|
-
return 0;
|
|
57
|
-
}
|
|
58
|
-
// if only message A has an end date, treat it as closer to expiry
|
|
59
|
-
if (endDateA && !endDateB) {
|
|
60
|
-
return -1;
|
|
61
|
-
}
|
|
62
|
-
// if only message B has an end date, treat it as closer to expiry
|
|
63
|
-
if (!endDateA && endDateB) {
|
|
64
|
-
return 1;
|
|
65
|
-
}
|
|
66
|
-
// otherwise, compare them
|
|
67
|
-
return new Date(endDateA) < new Date(endDateB) ? -1 : 1;
|
|
68
|
-
});
|
|
69
|
-
// always return the top sorted
|
|
70
|
-
return sorted[0];
|
|
43
|
+
setConflictHandlerInteral(input);
|
|
71
44
|
}
|
|
@@ -5,19 +5,20 @@ import { InAppMessagingAction } from '@aws-amplify/core/internals/utils';
|
|
|
5
5
|
import { resolveEndpointId } from '@aws-amplify/core/internals/providers/pinpoint';
|
|
6
6
|
import { defaultStorage } from '@aws-amplify/core';
|
|
7
7
|
import {
|
|
8
|
-
resolveConfig,
|
|
9
|
-
resolveCredentials,
|
|
10
|
-
getInAppMessagingUserAgentString,
|
|
11
|
-
STORAGE_KEY_SUFFIX,
|
|
12
|
-
PINPOINT_KEY_PREFIX,
|
|
13
|
-
CATEGORY,
|
|
14
|
-
CHANNEL_TYPE,
|
|
15
|
-
} from '../utils';
|
|
16
|
-
import {
|
|
17
|
-
getInAppMessages,
|
|
18
8
|
GetInAppMessagesInput,
|
|
19
9
|
GetInAppMessagesOutput,
|
|
10
|
+
getInAppMessages,
|
|
20
11
|
} from '@aws-amplify/core/internals/aws-clients/pinpoint';
|
|
12
|
+
|
|
13
|
+
import {
|
|
14
|
+
CATEGORY,
|
|
15
|
+
CHANNEL_TYPE,
|
|
16
|
+
PINPOINT_KEY_PREFIX,
|
|
17
|
+
STORAGE_KEY_SUFFIX,
|
|
18
|
+
getInAppMessagingUserAgentString,
|
|
19
|
+
resolveConfig,
|
|
20
|
+
resolveCredentials,
|
|
21
|
+
} from '../utils';
|
|
21
22
|
import {
|
|
22
23
|
InAppMessagingValidationErrorCode,
|
|
23
24
|
assertServiceError,
|
|
@@ -80,6 +81,7 @@ async function fetchInAppMessages() {
|
|
|
80
81
|
);
|
|
81
82
|
const { InAppMessageCampaigns: messages } =
|
|
82
83
|
response.InAppMessagesResponse ?? {};
|
|
84
|
+
|
|
83
85
|
return messages;
|
|
84
86
|
} catch (error) {
|
|
85
87
|
assertServiceError(error);
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
-
import { IdentifyUserOptions } from './options';
|
|
5
|
-
import {
|
|
6
|
-
InAppMessageConflictHandler,
|
|
7
|
-
OnMessageInteractionEventHandler,
|
|
8
|
-
} from './types';
|
|
9
4
|
import {
|
|
10
5
|
InAppMessage,
|
|
11
6
|
InAppMessageInteractionEvent,
|
|
@@ -13,6 +8,12 @@ import {
|
|
|
13
8
|
InAppMessagingIdentifyUserInput,
|
|
14
9
|
} from '../../../types';
|
|
15
10
|
|
|
11
|
+
import { IdentifyUserOptions } from './options';
|
|
12
|
+
import {
|
|
13
|
+
InAppMessageConflictHandler,
|
|
14
|
+
OnMessageInteractionEventHandler,
|
|
15
|
+
} from './types';
|
|
16
|
+
|
|
16
17
|
/**
|
|
17
18
|
* Input type for Pinpoint identifyUser API.
|
|
18
19
|
*/
|
|
@@ -52,7 +53,7 @@ export type OnMessageActionTakenInput = OnMessageInteractionEventHandler;
|
|
|
52
53
|
/**
|
|
53
54
|
* Input type for NotifyMessageInteraction API.
|
|
54
55
|
*/
|
|
55
|
-
export
|
|
56
|
+
export interface NotifyMessageInteractionInput {
|
|
56
57
|
message: InAppMessage;
|
|
57
58
|
type: InAppMessageInteractionEvent;
|
|
58
|
-
}
|
|
59
|
+
}
|
|
@@ -5,16 +5,16 @@ import { InAppMessage } from '../../../types';
|
|
|
5
5
|
|
|
6
6
|
export type InAppMessageCountMap = Record<string, number>;
|
|
7
7
|
|
|
8
|
-
export
|
|
8
|
+
export interface DailyInAppMessageCounter {
|
|
9
9
|
count: number;
|
|
10
10
|
lastCountTimestamp: string;
|
|
11
|
-
}
|
|
11
|
+
}
|
|
12
12
|
|
|
13
|
-
export
|
|
13
|
+
export interface InAppMessageCounts {
|
|
14
14
|
sessionCount: number;
|
|
15
15
|
dailyCount: number;
|
|
16
16
|
totalCount: number;
|
|
17
|
-
}
|
|
17
|
+
}
|
|
18
18
|
|
|
19
19
|
export type MetricsComparator = (
|
|
20
20
|
metricsVal: number,
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { InAppMessage } from '../../../types';
|
|
5
|
+
import { InAppMessageConflictHandler, SetConflictHandlerInput } from '../types';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* The default conflict handler. Can be overridden by `setConflictHandler`.
|
|
9
|
+
*/
|
|
10
|
+
let conflictHandler: InAppMessageConflictHandler = (
|
|
11
|
+
messages: InAppMessage[],
|
|
12
|
+
): InAppMessage => {
|
|
13
|
+
// default behavior is to return the message closest to expiry
|
|
14
|
+
// this function assumes that messages processed by providers already filters out expired messages
|
|
15
|
+
const sorted = messages.sort((a, b) => {
|
|
16
|
+
const endDateA = a.metadata?.endDate;
|
|
17
|
+
const endDateB = b.metadata?.endDate;
|
|
18
|
+
// if both message end dates are falsy or have the same date string, treat them as equal
|
|
19
|
+
if (endDateA === endDateB) {
|
|
20
|
+
return 0;
|
|
21
|
+
}
|
|
22
|
+
// if only message A has an end date, treat it as closer to expiry
|
|
23
|
+
if (endDateA && !endDateB) {
|
|
24
|
+
return -1;
|
|
25
|
+
}
|
|
26
|
+
// if only message B has an end date, treat it as closer to expiry
|
|
27
|
+
if (!endDateA && endDateB) {
|
|
28
|
+
return 1;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// otherwise, compare them
|
|
32
|
+
return new Date(endDateA) < new Date(endDateB) ? -1 : 1;
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
// always return the top sorted
|
|
36
|
+
return sorted[0];
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Sets conflict handler.
|
|
41
|
+
*
|
|
42
|
+
* @internal
|
|
43
|
+
*/
|
|
44
|
+
export const setConflictHandler = (input: SetConflictHandlerInput): void => {
|
|
45
|
+
conflictHandler = input;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Returns the current conflict handler.
|
|
50
|
+
*
|
|
51
|
+
* @internal
|
|
52
|
+
*/
|
|
53
|
+
export const getConflictHandler = (): InAppMessageConflictHandler =>
|
|
54
|
+
conflictHandler;
|