@atlaskit/smart-card 42.3.3 → 42.3.5
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 +18 -0
- package/dist/cjs/messages.js +0 -10
- package/dist/cjs/state/actions/index.js +6 -8
- package/dist/cjs/state/hooks/useSmartLink.js +3 -3
- package/dist/cjs/state/store/index.js +1 -5
- package/dist/cjs/utils/analytics/analytics.js +1 -1
- package/dist/cjs/view/CardWithUrl/component.js +15 -14
- package/dist/cjs/view/FlexibleCard/components/actions/follow-action/index.js +1 -1
- package/dist/cjs/view/FlexibleCard/index.js +13 -5
- package/dist/cjs/view/LinkUrl/HyperlinkResolver/index.js +3 -26
- package/dist/cjs/view/LinkUrl/index.js +23 -30
- package/dist/es2019/messages.js +0 -10
- package/dist/es2019/state/actions/index.js +4 -6
- package/dist/es2019/state/hooks/useSmartLink.js +3 -3
- package/dist/es2019/state/store/index.js +1 -5
- package/dist/es2019/utils/analytics/analytics.js +1 -1
- package/dist/es2019/view/CardWithUrl/component.js +15 -14
- package/dist/es2019/view/FlexibleCard/components/actions/follow-action/index.js +1 -1
- package/dist/es2019/view/FlexibleCard/index.js +12 -5
- package/dist/es2019/view/LinkUrl/HyperlinkResolver/index.js +3 -27
- package/dist/es2019/view/LinkUrl/index.js +23 -28
- package/dist/esm/messages.js +0 -10
- package/dist/esm/state/actions/index.js +6 -8
- package/dist/esm/state/hooks/useSmartLink.js +3 -3
- package/dist/esm/state/store/index.js +1 -5
- package/dist/esm/utils/analytics/analytics.js +1 -1
- package/dist/esm/view/CardWithUrl/component.js +15 -14
- package/dist/esm/view/FlexibleCard/components/actions/follow-action/index.js +1 -1
- package/dist/esm/view/FlexibleCard/index.js +12 -5
- package/dist/esm/view/LinkUrl/HyperlinkResolver/index.js +3 -26
- package/dist/esm/view/LinkUrl/index.js +23 -28
- package/dist/types/messages.d.ts +1 -1
- package/dist/types/state/actions/index.d.ts +1 -2
- package/dist/types/state/hooks/useSmartLink.d.ts +2 -3
- package/dist/types/state/store/index.d.ts +1 -1
- package/dist/types/view/FlexibleCard/index.d.ts +13 -1
- package/dist/types/view/LinkUrl/HyperlinkResolver/index.d.ts +0 -5
- package/dist/types-ts4.5/messages.d.ts +1 -1
- package/dist/types-ts4.5/state/actions/index.d.ts +1 -2
- package/dist/types-ts4.5/state/hooks/useSmartLink.d.ts +2 -3
- package/dist/types-ts4.5/state/store/index.d.ts +1 -1
- package/dist/types-ts4.5/view/FlexibleCard/index.d.ts +13 -1
- package/dist/types-ts4.5/view/LinkUrl/HyperlinkResolver/index.d.ts +0 -5
- package/package.json +5 -8
- package/dist/cjs/view/LinkUrl/HyperlinkResolver/error-boundary.js +0 -18
- package/dist/cjs/view/LinkUrl/HyperlinkResolver/resolve-hyperlink.js +0 -70
- package/dist/es2019/view/LinkUrl/HyperlinkResolver/error-boundary.js +0 -9
- package/dist/es2019/view/LinkUrl/HyperlinkResolver/resolve-hyperlink.js +0 -60
- package/dist/esm/view/LinkUrl/HyperlinkResolver/error-boundary.js +0 -11
- package/dist/esm/view/LinkUrl/HyperlinkResolver/resolve-hyperlink.js +0 -62
- package/dist/types/view/LinkUrl/HyperlinkResolver/error-boundary.d.ts +0 -4
- package/dist/types/view/LinkUrl/HyperlinkResolver/resolve-hyperlink.d.ts +0 -3
- package/dist/types-ts4.5/view/LinkUrl/HyperlinkResolver/error-boundary.d.ts +0 -4
- package/dist/types-ts4.5/view/LinkUrl/HyperlinkResolver/resolve-hyperlink.d.ts +0 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @atlaskit/smart-card
|
|
2
2
|
|
|
3
|
+
## 42.3.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`0f97c81f07f53`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/0f97c81f07f53) -
|
|
8
|
+
Internal logic change for `placeholderData` (unreleased prop) so it's used exclusively for
|
|
9
|
+
rendering purposes.
|
|
10
|
+
- [`2d0bdb4a28fef`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/2d0bdb4a28fef) -
|
|
11
|
+
Feature gate cleanup: navx-1834-refactor-resolved-hyperlink
|
|
12
|
+
- Updated dependencies
|
|
13
|
+
|
|
14
|
+
## 42.3.4
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- [`be5ef92ed4c0d`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/be5ef92ed4c0d) -
|
|
19
|
+
[ux] Updated Follow space to Follow Project
|
|
20
|
+
|
|
3
21
|
## 42.3.3
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/dist/cjs/messages.js
CHANGED
|
@@ -800,11 +800,6 @@ var messages = exports.messages = (0, _reactIntlNext.defineMessages)({
|
|
|
800
800
|
defaultMessage: 'Follow to get notifications on this space',
|
|
801
801
|
description: 'Description on what Follow does'
|
|
802
802
|
},
|
|
803
|
-
follow_projectGalaxia: {
|
|
804
|
-
id: 'fabric.linking.follow_project-galaxia',
|
|
805
|
-
defaultMessage: 'Follow space',
|
|
806
|
-
description: 'Click to follow a project.'
|
|
807
|
-
},
|
|
808
803
|
follow_project_errorGalaxia: {
|
|
809
804
|
id: 'fabric.linking.follow_project_error-galaxia',
|
|
810
805
|
defaultMessage: 'We encountered an error while trying to follow the space. Check your connection or refresh the page and try again.',
|
|
@@ -815,11 +810,6 @@ var messages = exports.messages = (0, _reactIntlNext.defineMessages)({
|
|
|
815
810
|
defaultMessage: 'Unfollow to stop receiving space notifications',
|
|
816
811
|
description: 'Description on what Unfollow does'
|
|
817
812
|
},
|
|
818
|
-
unfollow_projectGalaxia: {
|
|
819
|
-
id: 'fabric.linking.unfollow_project-galaxia',
|
|
820
|
-
defaultMessage: 'Unfollow space',
|
|
821
|
-
description: 'Click to unfollow a project.'
|
|
822
|
-
},
|
|
823
813
|
unfollow_project_errorGalaxia: {
|
|
824
814
|
id: 'fabric.linking.unfollow_project_error-galaxia',
|
|
825
815
|
defaultMessage: 'We encountered an error while trying to unfollow the space. Check your connection or refresh the page and try again.',
|
|
@@ -11,14 +11,13 @@ var _react = require("react");
|
|
|
11
11
|
var _linkProvider = require("@atlaskit/link-provider");
|
|
12
12
|
var _linkingCommon = require("@atlaskit/linking-common");
|
|
13
13
|
var _outboundAuthFlowClient = require("@atlaskit/outbound-auth-flow-client");
|
|
14
|
-
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
15
14
|
var _useAnalyticsEvents2 = require("../../common/analytics/generated/use-analytics-events");
|
|
16
15
|
var _constants = require("../../constants");
|
|
17
16
|
var _analytics = require("../analytics");
|
|
18
17
|
var _helpers = require("../helpers");
|
|
19
18
|
var _useInvokeClientAction = _interopRequireDefault(require("../hooks/use-invoke-client-action"));
|
|
20
19
|
var _useResolve = _interopRequireDefault(require("../hooks/use-resolve"));
|
|
21
|
-
var useSmartCardActions = exports.useSmartCardActions = function useSmartCardActions(id, url
|
|
20
|
+
var useSmartCardActions = exports.useSmartCardActions = function useSmartCardActions(id, url) {
|
|
22
21
|
var resolveUrl = (0, _useResolve.default)();
|
|
23
22
|
var invokeClientAction = (0, _useInvokeClientAction.default)({});
|
|
24
23
|
var _useAnalyticsEvents = (0, _useAnalyticsEvents2.useAnalyticsEvents)(),
|
|
@@ -28,9 +27,8 @@ var useSmartCardActions = exports.useSmartCardActions = function useSmartCardAct
|
|
|
28
27
|
var getState = store.getState,
|
|
29
28
|
dispatch = store.dispatch;
|
|
30
29
|
var getSmartLinkState = (0, _react.useCallback)(function () {
|
|
31
|
-
var
|
|
32
|
-
var
|
|
33
|
-
var _ref = (_ref2 = (_getState$url = getState()[url]) !== null && _getState$url !== void 0 ? _getState$url : placeholderObject) !== null && _ref2 !== void 0 ? _ref2 : {
|
|
30
|
+
var _getState$url;
|
|
31
|
+
var _ref = (_getState$url = getState()[url]) !== null && _getState$url !== void 0 ? _getState$url : {
|
|
34
32
|
status: _constants.SmartLinkStatus.Pending
|
|
35
33
|
},
|
|
36
34
|
details = _ref.details,
|
|
@@ -41,7 +39,7 @@ var useSmartCardActions = exports.useSmartCardActions = function useSmartCardAct
|
|
|
41
39
|
status: status,
|
|
42
40
|
metadataStatus: metadataStatus
|
|
43
41
|
};
|
|
44
|
-
}, [getState, url
|
|
42
|
+
}, [getState, url]);
|
|
45
43
|
var setMetadataStatus = (0, _react.useCallback)(function (metadataStatus) {
|
|
46
44
|
dispatch((0, _linkingCommon.cardAction)(_linkingCommon.ACTION_UPDATE_METADATA_STATUS, {
|
|
47
45
|
url: url
|
|
@@ -154,7 +152,7 @@ var useSmartCardActions = exports.useSmartCardActions = function useSmartCardAct
|
|
|
154
152
|
}
|
|
155
153
|
}, [getSmartLinkState, id, reload, fireEvent]);
|
|
156
154
|
var invoke = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
157
|
-
var
|
|
155
|
+
var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(opts, appearance) {
|
|
158
156
|
var key, action, source;
|
|
159
157
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
160
158
|
while (1) switch (_context2.prev = _context2.next) {
|
|
@@ -181,7 +179,7 @@ var useSmartCardActions = exports.useSmartCardActions = function useSmartCardAct
|
|
|
181
179
|
}, _callee2);
|
|
182
180
|
}));
|
|
183
181
|
return function (_x, _x2) {
|
|
184
|
-
return
|
|
182
|
+
return _ref3.apply(this, arguments);
|
|
185
183
|
};
|
|
186
184
|
}(), [invokeClientAction]);
|
|
187
185
|
return (0, _react.useMemo)(function () {
|
|
@@ -12,13 +12,13 @@ var _actions = require("../actions");
|
|
|
12
12
|
var _config = require("../config");
|
|
13
13
|
var _renderers = require("../renderers");
|
|
14
14
|
var _store = require("../store");
|
|
15
|
-
function useSmartLink(id, url
|
|
16
|
-
var state = (0, _store.useSmartCardState)(url
|
|
15
|
+
function useSmartLink(id, url) {
|
|
16
|
+
var state = (0, _store.useSmartCardState)(url);
|
|
17
17
|
var _useSmartLinkContext = (0, _linkProvider.useSmartLinkContext)(),
|
|
18
18
|
store = _useSmartLinkContext.store,
|
|
19
19
|
isPreviewPanelAvailable = _useSmartLinkContext.isPreviewPanelAvailable,
|
|
20
20
|
openPreviewPanel = _useSmartLinkContext.openPreviewPanel;
|
|
21
|
-
var actions = (0, _actions.useSmartCardActions)(id, url
|
|
21
|
+
var actions = (0, _actions.useSmartCardActions)(id, url);
|
|
22
22
|
var config = (0, _config.useSmartLinkConfig)();
|
|
23
23
|
var renderers = (0, _renderers.useSmartLinkRenderers)();
|
|
24
24
|
|
|
@@ -6,18 +6,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.useSmartCardState = useSmartCardState;
|
|
7
7
|
var _withSelector = require("use-sync-external-store/shim/with-selector");
|
|
8
8
|
var _linkProvider = require("@atlaskit/link-provider");
|
|
9
|
-
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
10
9
|
var PENDING_STATE = {
|
|
11
10
|
status: 'pending'
|
|
12
11
|
};
|
|
13
|
-
function useSmartCardState(url
|
|
12
|
+
function useSmartCardState(url) {
|
|
14
13
|
var _useSmartLinkContext = (0, _linkProvider.useSmartLinkContext)(),
|
|
15
14
|
store = _useSmartLinkContext.store;
|
|
16
15
|
var cardState = (0, _withSelector.useSyncExternalStoreWithSelector)(store.subscribe, store.getState, store.getState, function (state) {
|
|
17
16
|
return state[url];
|
|
18
17
|
});
|
|
19
|
-
if ((0, _platformFeatureFlags.fg)('platform_initial_data_for_smart_cards')) {
|
|
20
|
-
return (cardState === null || cardState === void 0 ? void 0 : cardState.status) !== 'resolved' && placeholderData ? placeholderData : cardState !== null && cardState !== void 0 ? cardState : PENDING_STATE;
|
|
21
|
-
}
|
|
22
18
|
return cardState !== null && cardState !== void 0 ? cardState : PENDING_STATE;
|
|
23
19
|
}
|
|
@@ -11,7 +11,7 @@ var ANALYTICS_CHANNEL = exports.ANALYTICS_CHANNEL = 'media';
|
|
|
11
11
|
var context = exports.context = {
|
|
12
12
|
componentName: 'smart-cards',
|
|
13
13
|
packageName: "@atlaskit/smart-card",
|
|
14
|
-
packageVersion: "
|
|
14
|
+
packageVersion: "42.3.4"
|
|
15
15
|
};
|
|
16
16
|
var TrackQuickActionType = exports.TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
|
|
17
17
|
TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
|
|
@@ -67,22 +67,9 @@ function Component(_ref) {
|
|
|
67
67
|
var isFlexibleUi = (0, _react.useMemo)(function () {
|
|
68
68
|
return (0, _flexible.isFlexibleUiCard)(children, ui);
|
|
69
69
|
}, [children, ui]);
|
|
70
|
-
var structuredPlaceholderData = (0, _platformFeatureFlags.fg)('platform_initial_data_for_smart_cards') ?
|
|
71
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
72
|
-
(0, _react.useMemo)(function () {
|
|
73
|
-
// execute some basic validation logic to ensure we should consider using placeholder data
|
|
74
|
-
if (appearance === 'inline' && isValidPlaceholderData(placeholderData)) {
|
|
75
|
-
var data = {
|
|
76
|
-
status: 'resolved',
|
|
77
|
-
metadataStatus: undefined,
|
|
78
|
-
details: placeholderData
|
|
79
|
-
};
|
|
80
|
-
return data;
|
|
81
|
-
}
|
|
82
|
-
}, [appearance, placeholderData]) : undefined;
|
|
83
70
|
|
|
84
71
|
// Get state, actions for this card.
|
|
85
|
-
var _useSmartLink = (0, _state.useSmartLink)(id, url
|
|
72
|
+
var _useSmartLink = (0, _state.useSmartLink)(id, url),
|
|
86
73
|
state = _useSmartLink.state,
|
|
87
74
|
actions = _useSmartLink.actions,
|
|
88
75
|
config = _useSmartLink.config,
|
|
@@ -242,6 +229,19 @@ function Component(_ref) {
|
|
|
242
229
|
display: isFlexibleUi ? 'flexible' : appearance
|
|
243
230
|
});
|
|
244
231
|
}, [id, appearance, definitionId, isFlexibleUi, fireEvent]);
|
|
232
|
+
var structuredPlaceholderData = (0, _platformFeatureFlags.fg)('platform_initial_data_for_smart_cards') ?
|
|
233
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
234
|
+
(0, _react.useMemo)(function () {
|
|
235
|
+
// execute some basic validation logic to ensure we should consider using placeholder data
|
|
236
|
+
if (isFlexibleUi && isValidPlaceholderData(placeholderData)) {
|
|
237
|
+
var data = {
|
|
238
|
+
status: 'resolved',
|
|
239
|
+
metadataStatus: undefined,
|
|
240
|
+
details: placeholderData
|
|
241
|
+
};
|
|
242
|
+
return data;
|
|
243
|
+
}
|
|
244
|
+
}, [isFlexibleUi, placeholderData]) : undefined;
|
|
245
245
|
if (isFlexibleUi) {
|
|
246
246
|
var cardState = state;
|
|
247
247
|
if (error) {
|
|
@@ -256,6 +256,7 @@ function Component(_ref) {
|
|
|
256
256
|
return /*#__PURE__*/_react.default.createElement(_FlexibleCard.default, {
|
|
257
257
|
id: id,
|
|
258
258
|
cardState: cardState,
|
|
259
|
+
placeholderData: (0, _platformFeatureFlags.fg)('platform_initial_data_for_smart_cards') ? structuredPlaceholderData : undefined,
|
|
259
260
|
onAuthorize: services.length && handleAuthorize || undefined,
|
|
260
261
|
onClick: handleClickWrapper,
|
|
261
262
|
origin: "smartLinkCard",
|
|
@@ -60,7 +60,7 @@ var FollowAction = function FollowAction(props) {
|
|
|
60
60
|
data = (0, _objectWithoutProperties2.default)(actionData, _excluded);
|
|
61
61
|
var isStackItem = props.as === 'stack-item';
|
|
62
62
|
var message = value ? _messages.messages.follow : _messages.messages.unfollow;
|
|
63
|
-
var projectMessage = value ?
|
|
63
|
+
var projectMessage = value ? _messages.messages.follow_project : _messages.messages.unfollow_project;
|
|
64
64
|
var goalMessage = value ? _messages.messages.follow_goal : _messages.messages.unfollow_goal;
|
|
65
65
|
var stackMessage = isProject ? projectMessage : goalMessage;
|
|
66
66
|
var label = isStackItem ? stackMessage : message;
|
|
@@ -9,6 +9,7 @@ exports.default = void 0;
|
|
|
9
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
11
|
var _linkProvider = require("@atlaskit/link-provider");
|
|
12
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
12
13
|
var _useAnalyticsEvents2 = require("../../common/analytics/generated/use-analytics-events");
|
|
13
14
|
var _constants = require("../../constants");
|
|
14
15
|
var _flexibleUiContext = require("../../state/flexible-ui-context");
|
|
@@ -17,6 +18,8 @@ var _useResolve = _interopRequireDefault(require("../../state/hooks/use-resolve"
|
|
|
17
18
|
var _container = _interopRequireDefault(require("./components/container"));
|
|
18
19
|
var _utils = require("./utils");
|
|
19
20
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
21
|
+
var PENDING_LINK_STATUSES = [_constants.SmartLinkStatus.Pending, _constants.SmartLinkStatus.Resolving];
|
|
22
|
+
|
|
20
23
|
/**
|
|
21
24
|
* This represents a Flexible Card: a link represented by a card with metadata.
|
|
22
25
|
* This is the container in which all Flexible UI Blocks and Elements exist.
|
|
@@ -28,6 +31,7 @@ var FlexibleCard = function FlexibleCard(_ref) {
|
|
|
28
31
|
var _ref$appearance = _ref.appearance,
|
|
29
32
|
appearance = _ref$appearance === void 0 ? 'flexible' : _ref$appearance,
|
|
30
33
|
cardState = _ref.cardState,
|
|
34
|
+
placeholderData = _ref.placeholderData,
|
|
31
35
|
children = _ref.children,
|
|
32
36
|
id = _ref.id,
|
|
33
37
|
onAuthorize = _ref.onAuthorize,
|
|
@@ -52,12 +56,16 @@ var FlexibleCard = function FlexibleCard(_ref) {
|
|
|
52
56
|
var cardType = cardState.status,
|
|
53
57
|
details = cardState.details;
|
|
54
58
|
var status = cardType;
|
|
59
|
+
var shouldUsePlaceholderData = PENDING_LINK_STATUSES.includes(status) && placeholderData && (0, _platformFeatureFlags.fg)('platform_initial_data_for_smart_cards');
|
|
60
|
+
// if we have placeholder data it means we can internally use it
|
|
61
|
+
// as resolved data until the actual data comes back as one of the final statuses
|
|
62
|
+
var contextStatus = shouldUsePlaceholderData ? _constants.SmartLinkStatus.Resolved : status;
|
|
55
63
|
var context = (0, _react.useMemo)(function () {
|
|
56
64
|
return (0, _utils.getContextByStatus)({
|
|
57
65
|
aiSummaryConfig: aiSummaryConfig,
|
|
58
66
|
appearance: appearance,
|
|
59
67
|
fireEvent: fireEvent,
|
|
60
|
-
response: details,
|
|
68
|
+
response: shouldUsePlaceholderData ? placeholderData.details : details,
|
|
61
69
|
id: id,
|
|
62
70
|
onAuthorize: onAuthorize,
|
|
63
71
|
onClick: onClick,
|
|
@@ -65,19 +73,19 @@ var FlexibleCard = function FlexibleCard(_ref) {
|
|
|
65
73
|
renderers: renderers,
|
|
66
74
|
resolve: resolve,
|
|
67
75
|
actionOptions: actionOptions,
|
|
68
|
-
status: status,
|
|
76
|
+
status: shouldUsePlaceholderData ? contextStatus : status,
|
|
69
77
|
url: url,
|
|
70
78
|
isPreviewPanelAvailable: isPreviewPanelAvailable,
|
|
71
79
|
openPreviewPanel: openPreviewPanel
|
|
72
80
|
});
|
|
73
|
-
}, [aiSummaryConfig, appearance, fireEvent, details, id, onAuthorize, onClick, origin, renderers, resolve, actionOptions, status, url, isPreviewPanelAvailable, openPreviewPanel]);
|
|
81
|
+
}, [aiSummaryConfig, appearance, fireEvent, shouldUsePlaceholderData, placeholderData === null || placeholderData === void 0 ? void 0 : placeholderData.details, details, id, onAuthorize, onClick, origin, renderers, resolve, actionOptions, contextStatus, status, url, isPreviewPanelAvailable, openPreviewPanel]);
|
|
74
82
|
var flexibleCardContext = (0, _react.useMemo)(function () {
|
|
75
83
|
return {
|
|
76
84
|
data: context,
|
|
77
|
-
status: status,
|
|
85
|
+
status: (0, _platformFeatureFlags.fg)('platform_initial_data_for_smart_cards') ? contextStatus : status,
|
|
78
86
|
ui: ui
|
|
79
87
|
};
|
|
80
|
-
}, [context, status, ui]);
|
|
88
|
+
}, [context, contextStatus, status, ui]);
|
|
81
89
|
var _ref2 = context || {},
|
|
82
90
|
linkTitle = _ref2.linkTitle;
|
|
83
91
|
var title = linkTitle === null || linkTitle === void 0 ? void 0 : linkTitle.text;
|
|
@@ -5,24 +5,20 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.
|
|
8
|
+
exports.HyperlinkWithSmartLinkResolver = void 0;
|
|
9
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
10
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
11
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
12
|
var _reactErrorBoundary = require("react-error-boundary");
|
|
13
13
|
var _reactIntlNext = require("react-intl-next");
|
|
14
|
-
var _featureGateJsClient = _interopRequireDefault(require("@atlaskit/feature-gate-js-client"));
|
|
15
14
|
var _linkExtractors = require("@atlaskit/link-extractors");
|
|
16
15
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
17
|
-
var _state = require("../../../state");
|
|
18
16
|
var _helpers = require("../../../state/helpers");
|
|
19
17
|
var _useResolveHyperlink2 = _interopRequireDefault(require("../../../state/hooks/use-resolve-hyperlink"));
|
|
20
|
-
var _useResolveHyperlinkValidator =
|
|
18
|
+
var _useResolveHyperlinkValidator = _interopRequireDefault(require("../../../state/hooks/use-resolve-hyperlink/useResolveHyperlinkValidator"));
|
|
21
19
|
var _intlProvider = _interopRequireDefault(require("../../common/intl-provider"));
|
|
22
20
|
var _useSmartLinkEvents = require("../../SmartLinkEvents/useSmartLinkEvents");
|
|
23
21
|
var _Hyperlink = _interopRequireDefault(require("../Hyperlink"));
|
|
24
|
-
var _errorBoundary = _interopRequireDefault(require("./error-boundary"));
|
|
25
|
-
var _resolveHyperlink = require("./resolve-hyperlink");
|
|
26
22
|
var _unauthorizeView = _interopRequireDefault(require("./unauthorize-view"));
|
|
27
23
|
var _excluded = ["onClick"];
|
|
28
24
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
@@ -91,23 +87,4 @@ var HyperlinkWithSmartLinkResolver = exports.HyperlinkWithSmartLinkResolver = (0
|
|
|
91
87
|
enforceContext: false
|
|
92
88
|
}), _Hyperlink.default), {
|
|
93
89
|
FallbackComponent: HyperlinkFallbackComponent
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
// Remove on navx-1834-refactor-resolved-hyperlink cleanup
|
|
97
|
-
|
|
98
|
-
var HyperlinkResolver = function HyperlinkResolver(_ref2) {
|
|
99
|
-
var href = _ref2.href;
|
|
100
|
-
var hasSmartCardProvider = !!(0, _react.useContext)(_state.SmartCardContext);
|
|
101
|
-
var isSharePointResolveEnabled = _featureGateJsClient.default.getExperimentValue('platform_editor_resolve_hyperlinks_confluence', 'isEnabled', false) || _featureGateJsClient.default.getExperimentValue('platform_editor_resolve_hyperlinks_jira', 'isEnabled', false);
|
|
102
|
-
var isGoogleResolveEnabled = _featureGateJsClient.default.getExperimentValue('platform_editor_resolve_google_hyperlinks', 'isEnabled', false);
|
|
103
|
-
var shouldResolveSharePoint = (0, _useResolveHyperlinkValidator.isSharePointDomain)(href) && isSharePointResolveEnabled;
|
|
104
|
-
var shouldResolveGoogle = (0, _useResolveHyperlinkValidator.isGoogleDomain)(href) && isGoogleResolveEnabled;
|
|
105
|
-
var shouldResolveHyperlink = hasSmartCardProvider && (shouldResolveSharePoint || shouldResolveGoogle);
|
|
106
|
-
if (!shouldResolveHyperlink) {
|
|
107
|
-
return null;
|
|
108
|
-
}
|
|
109
|
-
return /*#__PURE__*/_react.default.createElement(_resolveHyperlink.ResolveHyperlink, {
|
|
110
|
-
href: href
|
|
111
|
-
});
|
|
112
|
-
};
|
|
113
|
-
var _default = exports.default = (0, _errorBoundary.default)(HyperlinkResolver);
|
|
90
|
+
});
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
@@ -13,19 +12,17 @@ var _reactMagneticDi = require("react-magnetic-di");
|
|
|
13
12
|
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
14
13
|
var _featureGateJsClient = _interopRequireDefault(require("@atlaskit/feature-gate-js-client"));
|
|
15
14
|
var _link = _interopRequireDefault(require("@atlaskit/link"));
|
|
16
|
-
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
17
15
|
var _click = require("../../utils/analytics/click");
|
|
18
16
|
var _LinkAnalyticsContext = require("../../utils/analytics/LinkAnalyticsContext");
|
|
19
17
|
var _Hyperlink = _interopRequireDefault(require("./Hyperlink"));
|
|
20
|
-
var _HyperlinkResolver =
|
|
18
|
+
var _HyperlinkResolver = require("./HyperlinkResolver");
|
|
21
19
|
var _LinkWarningModal = _interopRequireDefault(require("./LinkWarningModal"));
|
|
22
20
|
var _useLinkWarningModal2 = require("./LinkWarningModal/hooks/use-link-warning-modal");
|
|
23
21
|
var _excluded = ["href", "children", "checkSafety", "onClick", "testId", "isLinkComponent", "enableResolve"],
|
|
24
22
|
_excluded2 = ["isLinkSafe", "showSafetyWarningModal"];
|
|
25
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
26
23
|
var PACKAGE_DATA = {
|
|
27
24
|
packageName: "@atlaskit/smart-card",
|
|
28
|
-
packageVersion: "
|
|
25
|
+
packageVersion: "42.3.4",
|
|
29
26
|
componentName: 'linkUrl'
|
|
30
27
|
};
|
|
31
28
|
var Anchor = (0, _click.withLinkClickedEvent)('a');
|
|
@@ -48,30 +45,28 @@ var LinkUrl = function LinkUrl(_ref) {
|
|
|
48
45
|
showSafetyWarningModal = _useLinkWarningModal.showSafetyWarningModal,
|
|
49
46
|
linkWarningModalProps = (0, _objectWithoutProperties2.default)(_useLinkWarningModal, _excluded2);
|
|
50
47
|
var resolveHyperlinkFG = _featureGateJsClient.default.checkGate('platform_editor_resolve_hyperlinks_killswitch');
|
|
51
|
-
if (
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
48
|
+
if (resolveHyperlinkFG) {
|
|
49
|
+
var _Link = enableResolve ? _HyperlinkResolver.HyperlinkWithSmartLinkResolver : _Hyperlink.default;
|
|
50
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_LinkAnalyticsContext.LinkAnalyticsContext, {
|
|
51
|
+
url: href,
|
|
52
|
+
display: "url"
|
|
53
|
+
}, /*#__PURE__*/_react.default.createElement(_Link, (0, _extends2.default)({
|
|
54
|
+
href: href,
|
|
55
|
+
isLinkComponent: isLinkComponent,
|
|
56
|
+
onClick: function onClick(e) {
|
|
57
|
+
if (!checkSafety) {
|
|
58
|
+
_onClick && _onClick(e);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
65
61
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
62
|
+
// Only call the onClick if the link is safe
|
|
63
|
+
if (isLinkSafe(e, href)) {
|
|
64
|
+
_onClick && _onClick(e);
|
|
65
|
+
} else {
|
|
66
|
+
showSafetyWarningModal(e, href);
|
|
72
67
|
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
68
|
+
}
|
|
69
|
+
}, props), children)), checkSafety && /*#__PURE__*/_react.default.createElement(_LinkWarningModal.default, linkWarningModalProps));
|
|
75
70
|
}
|
|
76
71
|
var Link = isLinkComponent ? LinkComponent : Anchor;
|
|
77
72
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_LinkAnalyticsContext.LinkAnalyticsContext, {
|
|
@@ -96,8 +91,6 @@ var LinkUrl = function LinkUrl(_ref) {
|
|
|
96
91
|
showSafetyWarningModal(e, href);
|
|
97
92
|
}
|
|
98
93
|
}
|
|
99
|
-
}, props), children)), checkSafety && /*#__PURE__*/_react.default.createElement(_LinkWarningModal.default, linkWarningModalProps)
|
|
100
|
-
href: href
|
|
101
|
-
}));
|
|
94
|
+
}, props), children)), checkSafety && /*#__PURE__*/_react.default.createElement(_LinkWarningModal.default, linkWarningModalProps));
|
|
102
95
|
};
|
|
103
96
|
var _default = exports.default = (0, _analyticsNext.withAnalyticsContext)(PACKAGE_DATA)(LinkUrl);
|
package/dist/es2019/messages.js
CHANGED
|
@@ -794,11 +794,6 @@ export const messages = defineMessages({
|
|
|
794
794
|
defaultMessage: 'Follow to get notifications on this space',
|
|
795
795
|
description: 'Description on what Follow does'
|
|
796
796
|
},
|
|
797
|
-
follow_projectGalaxia: {
|
|
798
|
-
id: 'fabric.linking.follow_project-galaxia',
|
|
799
|
-
defaultMessage: 'Follow space',
|
|
800
|
-
description: 'Click to follow a project.'
|
|
801
|
-
},
|
|
802
797
|
follow_project_errorGalaxia: {
|
|
803
798
|
id: 'fabric.linking.follow_project_error-galaxia',
|
|
804
799
|
defaultMessage: 'We encountered an error while trying to follow the space. Check your connection or refresh the page and try again.',
|
|
@@ -809,11 +804,6 @@ export const messages = defineMessages({
|
|
|
809
804
|
defaultMessage: 'Unfollow to stop receiving space notifications',
|
|
810
805
|
description: 'Description on what Unfollow does'
|
|
811
806
|
},
|
|
812
|
-
unfollow_projectGalaxia: {
|
|
813
|
-
id: 'fabric.linking.unfollow_project-galaxia',
|
|
814
|
-
defaultMessage: 'Unfollow space',
|
|
815
|
-
description: 'Click to unfollow a project.'
|
|
816
|
-
},
|
|
817
807
|
unfollow_project_errorGalaxia: {
|
|
818
808
|
id: 'fabric.linking.unfollow_project_error-galaxia',
|
|
819
809
|
defaultMessage: 'We encountered an error while trying to unfollow the space. Check your connection or refresh the page and try again.',
|
|
@@ -2,14 +2,13 @@ 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 { startUfoExperience } from '../analytics';
|
|
9
8
|
import { getByDefinitionId, getDefinitionId, getExtensionKey, getServices } from '../helpers';
|
|
10
9
|
import useInvokeClientAction from '../hooks/use-invoke-client-action';
|
|
11
10
|
import useResolve from '../hooks/use-resolve';
|
|
12
|
-
export const useSmartCardActions = (id, url
|
|
11
|
+
export const useSmartCardActions = (id, url) => {
|
|
13
12
|
const resolveUrl = useResolve();
|
|
14
13
|
const invokeClientAction = useInvokeClientAction({});
|
|
15
14
|
const {
|
|
@@ -23,13 +22,12 @@ export const useSmartCardActions = (id, url, placeholderData) => {
|
|
|
23
22
|
dispatch
|
|
24
23
|
} = store;
|
|
25
24
|
const getSmartLinkState = useCallback(() => {
|
|
26
|
-
var
|
|
27
|
-
const placeholderObject = fg('platform_initial_data_for_smart_cards') ? placeholderData : undefined;
|
|
25
|
+
var _getState$url;
|
|
28
26
|
const {
|
|
29
27
|
details,
|
|
30
28
|
status,
|
|
31
29
|
metadataStatus
|
|
32
|
-
} = (
|
|
30
|
+
} = (_getState$url = getState()[url]) !== null && _getState$url !== void 0 ? _getState$url : {
|
|
33
31
|
status: SmartLinkStatus.Pending
|
|
34
32
|
};
|
|
35
33
|
return {
|
|
@@ -37,7 +35,7 @@ export const useSmartCardActions = (id, url, placeholderData) => {
|
|
|
37
35
|
status,
|
|
38
36
|
metadataStatus
|
|
39
37
|
};
|
|
40
|
-
}, [getState, url
|
|
38
|
+
}, [getState, url]);
|
|
41
39
|
const setMetadataStatus = useCallback(metadataStatus => {
|
|
42
40
|
dispatch(cardAction(ACTION_UPDATE_METADATA_STATUS, {
|
|
43
41
|
url
|
|
@@ -4,14 +4,14 @@ import { useSmartCardActions as useSmartLinkActions } from '../actions';
|
|
|
4
4
|
import { useSmartLinkConfig } from '../config';
|
|
5
5
|
import { useSmartLinkRenderers } from '../renderers';
|
|
6
6
|
import { useSmartCardState as useSmartLinkState } from '../store';
|
|
7
|
-
export function useSmartLink(id, url
|
|
8
|
-
const state = useSmartLinkState(url
|
|
7
|
+
export function useSmartLink(id, url) {
|
|
8
|
+
const state = useSmartLinkState(url);
|
|
9
9
|
const {
|
|
10
10
|
store,
|
|
11
11
|
isPreviewPanelAvailable,
|
|
12
12
|
openPreviewPanel
|
|
13
13
|
} = useSmartLinkContext();
|
|
14
|
-
const actions = useSmartLinkActions(id, url
|
|
14
|
+
const actions = useSmartLinkActions(id, url);
|
|
15
15
|
const config = useSmartLinkConfig();
|
|
16
16
|
const renderers = useSmartLinkRenderers();
|
|
17
17
|
|
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';
|
|
2
2
|
import { useSmartLinkContext } from '@atlaskit/link-provider';
|
|
3
|
-
import { fg } from '@atlaskit/platform-feature-flags';
|
|
4
3
|
const PENDING_STATE = {
|
|
5
4
|
status: 'pending'
|
|
6
5
|
};
|
|
7
|
-
export function useSmartCardState(url
|
|
6
|
+
export function useSmartCardState(url) {
|
|
8
7
|
const {
|
|
9
8
|
store
|
|
10
9
|
} = useSmartLinkContext();
|
|
11
10
|
const cardState = useSyncExternalStoreWithSelector(store.subscribe, store.getState, store.getState, state => state[url]);
|
|
12
|
-
if (fg('platform_initial_data_for_smart_cards')) {
|
|
13
|
-
return (cardState === null || cardState === void 0 ? void 0 : cardState.status) !== 'resolved' && placeholderData ? placeholderData : cardState !== null && cardState !== void 0 ? cardState : PENDING_STATE;
|
|
14
|
-
}
|
|
15
11
|
return cardState !== null && cardState !== void 0 ? cardState : PENDING_STATE;
|
|
16
12
|
}
|
|
@@ -2,7 +2,7 @@ export const ANALYTICS_CHANNEL = 'media';
|
|
|
2
2
|
export const context = {
|
|
3
3
|
componentName: 'smart-cards',
|
|
4
4
|
packageName: "@atlaskit/smart-card",
|
|
5
|
-
packageVersion: "
|
|
5
|
+
packageVersion: "42.3.4"
|
|
6
6
|
};
|
|
7
7
|
export let TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
|
|
8
8
|
TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
|
|
@@ -57,19 +57,6 @@ function Component({
|
|
|
57
57
|
fireEvent
|
|
58
58
|
} = useAnalyticsEvents();
|
|
59
59
|
let isFlexibleUi = useMemo(() => isFlexibleUiCard(children, ui), [children, ui]);
|
|
60
|
-
const structuredPlaceholderData = fg('platform_initial_data_for_smart_cards') ?
|
|
61
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
62
|
-
useMemo(() => {
|
|
63
|
-
// execute some basic validation logic to ensure we should consider using placeholder data
|
|
64
|
-
if (appearance === 'inline' && isValidPlaceholderData(placeholderData)) {
|
|
65
|
-
const data = {
|
|
66
|
-
status: 'resolved',
|
|
67
|
-
metadataStatus: undefined,
|
|
68
|
-
details: placeholderData
|
|
69
|
-
};
|
|
70
|
-
return data;
|
|
71
|
-
}
|
|
72
|
-
}, [appearance, placeholderData]) : undefined;
|
|
73
60
|
|
|
74
61
|
// Get state, actions for this card.
|
|
75
62
|
const {
|
|
@@ -80,7 +67,7 @@ function Component({
|
|
|
80
67
|
error,
|
|
81
68
|
isPreviewPanelAvailable,
|
|
82
69
|
openPreviewPanel
|
|
83
|
-
} = useSmartLink(id, url
|
|
70
|
+
} = useSmartLink(id, url);
|
|
84
71
|
const ari = getObjectAri(state.details);
|
|
85
72
|
const name = getObjectName(state.details);
|
|
86
73
|
const definitionId = getDefinitionId(state.details);
|
|
@@ -229,6 +216,19 @@ function Component({
|
|
|
229
216
|
display: isFlexibleUi ? 'flexible' : appearance
|
|
230
217
|
});
|
|
231
218
|
}, [id, appearance, definitionId, isFlexibleUi, fireEvent]);
|
|
219
|
+
const structuredPlaceholderData = fg('platform_initial_data_for_smart_cards') ?
|
|
220
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
221
|
+
useMemo(() => {
|
|
222
|
+
// execute some basic validation logic to ensure we should consider using placeholder data
|
|
223
|
+
if (isFlexibleUi && isValidPlaceholderData(placeholderData)) {
|
|
224
|
+
const data = {
|
|
225
|
+
status: 'resolved',
|
|
226
|
+
metadataStatus: undefined,
|
|
227
|
+
details: placeholderData
|
|
228
|
+
};
|
|
229
|
+
return data;
|
|
230
|
+
}
|
|
231
|
+
}, [isFlexibleUi, placeholderData]) : undefined;
|
|
232
232
|
if (isFlexibleUi) {
|
|
233
233
|
let cardState = state;
|
|
234
234
|
if (error) {
|
|
@@ -243,6 +243,7 @@ function Component({
|
|
|
243
243
|
return /*#__PURE__*/React.createElement(FlexibleCard, {
|
|
244
244
|
id: id,
|
|
245
245
|
cardState: cardState,
|
|
246
|
+
placeholderData: fg('platform_initial_data_for_smart_cards') ? structuredPlaceholderData : undefined,
|
|
246
247
|
onAuthorize: services.length && handleAuthorize || undefined,
|
|
247
248
|
onClick: handleClickWrapper,
|
|
248
249
|
origin: "smartLinkCard",
|
|
@@ -41,7 +41,7 @@ const FollowAction = props => {
|
|
|
41
41
|
} = actionData;
|
|
42
42
|
const isStackItem = props.as === 'stack-item';
|
|
43
43
|
const message = value ? messages.follow : messages.unfollow;
|
|
44
|
-
const projectMessage = value ?
|
|
44
|
+
const projectMessage = value ? messages.follow_project : messages.unfollow_project;
|
|
45
45
|
const goalMessage = value ? messages.follow_goal : messages.unfollow_goal;
|
|
46
46
|
const stackMessage = isProject ? projectMessage : goalMessage;
|
|
47
47
|
const label = isStackItem ? stackMessage : message;
|