@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.
Files changed (84) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/cjs/extractors/action/extractDownloadActionProps.js +28 -0
  3. package/dist/cjs/extractors/action/extractPreviewActionProps.js +43 -0
  4. package/dist/cjs/extractors/action/extractViewActionProps.js +27 -0
  5. package/dist/cjs/extractors/common/actions/extractActions.js +5 -0
  6. package/dist/cjs/extractors/common/actions/extractPreviewAction.js +5 -0
  7. package/dist/cjs/extractors/common/actions/types.js +5 -0
  8. package/dist/cjs/extractors/flexible/actions/extract-preview-action.js +3 -1
  9. package/dist/cjs/state/actions/index.js +4 -12
  10. package/dist/cjs/state/analytics/useSmartLinkAnalytics.js +0 -23
  11. package/dist/cjs/state/hooks-external/useSmartLinkActions.js +38 -0
  12. package/dist/cjs/utils/actions/to-action.js +18 -0
  13. package/dist/cjs/utils/analytics/analytics.js +54 -76
  14. package/dist/cjs/utils/analytics/index.js +0 -6
  15. package/dist/cjs/view/LinkUrl/index.js +1 -1
  16. package/dist/es2019/extractors/action/extractDownloadActionProps.js +19 -0
  17. package/dist/es2019/extractors/action/extractPreviewActionProps.js +31 -0
  18. package/dist/es2019/extractors/action/extractViewActionProps.js +18 -0
  19. package/dist/es2019/extractors/common/actions/extractActions.js +5 -0
  20. package/dist/es2019/extractors/common/actions/extractPreviewAction.js +5 -0
  21. package/dist/es2019/extractors/common/actions/types.js +1 -0
  22. package/dist/es2019/extractors/flexible/actions/extract-preview-action.js +3 -1
  23. package/dist/es2019/state/actions/index.js +4 -12
  24. package/dist/es2019/state/analytics/useSmartLinkAnalytics.js +1 -24
  25. package/dist/es2019/state/hooks-external/useSmartLinkActions.js +38 -0
  26. package/dist/es2019/utils/actions/to-action.js +9 -0
  27. package/dist/es2019/utils/analytics/analytics.js +1 -23
  28. package/dist/es2019/utils/analytics/index.js +1 -1
  29. package/dist/es2019/view/LinkUrl/index.js +1 -1
  30. package/dist/esm/extractors/action/extractDownloadActionProps.js +22 -0
  31. package/dist/esm/extractors/action/extractPreviewActionProps.js +36 -0
  32. package/dist/esm/extractors/action/extractViewActionProps.js +21 -0
  33. package/dist/esm/extractors/common/actions/extractActions.js +5 -0
  34. package/dist/esm/extractors/common/actions/extractPreviewAction.js +5 -0
  35. package/dist/esm/extractors/common/actions/types.js +1 -0
  36. package/dist/esm/extractors/flexible/actions/extract-preview-action.js +3 -1
  37. package/dist/esm/state/actions/index.js +4 -12
  38. package/dist/esm/state/analytics/useSmartLinkAnalytics.js +1 -24
  39. package/dist/esm/state/hooks-external/useSmartLinkActions.js +38 -0
  40. package/dist/esm/utils/actions/to-action.js +11 -0
  41. package/dist/esm/utils/analytics/analytics.js +53 -75
  42. package/dist/esm/utils/analytics/index.js +1 -1
  43. package/dist/esm/view/LinkUrl/index.js +1 -1
  44. package/dist/types/extractors/action/extractDownloadActionProps.d.ts +3 -0
  45. package/dist/types/extractors/action/extractPreviewActionProps.d.ts +3 -0
  46. package/dist/types/extractors/action/extractViewActionProps.d.ts +3 -0
  47. package/dist/types/extractors/common/__mocks__/jsonld.d.ts +5 -0
  48. package/dist/types/extractors/common/actions/extractActions.d.ts +4 -0
  49. package/dist/types/extractors/common/actions/extractPreviewAction.d.ts +4 -0
  50. package/dist/types/extractors/common/actions/types.d.ts +21 -0
  51. package/dist/types/state/analytics/useSmartLinkAnalytics.d.ts +1 -9
  52. package/dist/types/state/flexible-ui-context/types.d.ts +1 -0
  53. package/dist/types/state/hooks/use-invoke-client-action/index.d.ts +2 -2
  54. package/dist/types/state/hooks/use-invoke-client-action/types.d.ts +1 -0
  55. package/dist/types/state/hooks/useSmartLink.d.ts +0 -1
  56. package/dist/types/utils/actions/to-action.d.ts +8 -0
  57. package/dist/types/utils/analytics/analytics.d.ts +1 -5
  58. package/dist/types/utils/analytics/index.d.ts +1 -1
  59. package/dist/types/utils/analytics/types.d.ts +0 -4
  60. package/dist/types/utils/mocks.d.ts +0 -1
  61. package/dist/types-ts4.5/extractors/action/extractDownloadActionProps.d.ts +3 -0
  62. package/dist/types-ts4.5/extractors/action/extractPreviewActionProps.d.ts +3 -0
  63. package/dist/types-ts4.5/extractors/action/extractViewActionProps.d.ts +3 -0
  64. package/dist/types-ts4.5/extractors/common/__mocks__/jsonld.d.ts +5 -0
  65. package/dist/types-ts4.5/extractors/common/actions/extractActions.d.ts +4 -0
  66. package/dist/types-ts4.5/extractors/common/actions/extractPreviewAction.d.ts +4 -0
  67. package/dist/types-ts4.5/extractors/common/actions/types.d.ts +21 -0
  68. package/dist/types-ts4.5/state/analytics/useSmartLinkAnalytics.d.ts +1 -9
  69. package/dist/types-ts4.5/state/flexible-ui-context/types.d.ts +1 -0
  70. package/dist/types-ts4.5/state/hooks/use-invoke-client-action/index.d.ts +2 -2
  71. package/dist/types-ts4.5/state/hooks/use-invoke-client-action/types.d.ts +1 -0
  72. package/dist/types-ts4.5/state/hooks/useSmartLink.d.ts +0 -1
  73. package/dist/types-ts4.5/utils/actions/to-action.d.ts +8 -0
  74. package/dist/types-ts4.5/utils/analytics/analytics.d.ts +1 -5
  75. package/dist/types-ts4.5/utils/analytics/index.d.ts +1 -1
  76. package/dist/types-ts4.5/utils/analytics/types.d.ts +0 -4
  77. package/dist/types-ts4.5/utils/mocks.d.ts +0 -1
  78. package/package.json +3 -4
  79. package/client/package.json +0 -15
  80. package/dist/cjs/client/index.js +0 -12
  81. package/dist/es2019/client/index.js +0 -5
  82. package/dist/esm/client/index.js +0 -5
  83. package/dist/types/client/index.d.ts +0 -5
  84. 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
- if (fg('platform_smart-card-migrate-screen-analytics')) {
105
- fireEvent('screen.consentModal.viewed', {
106
- definitionId: definitionId !== null && definitionId !== void 0 ? definitionId : null
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.screen, analytics.operational, id, reload, fireEvent]);
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, screenAuthPopupEvent, uiActionClickedEvent, uiAuthAlternateAccountEvent, uiAuthEvent, uiCardClickedEvent, uiClosedAuthEvent, uiHoverCardDismissedEvent, uiHoverCardOpenLinkClickedEvent, uiHoverCardViewedEvent, uiLearnMoreLinkClickedEvent, uiRenderFailedEvent, uiRenderSuccessEvent, uiSmartLinkStatusListItemButtonClicked, uiSmartLinkStatusLozengeButtonClicked, uiSmartLinkStatusOpenPreviewButtonClicked } from '../../utils/analytics';
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: "31.0.2"
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, screenAuthPopupEvent, uiRenderSuccessEvent, uiRenderFailedEvent, uiHoverCardViewedEvent, uiHoverCardDismissedEvent, uiHoverCardOpenLinkClickedEvent, uiLearnMoreLinkClickedEvent, uiSmartLinkStatusLozengeButtonClicked, uiSmartLinkStatusListItemButtonClicked, uiSmartLinkStatusOpenPreviewButtonClicked } from './analytics';
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: "31.0.2",
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
- if (fg('platform_smart-card-migrate-screen-analytics')) {
117
- fireEvent('screen.consentModal.viewed', {
118
- definitionId: definitionId !== null && definitionId !== void 0 ? definitionId : null
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.screen, analytics.operational, id, reload, fireEvent]);
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, screenAuthPopupEvent, uiActionClickedEvent, uiAuthAlternateAccountEvent, uiAuthEvent, uiCardClickedEvent, uiClosedAuthEvent, uiHoverCardDismissedEvent, uiHoverCardOpenLinkClickedEvent, uiHoverCardViewedEvent, uiLearnMoreLinkClickedEvent, uiRenderFailedEvent, uiRenderSuccessEvent, uiSmartLinkStatusListItemButtonClicked, uiSmartLinkStatusLozengeButtonClicked, uiSmartLinkStatusOpenPreviewButtonClicked } from '../../utils/analytics';
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
+ };