@atlaskit/media-card 77.5.0 → 77.5.1
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 +6 -0
- package/dist/cjs/card/card.js +1 -1
- package/dist/cjs/card/media-card-analytics-error-boundary.js +1 -1
- package/dist/cjs/card/v2/cardV2.js +1 -1
- package/dist/cjs/card/v2/cardViewV2.js +7 -6
- package/dist/cjs/card/v2/useFilePreview/errors.js +132 -0
- package/dist/cjs/card/v2/useFilePreview/getPreview/cache.js +39 -0
- package/dist/cjs/card/v2/useFilePreview/getPreview/filePreviewStatus.js +45 -0
- package/dist/cjs/card/v2/useFilePreview/getPreview/getPreview.js +119 -0
- package/dist/cjs/card/v2/useFilePreview/getPreview/helpers.js +167 -0
- package/dist/cjs/card/v2/useFilePreview/getPreview/index.js +62 -0
- package/dist/cjs/card/v2/useFilePreview/getPreview/objectURLCache.js +85 -0
- package/dist/cjs/card/v2/useFilePreview/getPreview/videoSnapshot.js +58 -0
- package/dist/cjs/card/v2/useFilePreview/globalScope/getSSRData.js +14 -0
- package/dist/cjs/card/v2/useFilePreview/globalScope/globalScope.js +66 -0
- package/dist/cjs/card/v2/useFilePreview/globalScope/index.js +37 -0
- package/dist/cjs/card/v2/useFilePreview/globalScope/printScript.js +32 -0
- package/dist/cjs/card/v2/useFilePreview/globalScope/types.js +5 -0
- package/dist/cjs/card/v2/useFilePreview/helpers.js +64 -0
- package/dist/cjs/card/v2/useFilePreview/index.js +12 -0
- package/dist/cjs/card/v2/useFilePreview/types.js +5 -0
- package/dist/cjs/card/v2/{useFilePreview.js → useFilePreview/useFilePreview.js} +58 -194
- package/dist/cjs/inline/loader.js +1 -1
- package/dist/cjs/utils/ufoExperiences.js +1 -1
- package/dist/es2019/card/card.js +1 -1
- package/dist/es2019/card/media-card-analytics-error-boundary.js +1 -1
- package/dist/es2019/card/v2/cardV2.js +1 -1
- package/dist/es2019/card/v2/cardViewV2.js +7 -6
- package/dist/es2019/card/v2/useFilePreview/errors.js +81 -0
- package/dist/es2019/card/v2/useFilePreview/getPreview/cache.js +30 -0
- package/dist/es2019/card/v2/useFilePreview/getPreview/filePreviewStatus.js +43 -0
- package/dist/es2019/card/v2/useFilePreview/getPreview/getPreview.js +75 -0
- package/dist/es2019/card/v2/useFilePreview/getPreview/helpers.js +76 -0
- package/dist/es2019/card/v2/useFilePreview/getPreview/index.js +3 -0
- package/dist/es2019/card/v2/useFilePreview/getPreview/objectURLCache.js +44 -0
- package/dist/es2019/card/v2/useFilePreview/getPreview/videoSnapshot.js +36 -0
- package/dist/es2019/card/v2/useFilePreview/globalScope/getSSRData.js +8 -0
- package/dist/es2019/card/v2/useFilePreview/globalScope/globalScope.js +48 -0
- package/dist/es2019/card/v2/useFilePreview/globalScope/index.js +2 -0
- package/dist/es2019/card/v2/useFilePreview/globalScope/printScript.js +16 -0
- package/dist/es2019/card/v2/useFilePreview/globalScope/types.js +1 -0
- package/dist/es2019/card/v2/useFilePreview/helpers.js +61 -0
- package/dist/es2019/card/v2/useFilePreview/index.js +1 -0
- package/dist/es2019/card/v2/useFilePreview/types.js +1 -0
- package/dist/es2019/card/v2/{useFilePreview.js → useFilePreview/useFilePreview.js} +18 -132
- package/dist/es2019/inline/loader.js +1 -1
- package/dist/es2019/utils/ufoExperiences.js +1 -1
- package/dist/esm/card/card.js +1 -1
- package/dist/esm/card/media-card-analytics-error-boundary.js +1 -1
- package/dist/esm/card/v2/cardV2.js +1 -1
- package/dist/esm/card/v2/cardViewV2.js +7 -6
- package/dist/esm/card/v2/useFilePreview/errors.js +124 -0
- package/dist/esm/card/v2/useFilePreview/getPreview/cache.js +32 -0
- package/dist/esm/card/v2/useFilePreview/getPreview/filePreviewStatus.js +40 -0
- package/dist/esm/card/v2/useFilePreview/getPreview/getPreview.js +112 -0
- package/dist/esm/card/v2/useFilePreview/getPreview/helpers.js +160 -0
- package/dist/esm/card/v2/useFilePreview/getPreview/index.js +3 -0
- package/dist/esm/card/v2/useFilePreview/getPreview/objectURLCache.js +78 -0
- package/dist/esm/card/v2/useFilePreview/getPreview/videoSnapshot.js +51 -0
- package/dist/esm/card/v2/useFilePreview/globalScope/getSSRData.js +8 -0
- package/dist/esm/card/v2/useFilePreview/globalScope/globalScope.js +56 -0
- package/dist/esm/card/v2/useFilePreview/globalScope/index.js +2 -0
- package/dist/esm/card/v2/useFilePreview/globalScope/printScript.js +25 -0
- package/dist/esm/card/v2/useFilePreview/globalScope/types.js +1 -0
- package/dist/esm/card/v2/useFilePreview/helpers.js +57 -0
- package/dist/esm/card/v2/useFilePreview/index.js +1 -0
- package/dist/esm/card/v2/useFilePreview/types.js +1 -0
- package/dist/esm/card/v2/{useFilePreview.js → useFilePreview/useFilePreview.js} +41 -177
- package/dist/esm/inline/loader.js +1 -1
- package/dist/esm/utils/ufoExperiences.js +1 -1
- package/dist/types/card/v2/cardViewV2.d.ts +5 -4
- package/dist/types/card/v2/useFilePreview/errors.d.ts +38 -0
- package/dist/types/card/v2/useFilePreview/getPreview/cache.d.ts +21 -0
- package/dist/types/card/v2/useFilePreview/getPreview/filePreviewStatus.d.ts +4 -0
- package/dist/types/card/v2/useFilePreview/getPreview/getPreview.d.ts +9 -0
- package/dist/types/card/v2/useFilePreview/getPreview/helpers.d.ts +10 -0
- package/dist/types/card/v2/useFilePreview/getPreview/index.d.ts +3 -0
- package/dist/types/card/v2/useFilePreview/getPreview/objectURLCache.d.ts +12 -0
- package/dist/types/card/v2/useFilePreview/getPreview/videoSnapshot.d.ts +1 -0
- package/dist/types/card/v2/useFilePreview/globalScope/getSSRData.d.ts +3 -0
- package/dist/types/card/v2/useFilePreview/globalScope/globalScope.d.ts +15 -0
- package/dist/types/card/v2/useFilePreview/globalScope/index.d.ts +4 -0
- package/dist/types/card/v2/useFilePreview/globalScope/printScript.d.ts +2 -0
- package/dist/types/card/v2/useFilePreview/globalScope/types.d.ts +8 -0
- package/dist/types/card/v2/useFilePreview/helpers.d.ts +11 -0
- package/dist/types/card/v2/useFilePreview/index.d.ts +2 -0
- package/dist/types/card/v2/useFilePreview/types.d.ts +18 -0
- package/dist/{types-ts4.5/card/v2 → types/card/v2/useFilePreview}/useFilePreview.d.ts +8 -8
- package/dist/types-ts4.5/card/v2/cardViewV2.d.ts +5 -4
- package/dist/types-ts4.5/card/v2/useFilePreview/errors.d.ts +38 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/getPreview/cache.d.ts +21 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/getPreview/filePreviewStatus.d.ts +4 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/getPreview/getPreview.d.ts +9 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/getPreview/helpers.d.ts +10 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/getPreview/index.d.ts +3 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/getPreview/objectURLCache.d.ts +12 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/getPreview/videoSnapshot.d.ts +1 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/globalScope/getSSRData.d.ts +3 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/globalScope/globalScope.d.ts +15 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/globalScope/index.d.ts +4 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/globalScope/printScript.d.ts +2 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/globalScope/types.d.ts +8 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/helpers.d.ts +11 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/index.d.ts +2 -0
- package/dist/types-ts4.5/card/v2/useFilePreview/types.d.ts +18 -0
- package/dist/{types/card/v2 → types-ts4.5/card/v2/useFilePreview}/useFilePreview.d.ts +8 -8
- package/package.json +1 -1
|
@@ -12,18 +12,12 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
12
12
|
var _mediaClient = require("@atlaskit/media-client");
|
|
13
13
|
var _mediaClientReact = require("@atlaskit/media-client-react");
|
|
14
14
|
var _mediaCommon = require("@atlaskit/media-common");
|
|
15
|
-
var _mediaUi = require("@atlaskit/media-ui");
|
|
16
15
|
var _react = require("react");
|
|
17
|
-
var _errors = require("
|
|
18
|
-
var _analytics = require("
|
|
19
|
-
var
|
|
20
|
-
var
|
|
21
|
-
var
|
|
22
|
-
var _useCurrentValueRef = require("../../utils/useCurrentValueRef");
|
|
23
|
-
var _usePrevious = require("../../utils/usePrevious");
|
|
24
|
-
var _videoSnapshot = require("../../utils/videoSnapshot");
|
|
25
|
-
var _getCardPreview = require("../getCardPreview");
|
|
26
|
-
var _cache = _interopRequireDefault(require("../getCardPreview/cache"));
|
|
16
|
+
var _errors = require("./errors");
|
|
17
|
+
var _analytics = require("../../../utils/analytics");
|
|
18
|
+
var _helpers = require("./helpers");
|
|
19
|
+
var _globalScope = require("./globalScope");
|
|
20
|
+
var _getPreview = require("./getPreview");
|
|
27
21
|
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; }
|
|
28
22
|
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) { (0, _defineProperty2.default)(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; }
|
|
29
23
|
var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
|
|
@@ -56,7 +50,7 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
|
|
|
56
50
|
var wasResolvedUpfrontPreviewRef = (0, _react.useRef)(false);
|
|
57
51
|
var ssrReliabilityRef = (0, _react.useRef)(initialSsrReliability);
|
|
58
52
|
var requestDimensions = (0, _react.useMemo)(function () {
|
|
59
|
-
return dimensions ? createRequestDimensions(dimensions) : undefined;
|
|
53
|
+
return dimensions ? (0, _helpers.createRequestDimensions)(dimensions) : undefined;
|
|
60
54
|
}, [dimensions]);
|
|
61
55
|
var imageURLParams = (0, _react.useMemo)(function () {
|
|
62
56
|
return _objectSpread(_objectSpread({
|
|
@@ -75,7 +69,7 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
|
|
|
75
69
|
}
|
|
76
70
|
if (!(ssrData !== null && ssrData !== void 0 && ssrData.dataURI)) {
|
|
77
71
|
try {
|
|
78
|
-
return (0,
|
|
72
|
+
return (0, _getPreview.getSSRCardPreview)(ssr, mediaClient, identifier.id, imageURLParams, mediaBlobUrlAttrs);
|
|
79
73
|
} catch (e) {
|
|
80
74
|
ssrReliabilityRef.current[ssr] = _objectSpread({
|
|
81
75
|
status: 'fail'
|
|
@@ -95,7 +89,7 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
|
|
|
95
89
|
var cardPreview;
|
|
96
90
|
var id = identifier.id;
|
|
97
91
|
var fileImageMode = (0, _mediaClient.imageResizeModeToFileImageMode)(resizeMode);
|
|
98
|
-
cardPreview =
|
|
92
|
+
cardPreview = _getPreview.mediaFilePreviewCache.get(id, fileImageMode);
|
|
99
93
|
if (!cardPreview && ssr) {
|
|
100
94
|
cardPreview = getSSRPreview(ssr, identifier, mediaClient);
|
|
101
95
|
}
|
|
@@ -119,12 +113,12 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
|
|
|
119
113
|
//---------------------- Helper Functions -----------------------//
|
|
120
114
|
//----------------------------------------------------------------//
|
|
121
115
|
|
|
122
|
-
var fetchRemotePreviewRef = (0,
|
|
123
|
-
return (0,
|
|
116
|
+
var fetchRemotePreviewRef = (0, _helpers.useCurrentValueRef)(function (identifier) {
|
|
117
|
+
return (0, _getPreview.getAndCacheRemotePreview)(mediaClient, identifier.id, requestDimensions || {}, imageURLParams, mediaBlobUrlAttrs, traceContext);
|
|
124
118
|
});
|
|
125
|
-
var resolvePreviewRef = (0,
|
|
119
|
+
var resolvePreviewRef = (0, _helpers.useCurrentValueRef)( /*#__PURE__*/function () {
|
|
126
120
|
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(identifier, fileState) {
|
|
127
|
-
var filePreview, isRemotePreviewReady, mode, cachedPreview, dimensionsAreBigger, localPreview,
|
|
121
|
+
var filePreview, isRemotePreviewReady, mode, cachedPreview, dimensionsAreBigger, localPreview, remotePreview, wrappedError;
|
|
128
122
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
129
123
|
while (1) switch (_context.prev = _context.next) {
|
|
130
124
|
case 0:
|
|
@@ -132,8 +126,8 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
|
|
|
132
126
|
isRemotePreviewReady = (0, _mediaClient.isImageRepresentationReady)(fileState);
|
|
133
127
|
_context.prev = 2;
|
|
134
128
|
mode = imageURLParams.mode;
|
|
135
|
-
cachedPreview =
|
|
136
|
-
dimensionsAreBigger = (0,
|
|
129
|
+
cachedPreview = _getPreview.mediaFilePreviewCache.get(identifier.id, mode);
|
|
130
|
+
dimensionsAreBigger = (0, _helpers.isBigger)(cachedPreview === null || cachedPreview === void 0 ? void 0 : cachedPreview.dimensions, requestDimensions);
|
|
137
131
|
if (!(cachedPreview && !dimensionsAreBigger)) {
|
|
138
132
|
_context.next = 8;
|
|
139
133
|
break;
|
|
@@ -142,127 +136,21 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
|
|
|
142
136
|
case 8:
|
|
143
137
|
_context.prev = 8;
|
|
144
138
|
if (!filePreview) {
|
|
145
|
-
_context.next =
|
|
139
|
+
_context.next = 15;
|
|
146
140
|
break;
|
|
147
141
|
}
|
|
148
|
-
_context.
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
142
|
+
_context.next = 12;
|
|
143
|
+
return (0, _getPreview.getAndCacheLocalPreview)(identifier.id, filePreview, requestDimensions || {}, mode, mediaBlobUrlAttrs);
|
|
144
|
+
case 12:
|
|
145
|
+
localPreview = _context.sent;
|
|
146
|
+
setCardPreview(localPreview);
|
|
147
|
+
return _context.abrupt("return");
|
|
148
|
+
case 15:
|
|
149
|
+
_context.next = 22;
|
|
155
150
|
break;
|
|
156
151
|
case 17:
|
|
157
152
|
_context.prev = 17;
|
|
158
|
-
_context.t0 = _context["catch"](
|
|
159
|
-
throw new _errors.LocalPreviewError('local-preview-rejected', _context.t0 instanceof Error ? _context.t0 : undefined);
|
|
160
|
-
case 20:
|
|
161
|
-
if (!(typeof value === 'string')) {
|
|
162
|
-
_context.next = 24;
|
|
163
|
-
break;
|
|
164
|
-
}
|
|
165
|
-
localPreview = {
|
|
166
|
-
dataURI: value,
|
|
167
|
-
orientation: 1,
|
|
168
|
-
source: 'local'
|
|
169
|
-
};
|
|
170
|
-
_context.next = 57;
|
|
171
|
-
break;
|
|
172
|
-
case 24:
|
|
173
|
-
if (!(value instanceof Blob)) {
|
|
174
|
-
_context.next = 56;
|
|
175
|
-
break;
|
|
176
|
-
}
|
|
177
|
-
_value = value, type = _value.type;
|
|
178
|
-
mediaType = (0, _mediaCommon.getMediaTypeFromMimeType)(type);
|
|
179
|
-
_context.t1 = mediaType;
|
|
180
|
-
_context.next = _context.t1 === 'image' ? 30 : _context.t1 === 'video' ? 42 : 53;
|
|
181
|
-
break;
|
|
182
|
-
case 30:
|
|
183
|
-
_context.prev = 30;
|
|
184
|
-
_context.next = 33;
|
|
185
|
-
return (0, _mediaUi.getOrientation)(value);
|
|
186
|
-
case 33:
|
|
187
|
-
orientation = _context.sent;
|
|
188
|
-
_dataURI = URL.createObjectURL(value);
|
|
189
|
-
localPreview = {
|
|
190
|
-
dataURI: _dataURI,
|
|
191
|
-
orientation: orientation,
|
|
192
|
-
source: 'local'
|
|
193
|
-
};
|
|
194
|
-
_context.next = 41;
|
|
195
|
-
break;
|
|
196
|
-
case 38:
|
|
197
|
-
_context.prev = 38;
|
|
198
|
-
_context.t2 = _context["catch"](30);
|
|
199
|
-
throw new _errors.LocalPreviewError('local-preview-image', _context.t2 instanceof Error ? _context.t2 : undefined);
|
|
200
|
-
case 41:
|
|
201
|
-
return _context.abrupt("break", 54);
|
|
202
|
-
case 42:
|
|
203
|
-
_context.prev = 42;
|
|
204
|
-
_context.next = 45;
|
|
205
|
-
return (0, _videoSnapshot.takeSnapshot)(value);
|
|
206
|
-
case 45:
|
|
207
|
-
_dataURI2 = _context.sent;
|
|
208
|
-
localPreview = {
|
|
209
|
-
dataURI: _dataURI2,
|
|
210
|
-
orientation: 1,
|
|
211
|
-
source: 'local'
|
|
212
|
-
};
|
|
213
|
-
_context.next = 52;
|
|
214
|
-
break;
|
|
215
|
-
case 49:
|
|
216
|
-
_context.prev = 49;
|
|
217
|
-
_context.t3 = _context["catch"](42);
|
|
218
|
-
throw new _errors.LocalPreviewError('local-preview-video', _context.t3 instanceof Error ? _context.t3 : undefined);
|
|
219
|
-
case 52:
|
|
220
|
-
return _context.abrupt("break", 54);
|
|
221
|
-
case 53:
|
|
222
|
-
throw new _errors.LocalPreviewError('local-preview-unsupported');
|
|
223
|
-
case 54:
|
|
224
|
-
_context.next = 57;
|
|
225
|
-
break;
|
|
226
|
-
case 56:
|
|
227
|
-
throw new _errors.LocalPreviewError('local-preview-unsupported');
|
|
228
|
-
case 57:
|
|
229
|
-
preview = _objectSpread(_objectSpread({}, localPreview), {}, {
|
|
230
|
-
dimensions: requestDimensions
|
|
231
|
-
});
|
|
232
|
-
_context.t4 = preview.source;
|
|
233
|
-
_context.next = _context.t4 === 'local' ? 61 : _context.t4 === 'remote' ? 63 : _context.t4 === 'ssr-server' ? 65 : _context.t4 === 'ssr-client' ? 67 : 69;
|
|
234
|
-
break;
|
|
235
|
-
case 61:
|
|
236
|
-
source = 'cache-local';
|
|
237
|
-
return _context.abrupt("break", 70);
|
|
238
|
-
case 63:
|
|
239
|
-
source = 'cache-remote';
|
|
240
|
-
return _context.abrupt("break", 70);
|
|
241
|
-
case 65:
|
|
242
|
-
source = 'cache-ssr-server';
|
|
243
|
-
return _context.abrupt("break", 70);
|
|
244
|
-
case 67:
|
|
245
|
-
source = 'cache-ssr-client';
|
|
246
|
-
return _context.abrupt("break", 70);
|
|
247
|
-
case 69:
|
|
248
|
-
source = preview.source;
|
|
249
|
-
case 70:
|
|
250
|
-
// We want to embed some meta context into dataURI for Copy/Paste to work.
|
|
251
|
-
dataURI = mediaBlobUrlAttrs ? (0, _mediaClient.addFileAttrsToUrl)(preview.dataURI, mediaBlobUrlAttrs) : preview.dataURI; // We store new cardPreview into cache
|
|
252
|
-
_cache.default.set(identifier.id, mode, _objectSpread(_objectSpread({}, preview), {}, {
|
|
253
|
-
source: source,
|
|
254
|
-
dataURI: dataURI
|
|
255
|
-
}));
|
|
256
|
-
setCardPreview(_objectSpread(_objectSpread({}, preview), {}, {
|
|
257
|
-
dataURI: dataURI
|
|
258
|
-
}));
|
|
259
|
-
return _context.abrupt("return");
|
|
260
|
-
case 74:
|
|
261
|
-
_context.next = 81;
|
|
262
|
-
break;
|
|
263
|
-
case 76:
|
|
264
|
-
_context.prev = 76;
|
|
265
|
-
_context.t5 = _context["catch"](8);
|
|
153
|
+
_context.t0 = _context["catch"](8);
|
|
266
154
|
/**
|
|
267
155
|
* We report the error if:
|
|
268
156
|
* - local preview is supported and fails
|
|
@@ -273,36 +161,36 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
|
|
|
273
161
|
* i.e. local preview is available and not supported,
|
|
274
162
|
* but we are after the remote preview instead.
|
|
275
163
|
*/
|
|
276
|
-
if (!(0, _errors.isUnsupportedLocalPreviewError)(_context.
|
|
164
|
+
if (!(0, _errors.isUnsupportedLocalPreviewError)(_context.t0) || (0, _errors.isUnsupportedLocalPreviewError)(_context.t0) && !isRemotePreviewReady) {
|
|
277
165
|
// CXP-2723 TODO: We might have to wrap this error in MediaCardError
|
|
278
|
-
setNonCriticalError(_context.
|
|
166
|
+
setNonCriticalError(_context.t0);
|
|
279
167
|
}
|
|
280
168
|
/**
|
|
281
169
|
* No matter the reason why the local preview failed, we break the process
|
|
282
170
|
* if there is no remote preview available
|
|
283
171
|
*/
|
|
284
172
|
if (isRemotePreviewReady) {
|
|
285
|
-
_context.next =
|
|
173
|
+
_context.next = 22;
|
|
286
174
|
break;
|
|
287
175
|
}
|
|
288
|
-
throw _context.
|
|
289
|
-
case
|
|
176
|
+
throw _context.t0;
|
|
177
|
+
case 22:
|
|
290
178
|
if (isRemotePreviewReady) {
|
|
291
|
-
_context.next =
|
|
179
|
+
_context.next = 24;
|
|
292
180
|
break;
|
|
293
181
|
}
|
|
294
|
-
throw new _errors.
|
|
295
|
-
case
|
|
296
|
-
_context.next =
|
|
182
|
+
throw new _errors.MediaFilePreviewError('remote-preview-not-ready');
|
|
183
|
+
case 24:
|
|
184
|
+
_context.next = 26;
|
|
297
185
|
return fetchRemotePreviewRef.current(identifier);
|
|
298
|
-
case
|
|
186
|
+
case 26:
|
|
299
187
|
remotePreview = _context.sent;
|
|
300
188
|
setCardPreview(remotePreview);
|
|
301
189
|
return _context.abrupt("return");
|
|
302
|
-
case
|
|
303
|
-
_context.prev =
|
|
304
|
-
_context.
|
|
305
|
-
wrappedError = (0, _errors.
|
|
190
|
+
case 31:
|
|
191
|
+
_context.prev = 31;
|
|
192
|
+
_context.t1 = _context["catch"](2);
|
|
193
|
+
wrappedError = (0, _errors.ensureMediaFilePreviewError)('preview-fetch', _context.t1); // If remote preview fails, we set status 'error'
|
|
306
194
|
// If local preview fails (i.e, no remote preview available),
|
|
307
195
|
// we can stay in the same status until there is a remote preview available
|
|
308
196
|
// If it's any other error we set status 'error'
|
|
@@ -315,11 +203,11 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
|
|
|
315
203
|
setError(wrappedError);
|
|
316
204
|
}
|
|
317
205
|
}
|
|
318
|
-
case
|
|
206
|
+
case 35:
|
|
319
207
|
case "end":
|
|
320
208
|
return _context.stop();
|
|
321
209
|
}
|
|
322
|
-
}, _callee, null, [[2,
|
|
210
|
+
}, _callee, null, [[2, 31], [8, 17]]);
|
|
323
211
|
}));
|
|
324
212
|
return function (_x, _x2) {
|
|
325
213
|
return _ref2.apply(this, arguments);
|
|
@@ -329,8 +217,8 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
|
|
|
329
217
|
//----------------------------------------------------------------//
|
|
330
218
|
//------------ resolveUpfrontPreview useEffect -------------------//
|
|
331
219
|
//----------------------------------------------------------------//
|
|
332
|
-
var prevCardPreview = (0,
|
|
333
|
-
var requestDimensionsRef = (0,
|
|
220
|
+
var prevCardPreview = (0, _helpers.usePrevious)(cardPreview);
|
|
221
|
+
var requestDimensionsRef = (0, _helpers.useCurrentValueRef)(requestDimensions);
|
|
334
222
|
(0, _react.useEffect)(function () {
|
|
335
223
|
var resolveUpfrontPreview = /*#__PURE__*/function () {
|
|
336
224
|
var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(identifier) {
|
|
@@ -347,7 +235,7 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
|
|
|
347
235
|
return fetchRemotePreviewRef.current(identifier);
|
|
348
236
|
case 5:
|
|
349
237
|
newCardPreview = _context2.sent;
|
|
350
|
-
areValidFetchedDimensions = !(0,
|
|
238
|
+
areValidFetchedDimensions = !(0, _helpers.isBigger)(fetchedDimensions, requestDimensionsRef.current); // If there are new and bigger dimensions in the props, and the upfront preview is still resolving,
|
|
351
239
|
// the fetched preview is no longer valid, and thus, we dismiss it
|
|
352
240
|
if (areValidFetchedDimensions) {
|
|
353
241
|
setCardPreview(newCardPreview);
|
|
@@ -367,7 +255,7 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
|
|
|
367
255
|
return _ref3.apply(this, arguments);
|
|
368
256
|
};
|
|
369
257
|
}();
|
|
370
|
-
var hadSSRCardPreview = ssr === 'client' && !!prevCardPreview && (0,
|
|
258
|
+
var hadSSRCardPreview = ssr === 'client' && !!prevCardPreview && (0, _getPreview.isSSRClientPreview)(prevCardPreview);
|
|
371
259
|
|
|
372
260
|
// CXP-2723 TODO: `hadSSRCardPreview` is most likely redundant
|
|
373
261
|
if (!wasResolvedUpfrontPreviewRef.current && (!skipRemote || hadSSRCardPreview) && !cardPreview) {
|
|
@@ -379,14 +267,14 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
|
|
|
379
267
|
//---------------- fetch and resolve card preview ----------------//
|
|
380
268
|
//----------------------------------------------------------------//
|
|
381
269
|
|
|
382
|
-
var prevRequestDimensions = (0,
|
|
270
|
+
var prevRequestDimensions = (0, _helpers.usePrevious)(requestDimensions);
|
|
383
271
|
(0, _react.useEffect)(function () {
|
|
384
272
|
// CXP-2813 TODO: This is called too many times if the refetch failed. Should be called only once
|
|
385
|
-
if (cardPreview && !skipRemote && (0,
|
|
273
|
+
if (cardPreview && !skipRemote && (0, _getPreview.isSSRDataPreview)(cardPreview) && (0, _helpers.isBigger)(cardPreview.dimensions, requestDimensions)) {
|
|
386
274
|
// refetchSRRPreview: If dimensions from Server have changed and are bigger,
|
|
387
275
|
// we need to refetch
|
|
388
276
|
fetchRemotePreviewRef.current(identifier).then(setCardPreview).catch(function (e) {
|
|
389
|
-
var wrappedError = (0, _errors.
|
|
277
|
+
var wrappedError = (0, _errors.ensureMediaFilePreviewError)('remote-preview-fetch-ssr', e, true);
|
|
390
278
|
setNonCriticalError(wrappedError);
|
|
391
279
|
});
|
|
392
280
|
}
|
|
@@ -394,18 +282,10 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
|
|
|
394
282
|
// Both compare dimensions, but the above is only for SSR in order to refetchSRRPreview and
|
|
395
283
|
// will swallow any errors. Below logic only applies when there is no card preview or the dimensions
|
|
396
284
|
// are bigger.
|
|
397
|
-
if (fileState && (0,
|
|
398
|
-
status: status,
|
|
399
|
-
fileState: fileState,
|
|
400
|
-
prevDimensions: prevRequestDimensions,
|
|
401
|
-
dimensions: requestDimensions,
|
|
402
|
-
hasCardPreview: !!cardPreview,
|
|
403
|
-
isBannedLocalPreview: isBannedLocalPreview,
|
|
404
|
-
wasResolvedUpfrontPreview: wasResolvedUpfrontPreviewRef.current
|
|
405
|
-
})) {
|
|
285
|
+
if (fileState && wasResolvedUpfrontPreviewRef.current && (0, _getPreview.isPreviewableStatus)(status, (0, _getPreview.extractFilePreviewStatus)(fileState, isBannedLocalPreview)) && (!cardPreview || (0, _helpers.isBigger)(prevRequestDimensions, requestDimensions))) {
|
|
406
286
|
resolvePreviewRef.current(identifier, fileState);
|
|
407
287
|
}
|
|
408
|
-
if (!skipRemote && ssr && !!cardPreview && (0,
|
|
288
|
+
if (!skipRemote && ssr && !!cardPreview && (0, _getPreview.isSSRClientPreview)(cardPreview)) {
|
|
409
289
|
// Since the SSR preview brings the token in the query params,
|
|
410
290
|
// We need to fetch the remote preview to be able to cache it,
|
|
411
291
|
fetchRemotePreviewRef.current(identifier).catch(function () {
|
|
@@ -437,7 +317,7 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
|
|
|
437
317
|
//------------------ Subscribe to file state ---------------------//
|
|
438
318
|
//----------------------------------------------------------------//
|
|
439
319
|
|
|
440
|
-
var updateFileStateRef = (0,
|
|
320
|
+
var updateFileStateRef = (0, _helpers.useCurrentValueRef)(function () {
|
|
441
321
|
if (fileState) {
|
|
442
322
|
// do not update the card status if the status is final
|
|
443
323
|
if (['complete', 'error', 'failed-processing'].includes(status)) {
|
|
@@ -472,7 +352,7 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
|
|
|
472
352
|
} else {
|
|
473
353
|
var e = new _mediaClientReact.MediaFileStateError(fileState.id, fileState.reason, fileState.message, fileState.details);
|
|
474
354
|
var errorReason = status === 'uploading' ? 'upload' : 'metadata-fetch';
|
|
475
|
-
setError(new _errors.
|
|
355
|
+
setError(new _errors.MediaFilePreviewError(errorReason, e));
|
|
476
356
|
setStatus('error');
|
|
477
357
|
}
|
|
478
358
|
}
|
|
@@ -485,7 +365,7 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
|
|
|
485
365
|
var failedSSRObject = _objectSpread({
|
|
486
366
|
status: 'fail'
|
|
487
367
|
}, (0, _analytics.extractErrorInfo)(new _errors.ImageLoadError(newCardPreview.source)));
|
|
488
|
-
if ((0,
|
|
368
|
+
if ((0, _getPreview.isSSRClientPreview)(newCardPreview)) {
|
|
489
369
|
ssrReliabilityRef.current.client = failedSSRObject;
|
|
490
370
|
}
|
|
491
371
|
|
|
@@ -493,7 +373,7 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
|
|
|
493
373
|
If the cardPreview failed and it comes from server (global scope / ssrData), it means that we have reused it in client and the error counts for both: server & client.
|
|
494
374
|
*/
|
|
495
375
|
|
|
496
|
-
if ((0,
|
|
376
|
+
if ((0, _getPreview.isSSRDataPreview)(newCardPreview)) {
|
|
497
377
|
ssrReliabilityRef.current.server = failedSSRObject;
|
|
498
378
|
ssrReliabilityRef.current.client = failedSSRObject;
|
|
499
379
|
}
|
|
@@ -504,15 +384,15 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
|
|
|
504
384
|
return;
|
|
505
385
|
}
|
|
506
386
|
var error = new _errors.ImageLoadError(newCardPreview === null || newCardPreview === void 0 ? void 0 : newCardPreview.source);
|
|
507
|
-
var isLocal = newCardPreview && (0,
|
|
508
|
-
var isSSR = newCardPreview && ((0,
|
|
387
|
+
var isLocal = newCardPreview && (0, _getPreview.isLocalPreview)(newCardPreview);
|
|
388
|
+
var isSSR = newCardPreview && ((0, _getPreview.isSSRClientPreview)(newCardPreview) || (0, _getPreview.isSSRDataPreview)(newCardPreview));
|
|
509
389
|
if (isLocal || isSSR) {
|
|
510
390
|
if (isLocal) {
|
|
511
391
|
setIsBannedLocalPreview(true);
|
|
512
392
|
setNonCriticalError(error);
|
|
513
393
|
}
|
|
514
394
|
var fileImageMode = (0, _mediaClient.imageResizeModeToFileImageMode)(resizeMode);
|
|
515
|
-
|
|
395
|
+
_getPreview.mediaFilePreviewCache.remove(identifier.id, fileImageMode);
|
|
516
396
|
setCardPreview(undefined);
|
|
517
397
|
} else {
|
|
518
398
|
if (!['complete', 'error', 'failed-processing'].includes(status)) {
|
|
@@ -523,7 +403,7 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
|
|
|
523
403
|
};
|
|
524
404
|
var onImageLoad = function onImageLoad(newCardPreview) {
|
|
525
405
|
if (newCardPreview) {
|
|
526
|
-
if ((0,
|
|
406
|
+
if ((0, _getPreview.isSSRClientPreview)(newCardPreview) && ssrReliabilityRef.current.client.status === 'unknown') {
|
|
527
407
|
ssrReliabilityRef.current.client = {
|
|
528
408
|
status: 'success'
|
|
529
409
|
};
|
|
@@ -533,7 +413,7 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
|
|
|
533
413
|
If the image loads successfully and it comes from server (global scope / ssrData), it means that we have reused it in client and the success counts for both: server & client.
|
|
534
414
|
*/
|
|
535
415
|
|
|
536
|
-
if ((0,
|
|
416
|
+
if ((0, _getPreview.isSSRDataPreview)(newCardPreview) && ssrReliabilityRef.current.server.status === 'unknown') {
|
|
537
417
|
ssrReliabilityRef.current.server = {
|
|
538
418
|
status: 'success'
|
|
539
419
|
};
|
|
@@ -571,22 +451,6 @@ var useFilePreview = exports.useFilePreview = function useFilePreview(_ref) {
|
|
|
571
451
|
getScriptProps: getScriptProps
|
|
572
452
|
};
|
|
573
453
|
};
|
|
574
|
-
var createRequestDimensions = function createRequestDimensions(dimensions) {
|
|
575
|
-
if (!dimensions) {
|
|
576
|
-
return;
|
|
577
|
-
}
|
|
578
|
-
var retinaFactor = (0, _isRetina.isRetina)() ? 2 : 1;
|
|
579
|
-
var width = dimensions.width,
|
|
580
|
-
height = dimensions.height;
|
|
581
|
-
var result = {};
|
|
582
|
-
if (width) {
|
|
583
|
-
result.width = width * retinaFactor;
|
|
584
|
-
}
|
|
585
|
-
if (height) {
|
|
586
|
-
result.height = height * retinaFactor;
|
|
587
|
-
}
|
|
588
|
-
return result;
|
|
589
|
-
};
|
|
590
454
|
var initialSsrReliability = {
|
|
591
455
|
server: {
|
|
592
456
|
status: 'unknown'
|
|
@@ -119,7 +119,7 @@ var MediaInlineCardLoader = exports.default = /*#__PURE__*/function (_React$Pure
|
|
|
119
119
|
ErrorBoundary = _this$state.ErrorBoundary;
|
|
120
120
|
var analyticsContext = {
|
|
121
121
|
packageVersion: "@atlaskit/media-card",
|
|
122
|
-
packageName: "77.5.
|
|
122
|
+
packageName: "77.5.1",
|
|
123
123
|
componentName: 'mediaInlineCard',
|
|
124
124
|
component: 'mediaInlineCard'
|
|
125
125
|
};
|
|
@@ -14,7 +14,7 @@ var _mediaClient = require("@atlaskit/media-client");
|
|
|
14
14
|
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; }
|
|
15
15
|
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) { (0, _defineProperty2.default)(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; }
|
|
16
16
|
var packageName = "@atlaskit/media-card";
|
|
17
|
-
var packageVersion = "77.5.
|
|
17
|
+
var packageVersion = "77.5.1";
|
|
18
18
|
var concurrentExperience;
|
|
19
19
|
var getExperience = function getExperience(id) {
|
|
20
20
|
if (!concurrentExperience) {
|
package/dist/es2019/card/card.js
CHANGED
|
@@ -27,7 +27,7 @@ import { getMediaCardCursor } from '../utils/getMediaCardCursor';
|
|
|
27
27
|
import { completeUfoExperience, startUfoExperience, abortUfoExperience } from '../utils/ufoExperiences';
|
|
28
28
|
import { generateUniqueId } from '../utils/generateUniqueId';
|
|
29
29
|
const packageName = "@atlaskit/media-card";
|
|
30
|
-
const packageVersion = "77.5.
|
|
30
|
+
const packageVersion = "77.5.1";
|
|
31
31
|
export class CardBase extends Component {
|
|
32
32
|
constructor(props) {
|
|
33
33
|
super(props);
|
|
@@ -66,7 +66,7 @@ class WrappedMediaCardAnalyticsErrorBoundary extends React.Component {
|
|
|
66
66
|
}
|
|
67
67
|
_defineProperty(WrappedMediaCardAnalyticsErrorBoundary, "displayName", 'MediaCardAnalyticsErrorBoundary');
|
|
68
68
|
const packageName = "@atlaskit/media-card";
|
|
69
|
-
const packageVersion = "77.5.
|
|
69
|
+
const packageVersion = "77.5.1";
|
|
70
70
|
const MediaCardAnalyticsErrorBoundary = withMediaAnalyticsContext({
|
|
71
71
|
packageVersion,
|
|
72
72
|
packageName,
|
|
@@ -7,7 +7,7 @@ import { IntlProvider, injectIntl } from 'react-intl-next';
|
|
|
7
7
|
import { ExternalImageCard } from './externalImageCard';
|
|
8
8
|
import { FileCard } from './fileCard';
|
|
9
9
|
const packageName = "@atlaskit/media-card";
|
|
10
|
-
const packageVersion = "77.5.
|
|
10
|
+
const packageVersion = "77.5.1";
|
|
11
11
|
export const CardV2Base = ({
|
|
12
12
|
identifier,
|
|
13
13
|
...otherProps
|
|
@@ -69,18 +69,19 @@ export const CardViewV2Base = ({
|
|
|
69
69
|
if (prevCardPreview.dataURI !== (cardPreview === null || cardPreview === void 0 ? void 0 : cardPreview.dataURI)) {
|
|
70
70
|
return;
|
|
71
71
|
}
|
|
72
|
-
|
|
73
72
|
/*
|
|
74
73
|
We render the icon & icon message always, even if there is cardPreview available.
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
74
|
+
If the image fails to load/render, the icon will remain, i.e. the user won't see a change until the root card decides to chage status to error.
|
|
75
|
+
If the image renders successfully, we switch this variable to hide the icon & icon message behind the thumbnail in case the image has transparency.
|
|
76
|
+
It is less likely that root component replaces a suceeded cardPreview for a failed one than the opposite case. Therefore we prefer to hide the icon instead show when the image fails, for a smoother transition
|
|
78
77
|
*/
|
|
79
|
-
|
|
80
78
|
setDidImageRender(true);
|
|
81
79
|
onImageLoad === null || onImageLoad === void 0 ? void 0 : onImageLoad(cardPreview);
|
|
82
80
|
};
|
|
83
|
-
const handleOnImageError =
|
|
81
|
+
const handleOnImageError = prevCardPreview => {
|
|
82
|
+
if (prevCardPreview.dataURI !== (cardPreview === null || cardPreview === void 0 ? void 0 : cardPreview.dataURI)) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
84
85
|
setDidImageRender(false);
|
|
85
86
|
onImageError === null || onImageError === void 0 ? void 0 : onImageError(cardPreview);
|
|
86
87
|
};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Primary reason is logged through Data Portal.
|
|
3
|
+
* Make sure all the values are whitelisted in Measure -> Event Regitry -> "mediaCardRender failed" event
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export class MediaFilePreviewError extends Error {
|
|
7
|
+
constructor(primaryReason, secondaryError) {
|
|
8
|
+
super(primaryReason);
|
|
9
|
+
// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#support-for-newtarget
|
|
10
|
+
this.primaryReason = primaryReason;
|
|
11
|
+
this.secondaryError = secondaryError;
|
|
12
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
13
|
+
|
|
14
|
+
// https://v8.dev/docs/stack-trace-api
|
|
15
|
+
if ('captureStackTrace' in Error) {
|
|
16
|
+
Error.captureStackTrace(this, new.target);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export class LocalPreviewError extends MediaFilePreviewError {
|
|
21
|
+
constructor(primaryReason, secondaryError) {
|
|
22
|
+
super(primaryReason, secondaryError);
|
|
23
|
+
this.primaryReason = primaryReason;
|
|
24
|
+
this.secondaryError = secondaryError;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export class RemotePreviewError extends MediaFilePreviewError {
|
|
28
|
+
constructor(primaryReason, secondaryError) {
|
|
29
|
+
super(primaryReason, secondaryError);
|
|
30
|
+
this.primaryReason = primaryReason;
|
|
31
|
+
this.secondaryError = secondaryError;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export class SsrPreviewError extends MediaFilePreviewError {
|
|
35
|
+
constructor(primaryReason, secondaryError) {
|
|
36
|
+
super(primaryReason, secondaryError);
|
|
37
|
+
this.primaryReason = primaryReason;
|
|
38
|
+
this.secondaryError = secondaryError;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const getImageLoadPrimaryReason = source => {
|
|
42
|
+
switch (source) {
|
|
43
|
+
case 'cache-remote':
|
|
44
|
+
return 'cache-remote-uri';
|
|
45
|
+
case 'cache-local':
|
|
46
|
+
return 'cache-local-uri';
|
|
47
|
+
case 'external':
|
|
48
|
+
return 'external-uri';
|
|
49
|
+
case 'local':
|
|
50
|
+
return 'local-uri';
|
|
51
|
+
case 'remote':
|
|
52
|
+
return 'remote-uri';
|
|
53
|
+
// This fail reason will come from a bug, most likely.
|
|
54
|
+
default:
|
|
55
|
+
return `unknown-uri`;
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
export class ImageLoadError extends MediaFilePreviewError {
|
|
59
|
+
constructor(source) {
|
|
60
|
+
super(getImageLoadPrimaryReason(source));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export function isMediaFilePreviewError(err) {
|
|
64
|
+
return err instanceof MediaFilePreviewError;
|
|
65
|
+
}
|
|
66
|
+
export const isLocalPreviewError = err => err instanceof LocalPreviewError;
|
|
67
|
+
export const isRemotePreviewError = err => err instanceof RemotePreviewError;
|
|
68
|
+
export const isUnsupportedLocalPreviewError = err => isMediaFilePreviewError(err) && err.primaryReason === 'local-preview-unsupported';
|
|
69
|
+
|
|
70
|
+
// In a try/catch statement, the error caught is the type of unknown.
|
|
71
|
+
// We can use this helper to ensure that the error handled is the type of MediaFilePreviewError if unsure
|
|
72
|
+
// If updatePrimaryReason is true, if it's a MediaFilePreviewError already, it will update it's primary reason
|
|
73
|
+
export const ensureMediaFilePreviewError = (primaryReason, error, updatePrimaryReason) => {
|
|
74
|
+
if (isMediaFilePreviewError(error)) {
|
|
75
|
+
if (updatePrimaryReason && error.primaryReason !== primaryReason) {
|
|
76
|
+
return new MediaFilePreviewError(primaryReason, error.secondaryError);
|
|
77
|
+
}
|
|
78
|
+
return error;
|
|
79
|
+
}
|
|
80
|
+
return new MediaFilePreviewError(primaryReason, error);
|
|
81
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import { createObjectURLCache } from './objectURLCache';
|
|
3
|
+
|
|
4
|
+
// Dimensions are used to create a key.
|
|
5
|
+
// Cache is invalidated when different dimensions are provided.
|
|
6
|
+
export const getCacheKey = (id, mode) => {
|
|
7
|
+
const resizeMode = mode || 'crop';
|
|
8
|
+
return [id, resizeMode].join('-');
|
|
9
|
+
};
|
|
10
|
+
export class CardPreviewCacheImpl {
|
|
11
|
+
constructor(previewCache) {
|
|
12
|
+
_defineProperty(this, "get", (id, mode) => {
|
|
13
|
+
const cacheKey = getCacheKey(id, mode);
|
|
14
|
+
return this.previewCache.get(cacheKey);
|
|
15
|
+
});
|
|
16
|
+
_defineProperty(this, "set", (id, mode, cardPreview) => {
|
|
17
|
+
const cacheKey = getCacheKey(id, mode);
|
|
18
|
+
this.previewCache.set(cacheKey, cardPreview);
|
|
19
|
+
});
|
|
20
|
+
_defineProperty(this, "remove", (id, mode) => {
|
|
21
|
+
const cacheKey = getCacheKey(id, mode);
|
|
22
|
+
this.previewCache.remove(cacheKey);
|
|
23
|
+
});
|
|
24
|
+
_defineProperty(this, "clear", () => {
|
|
25
|
+
this.previewCache.clear();
|
|
26
|
+
});
|
|
27
|
+
this.previewCache = previewCache;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export const mediaFilePreviewCache = new CardPreviewCacheImpl(createObjectURLCache());
|