@strapi/content-releases 0.0.0-experimental.d362bf200f5f9359a4bbd4a549603de5ee1f04ca → 0.0.0-experimental.d5b46d578a5c055b8dcc66939e1b5d540976fafb
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/dist/_chunks/{App-1LckaIGY.js → App-OP70yd5M.js} +210 -224
- package/dist/_chunks/App-OP70yd5M.js.map +1 -0
- package/dist/_chunks/{App-X01LBg5V.mjs → App-x6Tjj3HN.mjs} +202 -216
- package/dist/_chunks/App-x6Tjj3HN.mjs.map +1 -0
- package/dist/_chunks/{PurchaseContentReleases-Clm0iACO.mjs → PurchaseContentReleases-3tRbmbY3.mjs} +2 -2
- package/dist/_chunks/PurchaseContentReleases-3tRbmbY3.mjs.map +1 -0
- package/dist/_chunks/{PurchaseContentReleases-YhAPgpG9.js → PurchaseContentReleases-bpIYXOfu.js} +2 -2
- package/dist/_chunks/PurchaseContentReleases-bpIYXOfu.js.map +1 -0
- package/dist/_chunks/{en-faJDuv3q.js → en-3SGjiVyR.js} +10 -2
- package/dist/_chunks/en-3SGjiVyR.js.map +1 -0
- package/dist/_chunks/{en-RdapH-9X.mjs → en-bpHsnU0n.mjs} +10 -2
- package/dist/_chunks/en-bpHsnU0n.mjs.map +1 -0
- package/dist/_chunks/{index-OD9AlD-6.mjs → index-1ejXLtzt.mjs} +273 -103
- package/dist/_chunks/index-1ejXLtzt.mjs.map +1 -0
- package/dist/_chunks/{index-cYWov2wa.js → index-ydocdaZ0.js} +270 -100
- package/dist/_chunks/index-ydocdaZ0.js.map +1 -0
- package/dist/admin/index.js +15 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +16 -2
- package/dist/admin/index.mjs.map +1 -1
- package/dist/server/index.js +62 -60
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +62 -61
- package/dist/server/index.mjs.map +1 -1
- package/package.json +28 -21
- package/dist/_chunks/App-1LckaIGY.js.map +0 -1
- package/dist/_chunks/App-X01LBg5V.mjs.map +0 -1
- package/dist/_chunks/PurchaseContentReleases-Clm0iACO.mjs.map +0 -1
- package/dist/_chunks/PurchaseContentReleases-YhAPgpG9.js.map +0 -1
- package/dist/_chunks/en-RdapH-9X.mjs.map +0 -1
- package/dist/_chunks/en-faJDuv3q.js.map +0 -1
- package/dist/_chunks/index-OD9AlD-6.mjs.map +0 -1
- package/dist/_chunks/index-cYWov2wa.js.map +0 -1
- package/dist/admin/src/components/CMReleasesContainer.d.ts +0 -1
- package/dist/admin/src/components/RelativeTime.d.ts +0 -28
- package/dist/admin/src/components/ReleaseActionMenu.d.ts +0 -26
- package/dist/admin/src/components/ReleaseActionOptions.d.ts +0 -9
- package/dist/admin/src/components/ReleaseModal.d.ts +0 -16
- package/dist/admin/src/constants.d.ts +0 -58
- package/dist/admin/src/index.d.ts +0 -3
- package/dist/admin/src/pages/App.d.ts +0 -1
- package/dist/admin/src/pages/PurchaseContentReleases.d.ts +0 -2
- package/dist/admin/src/pages/ReleaseDetailsPage.d.ts +0 -2
- package/dist/admin/src/pages/ReleasesPage.d.ts +0 -8
- package/dist/admin/src/pages/tests/mockReleaseDetailsPageData.d.ts +0 -181
- package/dist/admin/src/pages/tests/mockReleasesPageData.d.ts +0 -39
- package/dist/admin/src/pluginId.d.ts +0 -1
- package/dist/admin/src/services/axios.d.ts +0 -29
- package/dist/admin/src/services/release.d.ts +0 -369
- package/dist/admin/src/store/hooks.d.ts +0 -7
- package/dist/admin/src/utils/prefixPluginTranslations.d.ts +0 -3
- package/dist/admin/src/utils/time.d.ts +0 -1
- package/dist/server/src/bootstrap.d.ts +0 -5
- package/dist/server/src/bootstrap.d.ts.map +0 -1
- package/dist/server/src/constants.d.ts +0 -12
- package/dist/server/src/constants.d.ts.map +0 -1
- package/dist/server/src/content-types/index.d.ts +0 -99
- package/dist/server/src/content-types/index.d.ts.map +0 -1
- package/dist/server/src/content-types/release/index.d.ts +0 -48
- package/dist/server/src/content-types/release/index.d.ts.map +0 -1
- package/dist/server/src/content-types/release/schema.d.ts +0 -47
- package/dist/server/src/content-types/release/schema.d.ts.map +0 -1
- package/dist/server/src/content-types/release-action/index.d.ts +0 -50
- package/dist/server/src/content-types/release-action/index.d.ts.map +0 -1
- package/dist/server/src/content-types/release-action/schema.d.ts +0 -49
- package/dist/server/src/content-types/release-action/schema.d.ts.map +0 -1
- package/dist/server/src/controllers/index.d.ts +0 -19
- package/dist/server/src/controllers/index.d.ts.map +0 -1
- package/dist/server/src/controllers/release-action.d.ts +0 -10
- package/dist/server/src/controllers/release-action.d.ts.map +0 -1
- package/dist/server/src/controllers/release.d.ts +0 -11
- package/dist/server/src/controllers/release.d.ts.map +0 -1
- package/dist/server/src/controllers/validation/release-action.d.ts +0 -8
- package/dist/server/src/controllers/validation/release-action.d.ts.map +0 -1
- package/dist/server/src/controllers/validation/release.d.ts +0 -2
- package/dist/server/src/controllers/validation/release.d.ts.map +0 -1
- package/dist/server/src/destroy.d.ts +0 -5
- package/dist/server/src/destroy.d.ts.map +0 -1
- package/dist/server/src/index.d.ts +0 -2095
- package/dist/server/src/index.d.ts.map +0 -1
- package/dist/server/src/migrations/index.d.ts +0 -13
- package/dist/server/src/migrations/index.d.ts.map +0 -1
- package/dist/server/src/register.d.ts +0 -5
- package/dist/server/src/register.d.ts.map +0 -1
- package/dist/server/src/routes/index.d.ts +0 -35
- package/dist/server/src/routes/index.d.ts.map +0 -1
- package/dist/server/src/routes/release-action.d.ts +0 -18
- package/dist/server/src/routes/release-action.d.ts.map +0 -1
- package/dist/server/src/routes/release.d.ts +0 -18
- package/dist/server/src/routes/release.d.ts.map +0 -1
- package/dist/server/src/services/index.d.ts +0 -1826
- package/dist/server/src/services/index.d.ts.map +0 -1
- package/dist/server/src/services/release.d.ts +0 -66
- package/dist/server/src/services/release.d.ts.map +0 -1
- package/dist/server/src/services/scheduling.d.ts +0 -18
- package/dist/server/src/services/scheduling.d.ts.map +0 -1
- package/dist/server/src/services/validation.d.ts +0 -18
- package/dist/server/src/services/validation.d.ts.map +0 -1
- package/dist/server/src/utils/index.d.ts +0 -14
- package/dist/server/src/utils/index.d.ts.map +0 -1
- package/dist/shared/contracts/release-actions.d.ts +0 -131
- package/dist/shared/contracts/release-actions.d.ts.map +0 -1
- package/dist/shared/contracts/releases.d.ts +0 -166
- package/dist/shared/contracts/releases.d.ts.map +0 -1
- package/dist/shared/types.d.ts +0 -24
- package/dist/shared/types.d.ts.map +0 -1
- package/dist/shared/validation-schemas.d.ts +0 -2
- package/dist/shared/validation-schemas.d.ts.map +0 -1
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
-
const
|
|
4
|
+
const helperPlugin = require("@strapi/helper-plugin");
|
|
5
5
|
const reactRouterDom = require("react-router-dom");
|
|
6
|
-
const index = require("./index-
|
|
6
|
+
const index = require("./index-ydocdaZ0.js");
|
|
7
7
|
const React = require("react");
|
|
8
|
+
const strapiAdmin = require("@strapi/admin/strapi-admin");
|
|
8
9
|
const designSystem = require("@strapi/design-system");
|
|
9
10
|
const v2 = require("@strapi/design-system/v2");
|
|
10
11
|
const icons = require("@strapi/icons");
|
|
@@ -15,7 +16,10 @@ const styled = require("styled-components");
|
|
|
15
16
|
const dateFns = require("date-fns");
|
|
16
17
|
const formik = require("formik");
|
|
17
18
|
const yup = require("yup");
|
|
18
|
-
|
|
19
|
+
require("@reduxjs/toolkit/query");
|
|
20
|
+
require("axios");
|
|
21
|
+
require("@reduxjs/toolkit/query/react");
|
|
22
|
+
require("react-redux");
|
|
19
23
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
20
24
|
function _interopNamespace(e) {
|
|
21
25
|
if (e && e.__esModule)
|
|
@@ -39,36 +43,6 @@ const React__namespace = /* @__PURE__ */ _interopNamespace(React);
|
|
|
39
43
|
const format__default = /* @__PURE__ */ _interopDefault(format);
|
|
40
44
|
const styled__default = /* @__PURE__ */ _interopDefault(styled);
|
|
41
45
|
const yup__namespace = /* @__PURE__ */ _interopNamespace(yup);
|
|
42
|
-
const intervals = ["years", "months", "days", "hours", "minutes", "seconds"];
|
|
43
|
-
const RelativeTime = React__namespace.forwardRef(
|
|
44
|
-
({ timestamp, customIntervals = [], ...restProps }, forwardedRef) => {
|
|
45
|
-
const { formatRelativeTime, formatDate, formatTime } = reactIntl.useIntl();
|
|
46
|
-
const interval = dateFns.intervalToDuration({
|
|
47
|
-
start: timestamp,
|
|
48
|
-
end: Date.now()
|
|
49
|
-
// see https://github.com/date-fns/date-fns/issues/2891 – No idea why it's all partial it returns it every time.
|
|
50
|
-
});
|
|
51
|
-
const unit = intervals.find((intervalUnit) => {
|
|
52
|
-
return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);
|
|
53
|
-
});
|
|
54
|
-
const relativeTime = dateFns.isPast(timestamp) ? -interval[unit] : interval[unit];
|
|
55
|
-
const customInterval = customIntervals.find(
|
|
56
|
-
(custom) => interval[custom.unit] < custom.threshold
|
|
57
|
-
);
|
|
58
|
-
const displayText = customInterval ? customInterval.text : formatRelativeTime(relativeTime, unit, { numeric: "auto" });
|
|
59
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
60
|
-
"time",
|
|
61
|
-
{
|
|
62
|
-
ref: forwardedRef,
|
|
63
|
-
dateTime: timestamp.toISOString(),
|
|
64
|
-
role: "time",
|
|
65
|
-
title: `${formatDate(timestamp)} ${formatTime(timestamp)}`,
|
|
66
|
-
...restProps,
|
|
67
|
-
children: displayText
|
|
68
|
-
}
|
|
69
|
-
);
|
|
70
|
-
}
|
|
71
|
-
);
|
|
72
46
|
const RELEASE_SCHEMA = yup__namespace.object().shape({
|
|
73
47
|
name: yup__namespace.string().trim().required(),
|
|
74
48
|
scheduledAt: yup__namespace.string().nullable(),
|
|
@@ -105,9 +79,8 @@ const ReleaseModal = ({
|
|
|
105
79
|
const { date, time, timezone } = values;
|
|
106
80
|
if (!date || !time || !timezone)
|
|
107
81
|
return null;
|
|
108
|
-
const formattedDate = dateFns.parse(time, "HH:mm", new Date(date));
|
|
109
82
|
const timezoneWithoutOffset = timezone.split("&")[1];
|
|
110
|
-
return dateFnsTz.zonedTimeToUtc(
|
|
83
|
+
return dateFnsTz.zonedTimeToUtc(`${date} ${time}`, timezoneWithoutOffset);
|
|
111
84
|
};
|
|
112
85
|
const getTimezoneWithOffset = () => {
|
|
113
86
|
const currentTimezone = timezoneList.find(
|
|
@@ -307,12 +280,14 @@ const TimezoneComponent = ({ timezoneOptions }) => {
|
|
|
307
280
|
}
|
|
308
281
|
);
|
|
309
282
|
};
|
|
310
|
-
const useTypedDispatch = reactRedux.useDispatch;
|
|
311
283
|
const LinkCard = styled__default.default(v2.Link)`
|
|
312
284
|
display: block;
|
|
313
285
|
`;
|
|
314
|
-
const
|
|
315
|
-
|
|
286
|
+
const RelativeTime = styled__default.default(helperPlugin.RelativeTime)`
|
|
287
|
+
display: inline-block;
|
|
288
|
+
&::first-letter {
|
|
289
|
+
text-transform: uppercase;
|
|
290
|
+
}
|
|
316
291
|
`;
|
|
317
292
|
const getBadgeProps = (status) => {
|
|
318
293
|
let color;
|
|
@@ -342,7 +317,7 @@ const getBadgeProps = (status) => {
|
|
|
342
317
|
const ReleasesGrid = ({ sectionTitle, releases = [], isError = false }) => {
|
|
343
318
|
const { formatMessage } = reactIntl.useIntl();
|
|
344
319
|
if (isError) {
|
|
345
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
320
|
+
return /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.AnErrorOccurred, {});
|
|
346
321
|
}
|
|
347
322
|
if (releases?.length === 0) {
|
|
348
323
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -377,7 +352,7 @@ const ReleasesGrid = ({ sectionTitle, releases = [], isError = false }) => {
|
|
|
377
352
|
children: [
|
|
378
353
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "start", gap: 1, children: [
|
|
379
354
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { as: "h3", variant: "delta", fontWeight: "bold", children: name }),
|
|
380
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: scheduledAt ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
355
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: scheduledAt ? /* @__PURE__ */ jsxRuntime.jsx(RelativeTime, { timestamp: new Date(scheduledAt) }) : formatMessage({
|
|
381
356
|
id: "content-releases.pages.Releases.not-scheduled",
|
|
382
357
|
defaultMessage: "Not scheduled"
|
|
383
358
|
}) })
|
|
@@ -407,26 +382,23 @@ const ReleasesPage = () => {
|
|
|
407
382
|
const tabRef = React__namespace.useRef(null);
|
|
408
383
|
const location = reactRouterDom.useLocation();
|
|
409
384
|
const [releaseModalShown, setReleaseModalShown] = React__namespace.useState(false);
|
|
410
|
-
const
|
|
385
|
+
const toggleNotification = helperPlugin.useNotification();
|
|
411
386
|
const { formatMessage } = reactIntl.useIntl();
|
|
412
|
-
const
|
|
413
|
-
const { formatAPIError } =
|
|
414
|
-
const [{ query }, setQuery] =
|
|
387
|
+
const { push, replace } = reactRouterDom.useHistory();
|
|
388
|
+
const { formatAPIError } = helperPlugin.useAPIErrorHandler();
|
|
389
|
+
const [{ query }, setQuery] = helperPlugin.useQueryParams();
|
|
415
390
|
const response = index.useGetReleasesQuery(query);
|
|
416
391
|
const [createRelease, { isLoading: isSubmittingForm }] = index.useCreateReleaseMutation();
|
|
417
392
|
const { getFeature } = strapiAdmin.useLicenseLimits();
|
|
418
393
|
const { maximumReleases = 3 } = getFeature("cms-content-releases");
|
|
419
|
-
const { trackUsage } =
|
|
420
|
-
const {
|
|
421
|
-
allowedActions: { canCreate }
|
|
422
|
-
} = strapiAdmin.useRBAC(index.PERMISSIONS);
|
|
394
|
+
const { trackUsage } = helperPlugin.useTracking();
|
|
423
395
|
const { isLoading, isSuccess, isError } = response;
|
|
424
396
|
const activeTab = response?.currentData?.meta?.activeTab || "pending";
|
|
425
397
|
const activeTabIndex = ["pending", "done"].indexOf(activeTab);
|
|
426
398
|
React__namespace.useEffect(() => {
|
|
427
399
|
if (location?.state?.errors) {
|
|
428
400
|
toggleNotification({
|
|
429
|
-
type: "
|
|
401
|
+
type: "warning",
|
|
430
402
|
title: formatMessage({
|
|
431
403
|
id: "content-releases.pages.Releases.notification.error.title",
|
|
432
404
|
defaultMessage: "Your request could not be processed."
|
|
@@ -436,9 +408,9 @@ const ReleasesPage = () => {
|
|
|
436
408
|
defaultMessage: "Please try again or open another release."
|
|
437
409
|
})
|
|
438
410
|
});
|
|
439
|
-
|
|
411
|
+
replace({ state: null });
|
|
440
412
|
}
|
|
441
|
-
}, [formatMessage, location?.state?.errors,
|
|
413
|
+
}, [formatMessage, location?.state?.errors, replace, toggleNotification]);
|
|
442
414
|
React__namespace.useEffect(() => {
|
|
443
415
|
if (tabRef.current) {
|
|
444
416
|
tabRef.current._handlers.setSelectedTabIndex(activeTabIndex);
|
|
@@ -448,7 +420,7 @@ const ReleasesPage = () => {
|
|
|
448
420
|
setReleaseModalShown((prev) => !prev);
|
|
449
421
|
};
|
|
450
422
|
if (isLoading) {
|
|
451
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
423
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Main, { "aria-busy": isLoading, children: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.LoadingIndicatorPage, {}) });
|
|
452
424
|
}
|
|
453
425
|
const totalPendingReleases = isSuccess && response.currentData?.meta?.pendingReleasesCount || 0;
|
|
454
426
|
const hasReachedMaximumPendingReleases = totalPendingReleases >= maximumReleases;
|
|
@@ -479,15 +451,15 @@ const ReleasesPage = () => {
|
|
|
479
451
|
})
|
|
480
452
|
});
|
|
481
453
|
trackUsage("didCreateRelease");
|
|
482
|
-
|
|
454
|
+
push(`/plugins/content-releases/${response2.data.data.id}`);
|
|
483
455
|
} else if (index.isAxiosError(response2.error)) {
|
|
484
456
|
toggleNotification({
|
|
485
|
-
type: "
|
|
457
|
+
type: "warning",
|
|
486
458
|
message: formatAPIError(response2.error)
|
|
487
459
|
});
|
|
488
460
|
} else {
|
|
489
461
|
toggleNotification({
|
|
490
|
-
type: "
|
|
462
|
+
type: "warning",
|
|
491
463
|
message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
|
|
492
464
|
});
|
|
493
465
|
}
|
|
@@ -504,7 +476,7 @@ const ReleasesPage = () => {
|
|
|
504
476
|
id: "content-releases.pages.Releases.header-subtitle",
|
|
505
477
|
defaultMessage: "Create and manage content updates"
|
|
506
478
|
}),
|
|
507
|
-
primaryAction:
|
|
479
|
+
primaryAction: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPermissions, { permissions: index.PERMISSIONS.create, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
508
480
|
designSystem.Button,
|
|
509
481
|
{
|
|
510
482
|
startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Plus, {}),
|
|
@@ -515,7 +487,7 @@ const ReleasesPage = () => {
|
|
|
515
487
|
defaultMessage: "New release"
|
|
516
488
|
})
|
|
517
489
|
}
|
|
518
|
-
)
|
|
490
|
+
) })
|
|
519
491
|
}
|
|
520
492
|
),
|
|
521
493
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
@@ -594,17 +566,23 @@ const ReleasesPage = () => {
|
|
|
594
566
|
]
|
|
595
567
|
}
|
|
596
568
|
),
|
|
597
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
569
|
+
response.currentData?.meta?.pagination?.total ? /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { paddingTop: 4, alignItems: "flex-end", justifyContent: "space-between", children: [
|
|
570
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
571
|
+
helperPlugin.PageSizeURLQuery,
|
|
572
|
+
{
|
|
573
|
+
options: ["8", "16", "32", "64"],
|
|
574
|
+
defaultValue: response?.currentData?.meta?.pagination?.pageSize.toString()
|
|
575
|
+
}
|
|
576
|
+
),
|
|
577
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
578
|
+
helperPlugin.PaginationURLQuery,
|
|
579
|
+
{
|
|
580
|
+
pagination: {
|
|
581
|
+
pageCount: response?.currentData?.meta?.pagination?.pageCount || 0
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
)
|
|
585
|
+
] }) : null
|
|
608
586
|
] }) }),
|
|
609
587
|
releaseModalShown && /* @__PURE__ */ jsxRuntime.jsx(
|
|
610
588
|
ReleaseModal,
|
|
@@ -652,18 +630,14 @@ const TrashIcon = styled__default.default(icons.Trash)`
|
|
|
652
630
|
const TypographyMaxWidth = styled__default.default(designSystem.Typography)`
|
|
653
631
|
max-width: 300px;
|
|
654
632
|
`;
|
|
655
|
-
const EntryValidationText = ({ action, schema, entry }) => {
|
|
633
|
+
const EntryValidationText = ({ action, schema, components, entry }) => {
|
|
656
634
|
const { formatMessage } = reactIntl.useIntl();
|
|
657
|
-
const { validate } = strapiAdmin.unstable_useDocument(
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
skip: !schema
|
|
664
|
-
}
|
|
665
|
-
);
|
|
666
|
-
const errors = validate(entry) ?? {};
|
|
635
|
+
const { validate } = strapiAdmin.unstable_useDocument();
|
|
636
|
+
const { errors } = validate(entry, {
|
|
637
|
+
contentType: schema,
|
|
638
|
+
components,
|
|
639
|
+
isCreatingEntry: false
|
|
640
|
+
});
|
|
667
641
|
if (Object.keys(errors).length > 0) {
|
|
668
642
|
const validationErrorsMessages = Object.entries(errors).map(
|
|
669
643
|
([key, value]) => formatMessage(
|
|
@@ -711,22 +685,18 @@ const ReleaseDetailsLayout = ({
|
|
|
711
685
|
isLoading: isLoadingDetails,
|
|
712
686
|
isError,
|
|
713
687
|
error
|
|
714
|
-
} = index.useGetReleaseQuery(
|
|
715
|
-
{ id: releaseId },
|
|
716
|
-
{
|
|
717
|
-
skip: !releaseId
|
|
718
|
-
}
|
|
719
|
-
);
|
|
688
|
+
} = index.useGetReleaseQuery({ id: releaseId });
|
|
720
689
|
const [publishRelease, { isLoading: isPublishing }] = index.usePublishReleaseMutation();
|
|
721
|
-
const
|
|
722
|
-
const { formatAPIError } =
|
|
723
|
-
const {
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
const
|
|
690
|
+
const toggleNotification = helperPlugin.useNotification();
|
|
691
|
+
const { formatAPIError } = helperPlugin.useAPIErrorHandler();
|
|
692
|
+
const {
|
|
693
|
+
allowedActions: { canUpdate, canDelete }
|
|
694
|
+
} = helperPlugin.useRBAC(index.PERMISSIONS);
|
|
695
|
+
const dispatch = index.useTypedDispatch();
|
|
696
|
+
const { trackUsage } = helperPlugin.useTracking();
|
|
727
697
|
const release = data?.data;
|
|
728
|
-
const handlePublishRelease =
|
|
729
|
-
const response = await publishRelease({ id });
|
|
698
|
+
const handlePublishRelease = async () => {
|
|
699
|
+
const response = await publishRelease({ id: releaseId });
|
|
730
700
|
if ("data" in response) {
|
|
731
701
|
toggleNotification({
|
|
732
702
|
type: "success",
|
|
@@ -743,12 +713,12 @@ const ReleaseDetailsLayout = ({
|
|
|
743
713
|
});
|
|
744
714
|
} else if (index.isAxiosError(response.error)) {
|
|
745
715
|
toggleNotification({
|
|
746
|
-
type: "
|
|
716
|
+
type: "warning",
|
|
747
717
|
message: formatAPIError(response.error)
|
|
748
718
|
});
|
|
749
719
|
} else {
|
|
750
720
|
toggleNotification({
|
|
751
|
-
type: "
|
|
721
|
+
type: "warning",
|
|
752
722
|
message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
|
|
753
723
|
});
|
|
754
724
|
}
|
|
@@ -774,19 +744,21 @@ const ReleaseDetailsLayout = ({
|
|
|
774
744
|
return release.createdBy.email;
|
|
775
745
|
};
|
|
776
746
|
if (isLoadingDetails) {
|
|
777
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
747
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Main, { "aria-busy": isLoadingDetails, children: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.LoadingIndicatorPage, {}) });
|
|
778
748
|
}
|
|
779
749
|
if (isError || !release) {
|
|
780
750
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
781
|
-
reactRouterDom.
|
|
751
|
+
reactRouterDom.Redirect,
|
|
782
752
|
{
|
|
783
|
-
to:
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
753
|
+
to: {
|
|
754
|
+
pathname: "/plugins/content-releases",
|
|
755
|
+
state: {
|
|
756
|
+
errors: [
|
|
757
|
+
{
|
|
758
|
+
code: error?.code
|
|
759
|
+
}
|
|
760
|
+
]
|
|
761
|
+
}
|
|
790
762
|
}
|
|
791
763
|
}
|
|
792
764
|
);
|
|
@@ -830,7 +802,10 @@ const ReleaseDetailsLayout = ({
|
|
|
830
802
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral600", variant: "epsilon", children: numberOfEntriesText + (isScheduled ? ` - ${scheduledText}` : "") }),
|
|
831
803
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Badge, { ...getBadgeProps(release.status), children: release.status })
|
|
832
804
|
] }),
|
|
833
|
-
navigationAction: /* @__PURE__ */ jsxRuntime.jsx(
|
|
805
|
+
navigationAction: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Link, { startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.ArrowLeft, {}), to: "/plugins/content-releases", children: formatMessage({
|
|
806
|
+
id: "global.back",
|
|
807
|
+
defaultMessage: "Back"
|
|
808
|
+
}) }),
|
|
834
809
|
primaryAction: !release.releasedAt && /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
|
|
835
810
|
/* @__PURE__ */ jsxRuntime.jsxs(v2.Menu.Root, { children: [
|
|
836
811
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -896,7 +871,7 @@ const ReleaseDetailsLayout = ({
|
|
|
896
871
|
defaultMessage: "Created"
|
|
897
872
|
}) }),
|
|
898
873
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { variant: "pi", color: "neutral300", children: [
|
|
899
|
-
/* @__PURE__ */ jsxRuntime.jsx(RelativeTime, { timestamp: new Date(release.createdAt) }),
|
|
874
|
+
/* @__PURE__ */ jsxRuntime.jsx(helperPlugin.RelativeTime, { timestamp: new Date(release.createdAt) }),
|
|
900
875
|
formatMessage(
|
|
901
876
|
{
|
|
902
877
|
id: "content-releases.header.actions.created.description",
|
|
@@ -914,12 +889,12 @@ const ReleaseDetailsLayout = ({
|
|
|
914
889
|
id: "content-releases.header.actions.refresh",
|
|
915
890
|
defaultMessage: "Refresh"
|
|
916
891
|
}) }),
|
|
917
|
-
|
|
892
|
+
/* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPermissions, { permissions: index.PERMISSIONS.publish, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
918
893
|
designSystem.Button,
|
|
919
894
|
{
|
|
920
895
|
size: "S",
|
|
921
896
|
variant: "default",
|
|
922
|
-
onClick: handlePublishRelease
|
|
897
|
+
onClick: handlePublishRelease,
|
|
923
898
|
loading: isPublishing,
|
|
924
899
|
disabled: release.actions.meta.count === 0,
|
|
925
900
|
children: formatMessage({
|
|
@@ -927,7 +902,7 @@ const ReleaseDetailsLayout = ({
|
|
|
927
902
|
defaultMessage: "Publish"
|
|
928
903
|
})
|
|
929
904
|
}
|
|
930
|
-
)
|
|
905
|
+
) })
|
|
931
906
|
] })
|
|
932
907
|
}
|
|
933
908
|
),
|
|
@@ -953,11 +928,12 @@ const getGroupByOptionLabel = (value) => {
|
|
|
953
928
|
defaultMessage: "Content-Types"
|
|
954
929
|
};
|
|
955
930
|
};
|
|
956
|
-
const ReleaseDetailsBody = (
|
|
931
|
+
const ReleaseDetailsBody = () => {
|
|
957
932
|
const { formatMessage } = reactIntl.useIntl();
|
|
958
|
-
const
|
|
959
|
-
const {
|
|
960
|
-
const
|
|
933
|
+
const { releaseId } = reactRouterDom.useParams();
|
|
934
|
+
const [{ query }, setQuery] = helperPlugin.useQueryParams();
|
|
935
|
+
const toggleNotification = helperPlugin.useNotification();
|
|
936
|
+
const { formatAPIError } = helperPlugin.useAPIErrorHandler();
|
|
961
937
|
const {
|
|
962
938
|
data: releaseData,
|
|
963
939
|
isLoading: isReleaseLoading,
|
|
@@ -966,7 +942,7 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
966
942
|
} = index.useGetReleaseQuery({ id: releaseId });
|
|
967
943
|
const {
|
|
968
944
|
allowedActions: { canUpdate }
|
|
969
|
-
} =
|
|
945
|
+
} = helperPlugin.useRBAC(index.PERMISSIONS);
|
|
970
946
|
const release = releaseData?.data;
|
|
971
947
|
const selectedGroupBy = query?.groupBy || "contentType";
|
|
972
948
|
const {
|
|
@@ -997,19 +973,19 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
997
973
|
if ("error" in response) {
|
|
998
974
|
if (index.isAxiosError(response.error)) {
|
|
999
975
|
toggleNotification({
|
|
1000
|
-
type: "
|
|
976
|
+
type: "warning",
|
|
1001
977
|
message: formatAPIError(response.error)
|
|
1002
978
|
});
|
|
1003
979
|
} else {
|
|
1004
980
|
toggleNotification({
|
|
1005
|
-
type: "
|
|
981
|
+
type: "warning",
|
|
1006
982
|
message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
|
|
1007
983
|
});
|
|
1008
984
|
}
|
|
1009
985
|
}
|
|
1010
986
|
};
|
|
1011
987
|
if (isLoading || isReleaseLoading) {
|
|
1012
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
988
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.LoadingIndicatorPage, {}) });
|
|
1013
989
|
}
|
|
1014
990
|
const releaseActions = data?.data;
|
|
1015
991
|
const releaseMeta = data?.meta;
|
|
@@ -1028,22 +1004,28 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
1028
1004
|
});
|
|
1029
1005
|
}
|
|
1030
1006
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1031
|
-
reactRouterDom.
|
|
1007
|
+
reactRouterDom.Redirect,
|
|
1032
1008
|
{
|
|
1033
|
-
to:
|
|
1034
|
-
|
|
1035
|
-
|
|
1009
|
+
to: {
|
|
1010
|
+
pathname: "/plugins/content-releases",
|
|
1011
|
+
state: {
|
|
1012
|
+
errors: errorsArray
|
|
1013
|
+
}
|
|
1036
1014
|
}
|
|
1037
1015
|
}
|
|
1038
1016
|
);
|
|
1039
1017
|
}
|
|
1040
1018
|
if (isError || !releaseActions) {
|
|
1041
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1019
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.AnErrorOccurred, {}) });
|
|
1042
1020
|
}
|
|
1043
1021
|
if (Object.keys(releaseActions).length === 0) {
|
|
1044
1022
|
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1045
|
-
|
|
1023
|
+
helperPlugin.NoContent,
|
|
1046
1024
|
{
|
|
1025
|
+
content: {
|
|
1026
|
+
id: "content-releases.pages.Details.tab.emptyEntries",
|
|
1027
|
+
defaultMessage: "This release is empty. Open the Content Manager, select an entry and add it to the release."
|
|
1028
|
+
},
|
|
1047
1029
|
action: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1048
1030
|
v2.LinkButton,
|
|
1049
1031
|
{
|
|
@@ -1058,64 +1040,18 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
1058
1040
|
defaultMessage: "Open the Content Manager"
|
|
1059
1041
|
})
|
|
1060
1042
|
}
|
|
1061
|
-
)
|
|
1062
|
-
icon: /* @__PURE__ */ jsxRuntime.jsx(icons.EmptyDocuments, { width: "10rem" }),
|
|
1063
|
-
content: formatMessage({
|
|
1064
|
-
id: "content-releases.pages.Details.tab.emptyEntries",
|
|
1065
|
-
defaultMessage: "This release is empty. Open the Content Manager, select an entry and add it to the release."
|
|
1066
|
-
})
|
|
1043
|
+
)
|
|
1067
1044
|
}
|
|
1068
1045
|
) });
|
|
1069
1046
|
}
|
|
1070
|
-
const groupByLabel = formatMessage({
|
|
1071
|
-
id: "content-releases.pages.ReleaseDetails.groupBy.aria-label",
|
|
1072
|
-
defaultMessage: "Group by"
|
|
1073
|
-
});
|
|
1074
|
-
const headers = [
|
|
1075
|
-
{
|
|
1076
|
-
label: formatMessage({
|
|
1077
|
-
id: "content-releases.page.ReleaseDetails.table.header.label.name",
|
|
1078
|
-
defaultMessage: "name"
|
|
1079
|
-
}),
|
|
1080
|
-
name: "name"
|
|
1081
|
-
},
|
|
1082
|
-
{
|
|
1083
|
-
label: formatMessage({
|
|
1084
|
-
id: "content-releases.page.ReleaseDetails.table.header.label.locale",
|
|
1085
|
-
defaultMessage: "locale"
|
|
1086
|
-
}),
|
|
1087
|
-
name: "locale"
|
|
1088
|
-
},
|
|
1089
|
-
{
|
|
1090
|
-
label: formatMessage({
|
|
1091
|
-
id: "content-releases.page.ReleaseDetails.table.header.label.content-type",
|
|
1092
|
-
defaultMessage: "content-type"
|
|
1093
|
-
}),
|
|
1094
|
-
name: "content-type"
|
|
1095
|
-
},
|
|
1096
|
-
{
|
|
1097
|
-
label: formatMessage({
|
|
1098
|
-
id: "content-releases.page.ReleaseDetails.table.header.label.action",
|
|
1099
|
-
defaultMessage: "action"
|
|
1100
|
-
}),
|
|
1101
|
-
name: "action"
|
|
1102
|
-
},
|
|
1103
|
-
...!release.releasedAt ? [
|
|
1104
|
-
{
|
|
1105
|
-
label: formatMessage({
|
|
1106
|
-
id: "content-releases.page.ReleaseDetails.table.header.label.status",
|
|
1107
|
-
defaultMessage: "status"
|
|
1108
|
-
}),
|
|
1109
|
-
name: "status"
|
|
1110
|
-
}
|
|
1111
|
-
] : []
|
|
1112
|
-
];
|
|
1113
1047
|
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 8, direction: "column", alignItems: "stretch", children: [
|
|
1114
1048
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1115
1049
|
designSystem.SingleSelect,
|
|
1116
1050
|
{
|
|
1117
|
-
|
|
1118
|
-
|
|
1051
|
+
"aria-label": formatMessage({
|
|
1052
|
+
id: "content-releases.pages.ReleaseDetails.groupBy.aria-label",
|
|
1053
|
+
defaultMessage: "Group by"
|
|
1054
|
+
}),
|
|
1119
1055
|
customizeContent: (value) => formatMessage(
|
|
1120
1056
|
{
|
|
1121
1057
|
id: `content-releases.pages.ReleaseDetails.groupBy.label`,
|
|
@@ -1133,18 +1069,75 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
1133
1069
|
Object.keys(releaseActions).map((key) => /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 4, direction: "column", alignItems: "stretch", children: [
|
|
1134
1070
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { role: "separator", "aria-label": key, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Badge, { children: key }) }),
|
|
1135
1071
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1136
|
-
|
|
1072
|
+
helperPlugin.Table.Root,
|
|
1137
1073
|
{
|
|
1138
1074
|
rows: releaseActions[key].map((item) => ({
|
|
1139
1075
|
...item,
|
|
1140
1076
|
id: Number(item.entry.id)
|
|
1141
1077
|
})),
|
|
1142
|
-
|
|
1143
|
-
isLoading
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
/* @__PURE__ */ jsxRuntime.
|
|
1147
|
-
|
|
1078
|
+
colCount: releaseActions[key].length,
|
|
1079
|
+
isLoading,
|
|
1080
|
+
isFetching,
|
|
1081
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(helperPlugin.Table.Content, { children: [
|
|
1082
|
+
/* @__PURE__ */ jsxRuntime.jsxs(helperPlugin.Table.Head, { children: [
|
|
1083
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1084
|
+
helperPlugin.Table.HeaderCell,
|
|
1085
|
+
{
|
|
1086
|
+
fieldSchemaType: "string",
|
|
1087
|
+
label: formatMessage({
|
|
1088
|
+
id: "content-releases.page.ReleaseDetails.table.header.label.name",
|
|
1089
|
+
defaultMessage: "name"
|
|
1090
|
+
}),
|
|
1091
|
+
name: "name"
|
|
1092
|
+
}
|
|
1093
|
+
),
|
|
1094
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1095
|
+
helperPlugin.Table.HeaderCell,
|
|
1096
|
+
{
|
|
1097
|
+
fieldSchemaType: "string",
|
|
1098
|
+
label: formatMessage({
|
|
1099
|
+
id: "content-releases.page.ReleaseDetails.table.header.label.locale",
|
|
1100
|
+
defaultMessage: "locale"
|
|
1101
|
+
}),
|
|
1102
|
+
name: "locale"
|
|
1103
|
+
}
|
|
1104
|
+
),
|
|
1105
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1106
|
+
helperPlugin.Table.HeaderCell,
|
|
1107
|
+
{
|
|
1108
|
+
fieldSchemaType: "string",
|
|
1109
|
+
label: formatMessage({
|
|
1110
|
+
id: "content-releases.page.ReleaseDetails.table.header.label.content-type",
|
|
1111
|
+
defaultMessage: "content-type"
|
|
1112
|
+
}),
|
|
1113
|
+
name: "content-type"
|
|
1114
|
+
}
|
|
1115
|
+
),
|
|
1116
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1117
|
+
helperPlugin.Table.HeaderCell,
|
|
1118
|
+
{
|
|
1119
|
+
fieldSchemaType: "string",
|
|
1120
|
+
label: formatMessage({
|
|
1121
|
+
id: "content-releases.page.ReleaseDetails.table.header.label.action",
|
|
1122
|
+
defaultMessage: "action"
|
|
1123
|
+
}),
|
|
1124
|
+
name: "action"
|
|
1125
|
+
}
|
|
1126
|
+
),
|
|
1127
|
+
!release.releasedAt && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1128
|
+
helperPlugin.Table.HeaderCell,
|
|
1129
|
+
{
|
|
1130
|
+
fieldSchemaType: "string",
|
|
1131
|
+
label: formatMessage({
|
|
1132
|
+
id: "content-releases.page.ReleaseDetails.table.header.label.status",
|
|
1133
|
+
defaultMessage: "status"
|
|
1134
|
+
}),
|
|
1135
|
+
name: "status"
|
|
1136
|
+
}
|
|
1137
|
+
)
|
|
1138
|
+
] }),
|
|
1139
|
+
/* @__PURE__ */ jsxRuntime.jsx(helperPlugin.Table.LoadingBody, {}),
|
|
1140
|
+
/* @__PURE__ */ jsxRuntime.jsx(helperPlugin.Table.Body, { children: releaseActions[key].map(
|
|
1148
1141
|
({ id, contentType, locale, type, entry }, actionIndex) => /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { children: [
|
|
1149
1142
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "25%", maxWidth: "200px", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { ellipsis: true, children: `${contentType.mainFieldValue || entry.id}` }) }),
|
|
1150
1143
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "10%", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: `${locale?.name ? locale.name : "-"}` }) }),
|
|
@@ -1201,39 +1194,34 @@ const ReleaseDetailsBody = ({ releaseId }) => {
|
|
|
1201
1194
|
}
|
|
1202
1195
|
)
|
|
1203
1196
|
] }, `releases-group-${key}`)),
|
|
1204
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
)
|
|
1197
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { paddingTop: 4, alignItems: "flex-end", justifyContent: "space-between", children: [
|
|
1198
|
+
/* @__PURE__ */ jsxRuntime.jsx(helperPlugin.PageSizeURLQuery, { defaultValue: releaseMeta?.pagination?.pageSize.toString() }),
|
|
1199
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1200
|
+
helperPlugin.PaginationURLQuery,
|
|
1201
|
+
{
|
|
1202
|
+
pagination: {
|
|
1203
|
+
pageCount: releaseMeta?.pagination?.pageCount || 0
|
|
1204
|
+
}
|
|
1205
|
+
}
|
|
1206
|
+
)
|
|
1207
|
+
] })
|
|
1215
1208
|
] }) });
|
|
1216
1209
|
};
|
|
1217
1210
|
const ReleaseDetailsPage = () => {
|
|
1218
1211
|
const { formatMessage } = reactIntl.useIntl();
|
|
1219
1212
|
const { releaseId } = reactRouterDom.useParams();
|
|
1220
|
-
const
|
|
1221
|
-
const { formatAPIError } =
|
|
1222
|
-
const
|
|
1213
|
+
const toggleNotification = helperPlugin.useNotification();
|
|
1214
|
+
const { formatAPIError } = helperPlugin.useAPIErrorHandler();
|
|
1215
|
+
const { replace } = reactRouterDom.useHistory();
|
|
1223
1216
|
const [releaseModalShown, setReleaseModalShown] = React__namespace.useState(false);
|
|
1224
1217
|
const [showWarningSubmit, setWarningSubmit] = React__namespace.useState(false);
|
|
1225
1218
|
const {
|
|
1226
1219
|
isLoading: isLoadingDetails,
|
|
1227
1220
|
data,
|
|
1228
1221
|
isSuccess: isSuccessDetails
|
|
1229
|
-
} = index.useGetReleaseQuery(
|
|
1230
|
-
{ id: releaseId },
|
|
1231
|
-
{
|
|
1232
|
-
skip: !releaseId
|
|
1233
|
-
}
|
|
1234
|
-
);
|
|
1222
|
+
} = index.useGetReleaseQuery({ id: releaseId });
|
|
1235
1223
|
const [updateRelease, { isLoading: isSubmittingForm }] = index.useUpdateReleaseMutation();
|
|
1236
|
-
const [deleteRelease] = index.useDeleteReleaseMutation();
|
|
1224
|
+
const [deleteRelease, { isLoading: isDeletingRelease }] = index.useDeleteReleaseMutation();
|
|
1237
1225
|
const toggleEditReleaseModal = () => {
|
|
1238
1226
|
setReleaseModalShown((prev) => !prev);
|
|
1239
1227
|
};
|
|
@@ -1244,18 +1232,15 @@ const ReleaseDetailsPage = () => {
|
|
|
1244
1232
|
{
|
|
1245
1233
|
toggleEditReleaseModal,
|
|
1246
1234
|
toggleWarningSubmit,
|
|
1247
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1235
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.LoadingIndicatorPage, {}) })
|
|
1248
1236
|
}
|
|
1249
1237
|
);
|
|
1250
1238
|
}
|
|
1251
|
-
if (!releaseId) {
|
|
1252
|
-
return /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Navigate, { to: ".." });
|
|
1253
|
-
}
|
|
1254
1239
|
const releaseData = isSuccessDetails && data?.data || null;
|
|
1255
1240
|
const title = releaseData?.name || "";
|
|
1256
1241
|
const timezone = releaseData?.timezone ?? null;
|
|
1257
1242
|
const scheduledAt = releaseData?.scheduledAt && timezone ? dateFnsTz.utcToZonedTime(releaseData.scheduledAt, timezone) : null;
|
|
1258
|
-
const date = scheduledAt ?
|
|
1243
|
+
const date = scheduledAt ? format__default.default(scheduledAt, "yyyy-MM-dd") : null;
|
|
1259
1244
|
const time = scheduledAt ? format__default.default(scheduledAt, "HH:mm") : "";
|
|
1260
1245
|
const handleEditRelease = async (values) => {
|
|
1261
1246
|
const response = await updateRelease({
|
|
@@ -1272,33 +1257,33 @@ const ReleaseDetailsPage = () => {
|
|
|
1272
1257
|
defaultMessage: "Release updated."
|
|
1273
1258
|
})
|
|
1274
1259
|
});
|
|
1260
|
+
toggleEditReleaseModal();
|
|
1275
1261
|
} else if (index.isAxiosError(response.error)) {
|
|
1276
1262
|
toggleNotification({
|
|
1277
|
-
type: "
|
|
1263
|
+
type: "warning",
|
|
1278
1264
|
message: formatAPIError(response.error)
|
|
1279
1265
|
});
|
|
1280
1266
|
} else {
|
|
1281
1267
|
toggleNotification({
|
|
1282
|
-
type: "
|
|
1268
|
+
type: "warning",
|
|
1283
1269
|
message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
|
|
1284
1270
|
});
|
|
1285
1271
|
}
|
|
1286
|
-
toggleEditReleaseModal();
|
|
1287
1272
|
};
|
|
1288
1273
|
const handleDeleteRelease = async () => {
|
|
1289
1274
|
const response = await deleteRelease({
|
|
1290
1275
|
id: releaseId
|
|
1291
1276
|
});
|
|
1292
1277
|
if ("data" in response) {
|
|
1293
|
-
|
|
1278
|
+
replace("/plugins/content-releases");
|
|
1294
1279
|
} else if (index.isAxiosError(response.error)) {
|
|
1295
1280
|
toggleNotification({
|
|
1296
|
-
type: "
|
|
1281
|
+
type: "warning",
|
|
1297
1282
|
message: formatAPIError(response.error)
|
|
1298
1283
|
});
|
|
1299
1284
|
} else {
|
|
1300
1285
|
toggleNotification({
|
|
1301
|
-
type: "
|
|
1286
|
+
type: "warning",
|
|
1302
1287
|
message: formatMessage({ id: "notification.error", defaultMessage: "An error occurred" })
|
|
1303
1288
|
});
|
|
1304
1289
|
}
|
|
@@ -1309,7 +1294,7 @@ const ReleaseDetailsPage = () => {
|
|
|
1309
1294
|
toggleEditReleaseModal,
|
|
1310
1295
|
toggleWarningSubmit,
|
|
1311
1296
|
children: [
|
|
1312
|
-
/* @__PURE__ */ jsxRuntime.jsx(ReleaseDetailsBody, {
|
|
1297
|
+
/* @__PURE__ */ jsxRuntime.jsx(ReleaseDetailsBody, {}),
|
|
1313
1298
|
releaseModalShown && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1314
1299
|
ReleaseModal,
|
|
1315
1300
|
{
|
|
@@ -1327,15 +1312,16 @@ const ReleaseDetailsPage = () => {
|
|
|
1327
1312
|
}
|
|
1328
1313
|
),
|
|
1329
1314
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1330
|
-
|
|
1315
|
+
helperPlugin.ConfirmDialog,
|
|
1331
1316
|
{
|
|
1332
|
-
|
|
1333
|
-
onClose: toggleWarningSubmit,
|
|
1334
|
-
onConfirm: handleDeleteRelease,
|
|
1335
|
-
children: formatMessage({
|
|
1317
|
+
bodyText: {
|
|
1336
1318
|
id: "content-releases.dialog.confirmation-message",
|
|
1337
1319
|
defaultMessage: "Are you sure you want to delete this release?"
|
|
1338
|
-
}
|
|
1320
|
+
},
|
|
1321
|
+
isOpen: showWarningSubmit,
|
|
1322
|
+
isConfirmButtonLoading: isDeletingRelease,
|
|
1323
|
+
onToggleDialog: toggleWarningSubmit,
|
|
1324
|
+
onConfirm: handleDeleteRelease
|
|
1339
1325
|
}
|
|
1340
1326
|
)
|
|
1341
1327
|
]
|
|
@@ -1343,10 +1329,10 @@ const ReleaseDetailsPage = () => {
|
|
|
1343
1329
|
);
|
|
1344
1330
|
};
|
|
1345
1331
|
const App = () => {
|
|
1346
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1347
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, {
|
|
1348
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, {
|
|
1332
|
+
return /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPagePermissions, { permissions: index.PERMISSIONS.main, children: /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Switch, { children: [
|
|
1333
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { exact: true, path: `/plugins/${index.pluginId}`, component: ReleasesPage }),
|
|
1334
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { exact: true, path: `/plugins/${index.pluginId}/:releaseId`, component: ReleaseDetailsPage })
|
|
1349
1335
|
] }) });
|
|
1350
1336
|
};
|
|
1351
1337
|
exports.App = App;
|
|
1352
|
-
//# sourceMappingURL=App-
|
|
1338
|
+
//# sourceMappingURL=App-OP70yd5M.js.map
|