UNPKG

@aws-amplify/core

Version:
82 lines (79 loc) 3.42 kB
import { amplifyUuid } from '../../../utils/amplifyUuid/index.mjs'; import { getClientInfo } from '../../../utils/getClientInfo/getClientInfo.mjs'; import '../../../utils/retry/retry.mjs'; import '@aws-crypto/sha256-js'; import '@smithy/util-hex-encoding'; import '../../../awsClients/pinpoint/base.mjs'; import '../../../awsClients/pinpoint/errorHelpers.mjs'; import { updateEndpoint as updateEndpoint$1 } from '../../../awsClients/pinpoint/updateEndpoint.mjs'; import { cacheEndpointId } from '../utils/cacheEndpointId.mjs'; import { getEndpointId } from '../utils/getEndpointId.mjs'; // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 /** * @internal */ const updateEndpoint = async ({ address, appId, category, channelType, credentials, identityId, optOut, region, userAttributes, userId, userProfile, userAgentValue, }) => { const endpointId = await getEndpointId(appId, category); // only generate a new endpoint id if one was not found in cache const createdEndpointId = !endpointId ? amplifyUuid() : undefined; const { customProperties, demographic, email, location, metrics, name, plan, } = userProfile ?? {}; const clientInfo = getClientInfo(); const mergedDemographic = { appVersion: clientInfo.appVersion, make: clientInfo.make, model: clientInfo.model, modelVersion: clientInfo.version, platform: clientInfo.platform, ...demographic, }; const shouldAddAttributes = email || customProperties || name || plan; const attributes = { ...(email && { email: [email] }), ...(name && { name: [name] }), ...(plan && { plan: [plan] }), ...customProperties, }; const input = { ApplicationId: appId, EndpointId: endpointId ?? createdEndpointId, EndpointRequest: { RequestId: amplifyUuid(), EffectiveDate: new Date().toISOString(), ChannelType: channelType, Address: address, Attributes: shouldAddAttributes ? attributes : undefined, Demographic: { AppVersion: mergedDemographic.appVersion, Locale: mergedDemographic.locale, Make: mergedDemographic.make, Model: mergedDemographic.model, ModelVersion: mergedDemographic.modelVersion, Platform: mergedDemographic.platform, PlatformVersion: mergedDemographic.platformVersion, Timezone: mergedDemographic.timezone, }, Location: { City: location?.city, Country: location?.country, Latitude: location?.latitude, Longitude: location?.longitude, PostalCode: location?.postalCode, Region: location?.region, }, Metrics: metrics, OptOut: optOut, User: { UserId: userId ?? identityId, UserAttributes: userAttributes, }, }, }; await updateEndpoint$1({ credentials, region, userAgentValue }, input); // if we had to create an endpoint id, we need to now cache it if (!!createdEndpointId) { return cacheEndpointId(appId, category, createdEndpointId); } }; export { updateEndpoint }; //# sourceMappingURL=updateEndpoint.mjs.map