@atlaskit/smart-card 31.0.2 → 32.0.0
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/CHANGELOG.md +23 -0
- package/dist/cjs/extractors/action/extractDownloadActionProps.js +28 -0
- package/dist/cjs/extractors/action/extractPreviewActionProps.js +43 -0
- package/dist/cjs/extractors/action/extractViewActionProps.js +27 -0
- package/dist/cjs/extractors/common/actions/extractActions.js +5 -0
- package/dist/cjs/extractors/common/actions/extractPreviewAction.js +5 -0
- package/dist/cjs/extractors/common/actions/types.js +5 -0
- package/dist/cjs/extractors/flexible/actions/extract-preview-action.js +3 -1
- package/dist/cjs/state/actions/index.js +4 -12
- package/dist/cjs/state/analytics/useSmartLinkAnalytics.js +0 -23
- package/dist/cjs/state/hooks-external/useSmartLinkActions.js +38 -0
- package/dist/cjs/utils/actions/to-action.js +18 -0
- package/dist/cjs/utils/analytics/analytics.js +54 -76
- package/dist/cjs/utils/analytics/index.js +0 -6
- package/dist/cjs/view/LinkUrl/index.js +1 -1
- package/dist/es2019/extractors/action/extractDownloadActionProps.js +19 -0
- package/dist/es2019/extractors/action/extractPreviewActionProps.js +31 -0
- package/dist/es2019/extractors/action/extractViewActionProps.js +18 -0
- package/dist/es2019/extractors/common/actions/extractActions.js +5 -0
- package/dist/es2019/extractors/common/actions/extractPreviewAction.js +5 -0
- package/dist/es2019/extractors/common/actions/types.js +1 -0
- package/dist/es2019/extractors/flexible/actions/extract-preview-action.js +3 -1
- package/dist/es2019/state/actions/index.js +4 -12
- package/dist/es2019/state/analytics/useSmartLinkAnalytics.js +1 -24
- package/dist/es2019/state/hooks-external/useSmartLinkActions.js +38 -0
- package/dist/es2019/utils/actions/to-action.js +9 -0
- package/dist/es2019/utils/analytics/analytics.js +1 -23
- package/dist/es2019/utils/analytics/index.js +1 -1
- package/dist/es2019/view/LinkUrl/index.js +1 -1
- package/dist/esm/extractors/action/extractDownloadActionProps.js +22 -0
- package/dist/esm/extractors/action/extractPreviewActionProps.js +36 -0
- package/dist/esm/extractors/action/extractViewActionProps.js +21 -0
- package/dist/esm/extractors/common/actions/extractActions.js +5 -0
- package/dist/esm/extractors/common/actions/extractPreviewAction.js +5 -0
- package/dist/esm/extractors/common/actions/types.js +1 -0
- package/dist/esm/extractors/flexible/actions/extract-preview-action.js +3 -1
- package/dist/esm/state/actions/index.js +4 -12
- package/dist/esm/state/analytics/useSmartLinkAnalytics.js +1 -24
- package/dist/esm/state/hooks-external/useSmartLinkActions.js +38 -0
- package/dist/esm/utils/actions/to-action.js +11 -0
- package/dist/esm/utils/analytics/analytics.js +53 -75
- package/dist/esm/utils/analytics/index.js +1 -1
- package/dist/esm/view/LinkUrl/index.js +1 -1
- package/dist/types/extractors/action/extractDownloadActionProps.d.ts +3 -0
- package/dist/types/extractors/action/extractPreviewActionProps.d.ts +3 -0
- package/dist/types/extractors/action/extractViewActionProps.d.ts +3 -0
- package/dist/types/extractors/common/__mocks__/jsonld.d.ts +5 -0
- package/dist/types/extractors/common/actions/extractActions.d.ts +4 -0
- package/dist/types/extractors/common/actions/extractPreviewAction.d.ts +4 -0
- package/dist/types/extractors/common/actions/types.d.ts +21 -0
- package/dist/types/state/analytics/useSmartLinkAnalytics.d.ts +1 -9
- package/dist/types/state/flexible-ui-context/types.d.ts +1 -0
- package/dist/types/state/hooks/use-invoke-client-action/index.d.ts +2 -2
- package/dist/types/state/hooks/use-invoke-client-action/types.d.ts +1 -0
- package/dist/types/state/hooks/useSmartLink.d.ts +0 -1
- package/dist/types/utils/actions/to-action.d.ts +8 -0
- package/dist/types/utils/analytics/analytics.d.ts +1 -5
- package/dist/types/utils/analytics/index.d.ts +1 -1
- package/dist/types/utils/analytics/types.d.ts +0 -4
- package/dist/types/utils/mocks.d.ts +0 -1
- package/dist/types-ts4.5/extractors/action/extractDownloadActionProps.d.ts +3 -0
- package/dist/types-ts4.5/extractors/action/extractPreviewActionProps.d.ts +3 -0
- package/dist/types-ts4.5/extractors/action/extractViewActionProps.d.ts +3 -0
- package/dist/types-ts4.5/extractors/common/__mocks__/jsonld.d.ts +5 -0
- package/dist/types-ts4.5/extractors/common/actions/extractActions.d.ts +4 -0
- package/dist/types-ts4.5/extractors/common/actions/extractPreviewAction.d.ts +4 -0
- package/dist/types-ts4.5/extractors/common/actions/types.d.ts +21 -0
- package/dist/types-ts4.5/state/analytics/useSmartLinkAnalytics.d.ts +1 -9
- package/dist/types-ts4.5/state/flexible-ui-context/types.d.ts +1 -0
- package/dist/types-ts4.5/state/hooks/use-invoke-client-action/index.d.ts +2 -2
- package/dist/types-ts4.5/state/hooks/use-invoke-client-action/types.d.ts +1 -0
- package/dist/types-ts4.5/state/hooks/useSmartLink.d.ts +0 -1
- package/dist/types-ts4.5/utils/actions/to-action.d.ts +8 -0
- package/dist/types-ts4.5/utils/analytics/analytics.d.ts +1 -5
- package/dist/types-ts4.5/utils/analytics/index.d.ts +1 -1
- package/dist/types-ts4.5/utils/analytics/types.d.ts +0 -4
- package/dist/types-ts4.5/utils/mocks.d.ts +0 -1
- package/package.json +3 -4
- package/client/package.json +0 -15
- package/dist/cjs/client/index.js +0 -12
- package/dist/es2019/client/index.js +0 -5
- package/dist/esm/client/index.js +0 -5
- package/dist/types/client/index.d.ts +0 -5
- package/dist/types-ts4.5/client/index.d.ts +0 -5
|
@@ -51,6 +51,11 @@ export const getActionsFromJsonLd = jsonLd => {
|
|
|
51
51
|
}
|
|
52
52
|
return actions;
|
|
53
53
|
};
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @private
|
|
57
|
+
* @deprecated - use flexible extractors instead
|
|
58
|
+
*/
|
|
54
59
|
export function extractClientActions(jsonLd, handler, actionOptions) {
|
|
55
60
|
const actions = getActionsFromJsonLd(jsonLd);
|
|
56
61
|
const clientActions = actions.filter(action => isClientAction(action) && isActionEnabled(action, actionOptions));
|
|
@@ -38,6 +38,11 @@ const getInvokeOpts = (key, action, source) => ({
|
|
|
38
38
|
promise: () => Promise.resolve()
|
|
39
39
|
}
|
|
40
40
|
});
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* @private
|
|
44
|
+
* @deprecated - use extractPreviewActionProps instead
|
|
45
|
+
*/
|
|
41
46
|
export const extractPreviewAction = ({
|
|
42
47
|
extensionKey = 'empty-object-provider',
|
|
43
48
|
viewProps,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -3,6 +3,7 @@ import { canShowAction } from '../../../utils/actions/can-show-action';
|
|
|
3
3
|
import { CardAction } from '../../../view/Card/types';
|
|
4
4
|
import { extractDownloadUrl } from '../../common/detail';
|
|
5
5
|
import { extractIsSupportTheming } from '../../common/meta/extractIsSupportTheming';
|
|
6
|
+
import { extractIsTrusted } from '../../common/meta/extractIsTrusted';
|
|
6
7
|
import { extractLinkIcon } from '../icon';
|
|
7
8
|
export const extractPreviewAction = (response, actionOptions) => {
|
|
8
9
|
var _extractPreviewData;
|
|
@@ -21,7 +22,8 @@ export const extractPreviewAction = (response, actionOptions) => {
|
|
|
21
22
|
title: extractTitle(data),
|
|
22
23
|
linkIcon: extractLinkIcon(response),
|
|
23
24
|
url: extractLink(data),
|
|
24
|
-
isSupportTheming: extractIsSupportTheming(meta)
|
|
25
|
+
isSupportTheming: extractIsSupportTheming(meta),
|
|
26
|
+
isTrusted: extractIsTrusted(meta)
|
|
25
27
|
};
|
|
26
28
|
}
|
|
27
29
|
};
|
|
@@ -2,7 +2,6 @@ import { useCallback, useMemo } from 'react';
|
|
|
2
2
|
import { useSmartLinkContext } from '@atlaskit/link-provider';
|
|
3
3
|
import { ACTION_RESOLVING, ACTION_UPDATE_METADATA_STATUS, cardAction } from '@atlaskit/linking-common';
|
|
4
4
|
import { auth } from '@atlaskit/outbound-auth-flow-client';
|
|
5
|
-
import { fg } from '@atlaskit/platform-feature-flags';
|
|
6
5
|
import { useAnalyticsEvents } from '../../common/analytics/generated/use-analytics-events';
|
|
7
6
|
import { SmartLinkStatus } from '../../constants';
|
|
8
7
|
import { getByDefinitionId, getDefinitionId, getExtensionKey, getServices } from '../helpers';
|
|
@@ -101,16 +100,9 @@ export const useSmartCardActions = (id, url, analytics) => {
|
|
|
101
100
|
});
|
|
102
101
|
}
|
|
103
102
|
if (services.length > 0) {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
});
|
|
108
|
-
} else {
|
|
109
|
-
analytics.screen.authPopupEvent({
|
|
110
|
-
definitionId,
|
|
111
|
-
extensionKey
|
|
112
|
-
});
|
|
113
|
-
}
|
|
103
|
+
fireEvent('screen.consentModal.viewed', {
|
|
104
|
+
definitionId: definitionId !== null && definitionId !== void 0 ? definitionId : null
|
|
105
|
+
});
|
|
114
106
|
auth(services[0].url).then(() => {
|
|
115
107
|
fireEvent('track.applicationAccount.connected', {
|
|
116
108
|
definitionId: definitionId !== null && definitionId !== void 0 ? definitionId : null
|
|
@@ -138,7 +130,7 @@ export const useSmartCardActions = (id, url, analytics) => {
|
|
|
138
130
|
reload();
|
|
139
131
|
});
|
|
140
132
|
}
|
|
141
|
-
}, [getSmartLinkState, analytics.ui, analytics.
|
|
133
|
+
}, [getSmartLinkState, analytics.ui, analytics.operational, id, reload, fireEvent]);
|
|
142
134
|
const invoke = useCallback(async (opts, appearance) => {
|
|
143
135
|
const {
|
|
144
136
|
key,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useMemo } from 'react';
|
|
2
2
|
import { useSmartLinkContext } from '@atlaskit/link-provider';
|
|
3
3
|
import { getUrl } from '@atlaskit/linking-common';
|
|
4
|
-
import { chunkloadFailedEvent, connectFailedEvent, connectSucceededEvent, context, instrumentEvent, invokeFailedEvent, invokeSucceededEvent,
|
|
4
|
+
import { chunkloadFailedEvent, connectFailedEvent, connectSucceededEvent, context, instrumentEvent, invokeFailedEvent, invokeSucceededEvent, uiActionClickedEvent, uiAuthAlternateAccountEvent, uiAuthEvent, uiCardClickedEvent, uiClosedAuthEvent, uiHoverCardDismissedEvent, uiHoverCardOpenLinkClickedEvent, uiHoverCardViewedEvent, uiLearnMoreLinkClickedEvent, uiRenderFailedEvent, uiRenderSuccessEvent, uiSmartLinkStatusListItemButtonClicked, uiSmartLinkStatusLozengeButtonClicked, uiSmartLinkStatusOpenPreviewButtonClicked } from '../../utils/analytics';
|
|
5
5
|
import { uiServerActionClicked } from '../../utils/analytics/analytics';
|
|
6
6
|
import { getDefinitionId, getExtensionKey, getProduct, getResourceType, getStatusDetails, getSubproduct } from '../helpers';
|
|
7
7
|
import { failUfoExperience, startUfoExperience, succeedUfoExperience } from './ufoExperiences';
|
|
@@ -622,29 +622,6 @@ export const useSmartLinkAnalytics = (url, id, defaultLocation) => {
|
|
|
622
622
|
|
|
623
623
|
/** Contains all screen analytics events */
|
|
624
624
|
const screen = useMemo(() => ({
|
|
625
|
-
/**
|
|
626
|
-
* This fires an event which represents the connect account page being opened.
|
|
627
|
-
* @param definitionId The definitionId of the Smart Link resolver invoked.
|
|
628
|
-
* @param extensionKey The extensionKey of the Smart Link resovler invoked.
|
|
629
|
-
* @returns
|
|
630
|
-
* @deprecated remove when platform_smart-card-migrate-screen-analytics is cleaned up
|
|
631
|
-
*/
|
|
632
|
-
authPopupEvent: ({
|
|
633
|
-
extensionKey,
|
|
634
|
-
definitionId,
|
|
635
|
-
resourceType,
|
|
636
|
-
destinationProduct,
|
|
637
|
-
destinationSubproduct,
|
|
638
|
-
location
|
|
639
|
-
}) => dispatchAnalytics(applyCommonAttributes(screenAuthPopupEvent({
|
|
640
|
-
...commonAttributes,
|
|
641
|
-
extensionKey,
|
|
642
|
-
definitionId,
|
|
643
|
-
resourceType,
|
|
644
|
-
destinationProduct,
|
|
645
|
-
destinationSubproduct,
|
|
646
|
-
location
|
|
647
|
-
}), commonAttributes)),
|
|
648
625
|
/**
|
|
649
626
|
* This fires an event that represents when a user view a modal.
|
|
650
627
|
* @param data A partial analytics event payload
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { useMemo } from 'react';
|
|
2
2
|
import uuid from 'uuid';
|
|
3
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
4
|
+
import { extractDownloadActionProps } from '../../extractors/action/extractDownloadActionProps';
|
|
5
|
+
import { extractPreviewActionProps } from '../../extractors/action/extractPreviewActionProps';
|
|
6
|
+
import { extractViewActionProps } from '../../extractors/action/extractViewActionProps';
|
|
3
7
|
import { extractBlockProps as extractCardProps } from '../../extractors/block';
|
|
8
|
+
import { messages } from '../../messages';
|
|
9
|
+
import { toAction } from '../../utils/actions/to-action';
|
|
4
10
|
import { useSmartCardActions as useLinkActions } from '../actions';
|
|
5
11
|
import { useSmartLinkAnalytics as useLinkAnalytics } from '../analytics';
|
|
6
12
|
import { getExtensionKey } from '../helpers';
|
|
13
|
+
import useInvokeClientAction from '../hooks/use-invoke-client-action';
|
|
7
14
|
import { useSmartCardState as useLinkState } from '../store';
|
|
8
15
|
export function useSmartLinkActions({
|
|
9
16
|
url,
|
|
@@ -16,6 +23,37 @@ export function useSmartLinkActions({
|
|
|
16
23
|
const linkState = useLinkState(url);
|
|
17
24
|
const linkAnalytics = useLinkAnalytics(url, id);
|
|
18
25
|
const linkActions = useLinkActions(id, url, linkAnalytics);
|
|
26
|
+
const invokeClientAction = useInvokeClientAction({
|
|
27
|
+
analytics: linkAnalytics
|
|
28
|
+
});
|
|
29
|
+
if (fg('smart-card-use-refactored-usesmartlinkactions')) {
|
|
30
|
+
if (linkState.details && !(actionOptions !== null && actionOptions !== void 0 && actionOptions.hide)) {
|
|
31
|
+
const opts = {
|
|
32
|
+
response: linkState.details,
|
|
33
|
+
handleInvoke: invokeClientAction,
|
|
34
|
+
analytics: linkAnalytics,
|
|
35
|
+
origin,
|
|
36
|
+
extensionKey: getExtensionKey(linkState.details),
|
|
37
|
+
source: appearance,
|
|
38
|
+
actionOptions
|
|
39
|
+
};
|
|
40
|
+
const actions = [];
|
|
41
|
+
const downloadActionProps = extractDownloadActionProps(opts);
|
|
42
|
+
if (downloadActionProps) {
|
|
43
|
+
actions.push(toAction(downloadActionProps, invokeClientAction, messages.download, 'download-content'));
|
|
44
|
+
}
|
|
45
|
+
const viewActionProps = extractViewActionProps(opts);
|
|
46
|
+
if (viewActionProps) {
|
|
47
|
+
actions.push(toAction(viewActionProps, invokeClientAction, messages.view, 'view-content'));
|
|
48
|
+
}
|
|
49
|
+
const previewActionProps = extractPreviewActionProps(opts);
|
|
50
|
+
if (previewActionProps) {
|
|
51
|
+
actions.push(toAction(previewActionProps, invokeClientAction, messages.preview_improved, 'preview-content'));
|
|
52
|
+
}
|
|
53
|
+
return actions;
|
|
54
|
+
}
|
|
55
|
+
return [];
|
|
56
|
+
}
|
|
19
57
|
if (linkState.details && !(actionOptions !== null && actionOptions !== void 0 && actionOptions.hide)) {
|
|
20
58
|
const cardProperties = extractCardProps(linkState.details.data, linkState.details.meta, {
|
|
21
59
|
handleInvoke: opts => linkActions.invoke(opts, appearance),
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { FormattedMessage } from 'react-intl-next';
|
|
3
|
+
export const toAction = (action, invokeClientAction, message, id) => {
|
|
4
|
+
return {
|
|
5
|
+
id,
|
|
6
|
+
text: /*#__PURE__*/React.createElement(FormattedMessage, message),
|
|
7
|
+
invoke: () => invokeClientAction(action)
|
|
8
|
+
};
|
|
9
|
+
};
|
|
@@ -4,7 +4,7 @@ export const ANALYTICS_CHANNEL = 'media';
|
|
|
4
4
|
export const context = {
|
|
5
5
|
componentName: 'smart-cards',
|
|
6
6
|
packageName: "@atlaskit/smart-card",
|
|
7
|
-
packageVersion: "
|
|
7
|
+
packageVersion: "32.0.0"
|
|
8
8
|
};
|
|
9
9
|
export let TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
|
|
10
10
|
TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
|
|
@@ -324,28 +324,6 @@ export const uiClosedAuthEvent = ({
|
|
|
324
324
|
display
|
|
325
325
|
}
|
|
326
326
|
});
|
|
327
|
-
|
|
328
|
-
/**
|
|
329
|
-
* @deprecated remove when platform_smart-card-migrate-screen-analytics is cleaned up
|
|
330
|
-
*/
|
|
331
|
-
export const screenAuthPopupEvent = ({
|
|
332
|
-
extensionKey,
|
|
333
|
-
definitionId,
|
|
334
|
-
destinationProduct,
|
|
335
|
-
destinationSubproduct,
|
|
336
|
-
location
|
|
337
|
-
}) => ({
|
|
338
|
-
actionSubject: 'consentModal',
|
|
339
|
-
eventType: 'screen',
|
|
340
|
-
attributes: {
|
|
341
|
-
...context,
|
|
342
|
-
extensionKey,
|
|
343
|
-
definitionId,
|
|
344
|
-
destinationProduct,
|
|
345
|
-
destinationSubproduct,
|
|
346
|
-
location
|
|
347
|
-
}
|
|
348
|
-
});
|
|
349
327
|
export const uiRenderSuccessEvent = ({
|
|
350
328
|
display,
|
|
351
329
|
status,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getMeasure } from '../performance';
|
|
2
2
|
import { resolvedEvent, unresolvedEvent } from './analytics';
|
|
3
|
-
export { ANALYTICS_CHANNEL, context, fireSmartLinkEvent, resolvedEvent, unresolvedEvent, invokeSucceededEvent, invokeFailedEvent, chunkloadFailedEvent, connectSucceededEvent, connectFailedEvent, uiAuthEvent, uiAuthAlternateAccountEvent, uiCardClickedEvent, uiActionClickedEvent, uiClosedAuthEvent,
|
|
3
|
+
export { ANALYTICS_CHANNEL, context, fireSmartLinkEvent, resolvedEvent, unresolvedEvent, invokeSucceededEvent, invokeFailedEvent, chunkloadFailedEvent, connectSucceededEvent, connectFailedEvent, uiAuthEvent, uiAuthAlternateAccountEvent, uiCardClickedEvent, uiActionClickedEvent, uiClosedAuthEvent, uiRenderSuccessEvent, uiRenderFailedEvent, uiHoverCardViewedEvent, uiHoverCardDismissedEvent, uiHoverCardOpenLinkClickedEvent, uiLearnMoreLinkClickedEvent, uiSmartLinkStatusLozengeButtonClicked, uiSmartLinkStatusListItemButtonClicked, uiSmartLinkStatusOpenPreviewButtonClicked } from './analytics';
|
|
4
4
|
export const instrumentEvent = ({
|
|
5
5
|
id,
|
|
6
6
|
status,
|
|
@@ -7,7 +7,7 @@ import LinkWarningModal from './LinkWarningModal';
|
|
|
7
7
|
import { useLinkWarningModal } from './LinkWarningModal/hooks/use-link-warning-modal';
|
|
8
8
|
const PACKAGE_DATA = {
|
|
9
9
|
packageName: "@atlaskit/smart-card",
|
|
10
|
-
packageVersion: "
|
|
10
|
+
packageVersion: "32.0.0",
|
|
11
11
|
componentName: 'linkUrl'
|
|
12
12
|
};
|
|
13
13
|
const Link = withLinkClickedEvent('a');
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ActionName } from '../../constants';
|
|
2
|
+
import { downloadUrl } from '../../utils';
|
|
3
|
+
import { extractDownloadAction as extractDownloadActionData } from '../flexible/actions/extract-download-action';
|
|
4
|
+
export var extractDownloadActionProps = function extractDownloadActionProps(_ref) {
|
|
5
|
+
var response = _ref.response,
|
|
6
|
+
actionOptions = _ref.actionOptions,
|
|
7
|
+
_ref$extensionKey = _ref.extensionKey,
|
|
8
|
+
extensionKey = _ref$extensionKey === void 0 ? 'empty-object-provider' : _ref$extensionKey,
|
|
9
|
+
_ref$source = _ref.source,
|
|
10
|
+
source = _ref$source === void 0 ? 'block' : _ref$source;
|
|
11
|
+
var data = extractDownloadActionData(response.data, actionOptions);
|
|
12
|
+
if (data) {
|
|
13
|
+
return {
|
|
14
|
+
actionType: ActionName.DownloadAction,
|
|
15
|
+
actionFn: function actionFn() {
|
|
16
|
+
return downloadUrl(data.downloadUrl);
|
|
17
|
+
},
|
|
18
|
+
display: source,
|
|
19
|
+
extensionKey: extensionKey
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
import { ActionName } from '../../constants';
|
|
5
|
+
import { openEmbedModal } from '../../view/EmbedModal/utils';
|
|
6
|
+
import { extractPreviewAction as extractPreviewActionData } from '../flexible/actions/extract-preview-action';
|
|
7
|
+
export var extractPreviewActionProps = function extractPreviewActionProps(_ref) {
|
|
8
|
+
var response = _ref.response,
|
|
9
|
+
analytics = _ref.analytics,
|
|
10
|
+
_ref$extensionKey = _ref.extensionKey,
|
|
11
|
+
extensionKey = _ref$extensionKey === void 0 ? 'empty-object-provider' : _ref$extensionKey,
|
|
12
|
+
_ref$source = _ref.source,
|
|
13
|
+
source = _ref$source === void 0 ? 'block' : _ref$source,
|
|
14
|
+
actionOptions = _ref.actionOptions,
|
|
15
|
+
origin = _ref.origin;
|
|
16
|
+
var data = extractPreviewActionData(response, actionOptions);
|
|
17
|
+
if (data !== null && data !== void 0 && data.src) {
|
|
18
|
+
return {
|
|
19
|
+
actionType: ActionName.PreviewAction,
|
|
20
|
+
actionFn: function actionFn() {
|
|
21
|
+
return openEmbedModal(_objectSpread({
|
|
22
|
+
download: data === null || data === void 0 ? void 0 : data.downloadUrl,
|
|
23
|
+
showModal: true,
|
|
24
|
+
onClose: function onClose() {},
|
|
25
|
+
analytics: analytics,
|
|
26
|
+
extensionKey: extensionKey,
|
|
27
|
+
origin: origin
|
|
28
|
+
}, data));
|
|
29
|
+
},
|
|
30
|
+
// These values have already been set in analytics context.
|
|
31
|
+
// We only pass these here for ufo experience.
|
|
32
|
+
display: source,
|
|
33
|
+
extensionKey: extensionKey
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { openUrl } from '../../utils';
|
|
2
|
+
import { extractViewAction as extractViewActionData } from '../flexible/actions/extract-view-action';
|
|
3
|
+
export var extractViewActionProps = function extractViewActionProps(_ref) {
|
|
4
|
+
var response = _ref.response,
|
|
5
|
+
actionOptions = _ref.actionOptions,
|
|
6
|
+
_ref$extensionKey = _ref.extensionKey,
|
|
7
|
+
extensionKey = _ref$extensionKey === void 0 ? 'empty-object-provider' : _ref$extensionKey,
|
|
8
|
+
_ref$source = _ref.source,
|
|
9
|
+
source = _ref$source === void 0 ? 'block' : _ref$source;
|
|
10
|
+
var data = extractViewActionData(response.data, actionOptions);
|
|
11
|
+
if (data) {
|
|
12
|
+
return {
|
|
13
|
+
actionType: 'ViewAction',
|
|
14
|
+
actionFn: function actionFn() {
|
|
15
|
+
return openUrl(data.viewUrl);
|
|
16
|
+
},
|
|
17
|
+
display: source,
|
|
18
|
+
extensionKey: extensionKey
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
};
|
|
@@ -57,6 +57,11 @@ export var getActionsFromJsonLd = function getActionsFromJsonLd(jsonLd) {
|
|
|
57
57
|
}
|
|
58
58
|
return actions;
|
|
59
59
|
};
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @private
|
|
63
|
+
* @deprecated - use flexible extractors instead
|
|
64
|
+
*/
|
|
60
65
|
export function extractClientActions(jsonLd, handler, actionOptions) {
|
|
61
66
|
var actions = getActionsFromJsonLd(jsonLd);
|
|
62
67
|
var clientActions = actions.filter(function (action) {
|
|
@@ -47,6 +47,11 @@ var getInvokeOpts = function getInvokeOpts(key, action, source) {
|
|
|
47
47
|
}
|
|
48
48
|
};
|
|
49
49
|
};
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @private
|
|
53
|
+
* @deprecated - use extractPreviewActionProps instead
|
|
54
|
+
*/
|
|
50
55
|
export var extractPreviewAction = function extractPreviewAction(_ref) {
|
|
51
56
|
var _ref$extensionKey = _ref.extensionKey,
|
|
52
57
|
extensionKey = _ref$extensionKey === void 0 ? 'empty-object-provider' : _ref$extensionKey,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -3,6 +3,7 @@ import { canShowAction } from '../../../utils/actions/can-show-action';
|
|
|
3
3
|
import { CardAction } from '../../../view/Card/types';
|
|
4
4
|
import { extractDownloadUrl } from '../../common/detail';
|
|
5
5
|
import { extractIsSupportTheming } from '../../common/meta/extractIsSupportTheming';
|
|
6
|
+
import { extractIsTrusted } from '../../common/meta/extractIsTrusted';
|
|
6
7
|
import { extractLinkIcon } from '../icon';
|
|
7
8
|
export var extractPreviewAction = function extractPreviewAction(response, actionOptions) {
|
|
8
9
|
var _extractPreviewData;
|
|
@@ -21,7 +22,8 @@ export var extractPreviewAction = function extractPreviewAction(response, action
|
|
|
21
22
|
title: extractTitle(data),
|
|
22
23
|
linkIcon: extractLinkIcon(response),
|
|
23
24
|
url: extractLink(data),
|
|
24
|
-
isSupportTheming: extractIsSupportTheming(meta)
|
|
25
|
+
isSupportTheming: extractIsSupportTheming(meta),
|
|
26
|
+
isTrusted: extractIsTrusted(meta)
|
|
25
27
|
};
|
|
26
28
|
}
|
|
27
29
|
};
|
|
@@ -4,7 +4,6 @@ import { useCallback, useMemo } from 'react';
|
|
|
4
4
|
import { useSmartLinkContext } from '@atlaskit/link-provider';
|
|
5
5
|
import { ACTION_RESOLVING, ACTION_UPDATE_METADATA_STATUS, cardAction } from '@atlaskit/linking-common';
|
|
6
6
|
import { auth } from '@atlaskit/outbound-auth-flow-client';
|
|
7
|
-
import { fg } from '@atlaskit/platform-feature-flags';
|
|
8
7
|
import { useAnalyticsEvents } from '../../common/analytics/generated/use-analytics-events';
|
|
9
8
|
import { SmartLinkStatus } from '../../constants';
|
|
10
9
|
import { getByDefinitionId, getDefinitionId, getExtensionKey, getServices } from '../helpers';
|
|
@@ -113,16 +112,9 @@ export var useSmartCardActions = function useSmartCardActions(id, url, analytics
|
|
|
113
112
|
});
|
|
114
113
|
}
|
|
115
114
|
if (services.length > 0) {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
});
|
|
120
|
-
} else {
|
|
121
|
-
analytics.screen.authPopupEvent({
|
|
122
|
-
definitionId: definitionId,
|
|
123
|
-
extensionKey: extensionKey
|
|
124
|
-
});
|
|
125
|
-
}
|
|
115
|
+
fireEvent('screen.consentModal.viewed', {
|
|
116
|
+
definitionId: definitionId !== null && definitionId !== void 0 ? definitionId : null
|
|
117
|
+
});
|
|
126
118
|
auth(services[0].url).then(function () {
|
|
127
119
|
fireEvent('track.applicationAccount.connected', {
|
|
128
120
|
definitionId: definitionId !== null && definitionId !== void 0 ? definitionId : null
|
|
@@ -150,7 +142,7 @@ export var useSmartCardActions = function useSmartCardActions(id, url, analytics
|
|
|
150
142
|
reload();
|
|
151
143
|
});
|
|
152
144
|
}
|
|
153
|
-
}, [getSmartLinkState, analytics.ui, analytics.
|
|
145
|
+
}, [getSmartLinkState, analytics.ui, analytics.operational, id, reload, fireEvent]);
|
|
154
146
|
var invoke = useCallback( /*#__PURE__*/function () {
|
|
155
147
|
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(opts, appearance) {
|
|
156
148
|
var key, action, source;
|
|
@@ -5,7 +5,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
5
5
|
import { useMemo } from 'react';
|
|
6
6
|
import { useSmartLinkContext } from '@atlaskit/link-provider';
|
|
7
7
|
import { getUrl } from '@atlaskit/linking-common';
|
|
8
|
-
import { chunkloadFailedEvent as _chunkloadFailedEvent, connectFailedEvent as _connectFailedEvent, connectSucceededEvent as _connectSucceededEvent, context, instrumentEvent, invokeFailedEvent as _invokeFailedEvent, invokeSucceededEvent as _invokeSucceededEvent,
|
|
8
|
+
import { chunkloadFailedEvent as _chunkloadFailedEvent, connectFailedEvent as _connectFailedEvent, connectSucceededEvent as _connectSucceededEvent, context, instrumentEvent, invokeFailedEvent as _invokeFailedEvent, invokeSucceededEvent as _invokeSucceededEvent, uiActionClickedEvent, uiAuthAlternateAccountEvent, uiAuthEvent, uiCardClickedEvent, uiClosedAuthEvent, uiHoverCardDismissedEvent, uiHoverCardOpenLinkClickedEvent, uiHoverCardViewedEvent, uiLearnMoreLinkClickedEvent, uiRenderFailedEvent, uiRenderSuccessEvent, uiSmartLinkStatusListItemButtonClicked, uiSmartLinkStatusLozengeButtonClicked, uiSmartLinkStatusOpenPreviewButtonClicked } from '../../utils/analytics';
|
|
9
9
|
import { uiServerActionClicked } from '../../utils/analytics/analytics';
|
|
10
10
|
import { getDefinitionId, getExtensionKey, getProduct, getResourceType, getStatusDetails, getSubproduct } from '../helpers';
|
|
11
11
|
import { failUfoExperience, startUfoExperience, succeedUfoExperience } from './ufoExperiences';
|
|
@@ -636,29 +636,6 @@ export var useSmartLinkAnalytics = function useSmartLinkAnalytics(url, id, defau
|
|
|
636
636
|
/** Contains all screen analytics events */
|
|
637
637
|
var screen = useMemo(function () {
|
|
638
638
|
return {
|
|
639
|
-
/**
|
|
640
|
-
* This fires an event which represents the connect account page being opened.
|
|
641
|
-
* @param definitionId The definitionId of the Smart Link resolver invoked.
|
|
642
|
-
* @param extensionKey The extensionKey of the Smart Link resovler invoked.
|
|
643
|
-
* @returns
|
|
644
|
-
* @deprecated remove when platform_smart-card-migrate-screen-analytics is cleaned up
|
|
645
|
-
*/
|
|
646
|
-
authPopupEvent: function authPopupEvent(_ref17) {
|
|
647
|
-
var extensionKey = _ref17.extensionKey,
|
|
648
|
-
definitionId = _ref17.definitionId,
|
|
649
|
-
resourceType = _ref17.resourceType,
|
|
650
|
-
destinationProduct = _ref17.destinationProduct,
|
|
651
|
-
destinationSubproduct = _ref17.destinationSubproduct,
|
|
652
|
-
location = _ref17.location;
|
|
653
|
-
return dispatchAnalytics(applyCommonAttributes(screenAuthPopupEvent(_objectSpread(_objectSpread({}, commonAttributes), {}, {
|
|
654
|
-
extensionKey: extensionKey,
|
|
655
|
-
definitionId: definitionId,
|
|
656
|
-
resourceType: resourceType,
|
|
657
|
-
destinationProduct: destinationProduct,
|
|
658
|
-
destinationSubproduct: destinationSubproduct,
|
|
659
|
-
location: location
|
|
660
|
-
})), commonAttributes));
|
|
661
|
-
},
|
|
662
639
|
/**
|
|
663
640
|
* This fires an event that represents when a user view a modal.
|
|
664
641
|
* @param data A partial analytics event payload
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { useMemo } from 'react';
|
|
2
2
|
import uuid from 'uuid';
|
|
3
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
4
|
+
import { extractDownloadActionProps } from '../../extractors/action/extractDownloadActionProps';
|
|
5
|
+
import { extractPreviewActionProps } from '../../extractors/action/extractPreviewActionProps';
|
|
6
|
+
import { extractViewActionProps } from '../../extractors/action/extractViewActionProps';
|
|
3
7
|
import { extractBlockProps as extractCardProps } from '../../extractors/block';
|
|
8
|
+
import { messages } from '../../messages';
|
|
9
|
+
import { toAction } from '../../utils/actions/to-action';
|
|
4
10
|
import { useSmartCardActions as useLinkActions } from '../actions';
|
|
5
11
|
import { useSmartLinkAnalytics as useLinkAnalytics } from '../analytics';
|
|
6
12
|
import { getExtensionKey } from '../helpers';
|
|
13
|
+
import useInvokeClientAction from '../hooks/use-invoke-client-action';
|
|
7
14
|
import { useSmartCardState as useLinkState } from '../store';
|
|
8
15
|
export function useSmartLinkActions(_ref) {
|
|
9
16
|
var url = _ref.url,
|
|
@@ -18,6 +25,37 @@ export function useSmartLinkActions(_ref) {
|
|
|
18
25
|
var linkState = useLinkState(url);
|
|
19
26
|
var linkAnalytics = useLinkAnalytics(url, id);
|
|
20
27
|
var linkActions = useLinkActions(id, url, linkAnalytics);
|
|
28
|
+
var invokeClientAction = useInvokeClientAction({
|
|
29
|
+
analytics: linkAnalytics
|
|
30
|
+
});
|
|
31
|
+
if (fg('smart-card-use-refactored-usesmartlinkactions')) {
|
|
32
|
+
if (linkState.details && !(actionOptions !== null && actionOptions !== void 0 && actionOptions.hide)) {
|
|
33
|
+
var opts = {
|
|
34
|
+
response: linkState.details,
|
|
35
|
+
handleInvoke: invokeClientAction,
|
|
36
|
+
analytics: linkAnalytics,
|
|
37
|
+
origin: origin,
|
|
38
|
+
extensionKey: getExtensionKey(linkState.details),
|
|
39
|
+
source: appearance,
|
|
40
|
+
actionOptions: actionOptions
|
|
41
|
+
};
|
|
42
|
+
var actions = [];
|
|
43
|
+
var downloadActionProps = extractDownloadActionProps(opts);
|
|
44
|
+
if (downloadActionProps) {
|
|
45
|
+
actions.push(toAction(downloadActionProps, invokeClientAction, messages.download, 'download-content'));
|
|
46
|
+
}
|
|
47
|
+
var viewActionProps = extractViewActionProps(opts);
|
|
48
|
+
if (viewActionProps) {
|
|
49
|
+
actions.push(toAction(viewActionProps, invokeClientAction, messages.view, 'view-content'));
|
|
50
|
+
}
|
|
51
|
+
var previewActionProps = extractPreviewActionProps(opts);
|
|
52
|
+
if (previewActionProps) {
|
|
53
|
+
actions.push(toAction(previewActionProps, invokeClientAction, messages.preview_improved, 'preview-content'));
|
|
54
|
+
}
|
|
55
|
+
return actions;
|
|
56
|
+
}
|
|
57
|
+
return [];
|
|
58
|
+
}
|
|
21
59
|
if (linkState.details && !(actionOptions !== null && actionOptions !== void 0 && actionOptions.hide)) {
|
|
22
60
|
var cardProperties = extractCardProps(linkState.details.data, linkState.details.meta, {
|
|
23
61
|
handleInvoke: function handleInvoke(opts) {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { FormattedMessage } from 'react-intl-next';
|
|
3
|
+
export var toAction = function toAction(action, invokeClientAction, message, id) {
|
|
4
|
+
return {
|
|
5
|
+
id: id,
|
|
6
|
+
text: /*#__PURE__*/React.createElement(FormattedMessage, message),
|
|
7
|
+
invoke: function invoke() {
|
|
8
|
+
return invokeClientAction(action);
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
};
|