@strapi/content-releases 0.0.0-next.ec9b1b708d4d319f2b8b39d9397bd752d250d541 → 0.0.0-next.ed7c7c54ff46bcd4c15cc57d65066008685aefd4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. package/dist/admin/assets/purchase-page-illustration-dark.svg.js +6 -0
  2. package/dist/admin/assets/purchase-page-illustration-dark.svg.js.map +1 -0
  3. package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs +4 -0
  4. package/dist/admin/assets/purchase-page-illustration-dark.svg.mjs.map +1 -0
  5. package/dist/admin/assets/purchase-page-illustration-light.svg.js +6 -0
  6. package/dist/admin/assets/purchase-page-illustration-light.svg.js.map +1 -0
  7. package/dist/admin/assets/purchase-page-illustration-light.svg.mjs +4 -0
  8. package/dist/admin/assets/purchase-page-illustration-light.svg.mjs.map +1 -0
  9. package/dist/admin/components/EntryValidationPopover.js +344 -0
  10. package/dist/admin/components/EntryValidationPopover.js.map +1 -0
  11. package/dist/admin/components/EntryValidationPopover.mjs +342 -0
  12. package/dist/admin/components/EntryValidationPopover.mjs.map +1 -0
  13. package/dist/admin/components/RelativeTime.js +76 -0
  14. package/dist/admin/components/RelativeTime.js.map +1 -0
  15. package/dist/admin/components/RelativeTime.mjs +55 -0
  16. package/dist/admin/components/RelativeTime.mjs.map +1 -0
  17. package/dist/admin/components/ReleaseAction.js +203 -0
  18. package/dist/admin/components/ReleaseAction.js.map +1 -0
  19. package/dist/admin/components/ReleaseAction.mjs +201 -0
  20. package/dist/admin/components/ReleaseAction.mjs.map +1 -0
  21. package/dist/admin/components/ReleaseActionMenu.js +194 -0
  22. package/dist/admin/components/ReleaseActionMenu.js.map +1 -0
  23. package/dist/admin/components/ReleaseActionMenu.mjs +173 -0
  24. package/dist/admin/components/ReleaseActionMenu.mjs.map +1 -0
  25. package/dist/admin/components/ReleaseActionModal.js +268 -0
  26. package/dist/admin/components/ReleaseActionModal.js.map +1 -0
  27. package/dist/admin/components/ReleaseActionModal.mjs +244 -0
  28. package/dist/admin/components/ReleaseActionModal.mjs.map +1 -0
  29. package/dist/admin/components/ReleaseActionOptions.js +104 -0
  30. package/dist/admin/components/ReleaseActionOptions.js.map +1 -0
  31. package/dist/admin/components/ReleaseActionOptions.mjs +102 -0
  32. package/dist/admin/components/ReleaseActionOptions.mjs.map +1 -0
  33. package/dist/admin/components/ReleaseListCell.js +103 -0
  34. package/dist/admin/components/ReleaseListCell.js.map +1 -0
  35. package/dist/admin/components/ReleaseListCell.mjs +100 -0
  36. package/dist/admin/components/ReleaseListCell.mjs.map +1 -0
  37. package/dist/admin/components/ReleaseModal.js +323 -0
  38. package/dist/admin/components/ReleaseModal.js.map +1 -0
  39. package/dist/admin/components/ReleaseModal.mjs +302 -0
  40. package/dist/admin/components/ReleaseModal.mjs.map +1 -0
  41. package/dist/admin/components/ReleasesPanel.js +138 -0
  42. package/dist/admin/components/ReleasesPanel.js.map +1 -0
  43. package/dist/admin/components/ReleasesPanel.mjs +136 -0
  44. package/dist/admin/components/ReleasesPanel.mjs.map +1 -0
  45. package/dist/admin/constants.js +77 -0
  46. package/dist/admin/constants.js.map +1 -0
  47. package/dist/admin/constants.mjs +75 -0
  48. package/dist/admin/constants.mjs.map +1 -0
  49. package/dist/admin/index.js +125 -4
  50. package/dist/admin/index.js.map +1 -1
  51. package/dist/admin/index.mjs +120 -4
  52. package/dist/admin/index.mjs.map +1 -1
  53. package/dist/admin/modules/hooks.js +8 -0
  54. package/dist/admin/modules/hooks.js.map +1 -0
  55. package/dist/admin/modules/hooks.mjs +6 -0
  56. package/dist/admin/modules/hooks.mjs.map +1 -0
  57. package/dist/admin/pages/App.js +29 -0
  58. package/dist/admin/pages/App.js.map +1 -0
  59. package/dist/admin/pages/App.mjs +27 -0
  60. package/dist/admin/pages/App.mjs.map +1 -0
  61. package/dist/admin/pages/PurchaseContentReleases.js +192 -0
  62. package/dist/admin/pages/PurchaseContentReleases.js.map +1 -0
  63. package/dist/admin/pages/PurchaseContentReleases.mjs +190 -0
  64. package/dist/admin/pages/PurchaseContentReleases.mjs.map +1 -0
  65. package/dist/admin/pages/ReleaseDetailsPage.js +772 -0
  66. package/dist/admin/pages/ReleaseDetailsPage.js.map +1 -0
  67. package/dist/admin/pages/ReleaseDetailsPage.mjs +751 -0
  68. package/dist/admin/pages/ReleaseDetailsPage.mjs.map +1 -0
  69. package/dist/admin/pages/ReleasesPage.js +403 -0
  70. package/dist/admin/pages/ReleasesPage.js.map +1 -0
  71. package/dist/admin/pages/ReleasesPage.mjs +381 -0
  72. package/dist/admin/pages/ReleasesPage.mjs.map +1 -0
  73. package/dist/admin/pages/ReleasesSettingsPage.js +225 -0
  74. package/dist/admin/pages/ReleasesSettingsPage.js.map +1 -0
  75. package/dist/admin/pages/ReleasesSettingsPage.mjs +223 -0
  76. package/dist/admin/pages/ReleasesSettingsPage.mjs.map +1 -0
  77. package/dist/admin/pluginId.js +6 -0
  78. package/dist/admin/pluginId.js.map +1 -0
  79. package/dist/admin/pluginId.mjs +4 -0
  80. package/dist/admin/pluginId.mjs.map +1 -0
  81. package/dist/admin/services/release.js +464 -0
  82. package/dist/admin/services/release.js.map +1 -0
  83. package/dist/admin/services/release.mjs +447 -0
  84. package/dist/admin/services/release.mjs.map +1 -0
  85. package/dist/admin/src/components/ReleaseListCell.d.ts +1 -1
  86. package/dist/admin/store/hooks.js +8 -0
  87. package/dist/admin/store/hooks.js.map +1 -0
  88. package/dist/admin/store/hooks.mjs +6 -0
  89. package/dist/admin/store/hooks.mjs.map +1 -0
  90. package/dist/admin/translations/en.json.js +108 -0
  91. package/dist/admin/translations/en.json.js.map +1 -0
  92. package/dist/admin/translations/en.json.mjs +106 -0
  93. package/dist/admin/translations/en.json.mjs.map +1 -0
  94. package/dist/admin/translations/uk.json.js +103 -0
  95. package/dist/admin/translations/uk.json.js.map +1 -0
  96. package/dist/admin/translations/uk.json.mjs +101 -0
  97. package/dist/admin/translations/uk.json.mjs.map +1 -0
  98. package/dist/admin/utils/api.js +8 -0
  99. package/dist/admin/utils/api.js.map +1 -0
  100. package/dist/admin/utils/api.mjs +6 -0
  101. package/dist/admin/utils/api.mjs.map +1 -0
  102. package/dist/admin/utils/prefixPluginTranslations.js +11 -0
  103. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
  104. package/dist/admin/utils/prefixPluginTranslations.mjs +9 -0
  105. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
  106. package/dist/admin/utils/time.js +42 -0
  107. package/dist/admin/utils/time.js.map +1 -0
  108. package/dist/admin/utils/time.mjs +39 -0
  109. package/dist/admin/utils/time.mjs.map +1 -0
  110. package/dist/admin/validation/schemas.js +65 -0
  111. package/dist/admin/validation/schemas.js.map +1 -0
  112. package/dist/admin/validation/schemas.mjs +43 -0
  113. package/dist/admin/validation/schemas.mjs.map +1 -0
  114. package/dist/server/bootstrap.js +68 -0
  115. package/dist/server/bootstrap.js.map +1 -0
  116. package/dist/server/bootstrap.mjs +66 -0
  117. package/dist/server/bootstrap.mjs.map +1 -0
  118. package/dist/server/constants.js +74 -0
  119. package/dist/server/constants.js.map +1 -0
  120. package/dist/server/constants.mjs +69 -0
  121. package/dist/server/constants.mjs.map +1 -0
  122. package/dist/server/content-types/index.js +12 -0
  123. package/dist/server/content-types/index.js.map +1 -0
  124. package/dist/server/content-types/index.mjs +10 -0
  125. package/dist/server/content-types/index.mjs.map +1 -0
  126. package/dist/server/content-types/release/index.js +10 -0
  127. package/dist/server/content-types/release/index.js.map +1 -0
  128. package/dist/server/content-types/release/index.mjs +8 -0
  129. package/dist/server/content-types/release/index.mjs.map +1 -0
  130. package/dist/server/content-types/release/schema.js +58 -0
  131. package/dist/server/content-types/release/schema.js.map +1 -0
  132. package/dist/server/content-types/release/schema.mjs +56 -0
  133. package/dist/server/content-types/release/schema.mjs.map +1 -0
  134. package/dist/server/content-types/release-action/index.js +10 -0
  135. package/dist/server/content-types/release-action/index.js.map +1 -0
  136. package/dist/server/content-types/release-action/index.mjs +8 -0
  137. package/dist/server/content-types/release-action/index.mjs.map +1 -0
  138. package/dist/server/content-types/release-action/schema.js +55 -0
  139. package/dist/server/content-types/release-action/schema.js.map +1 -0
  140. package/dist/server/content-types/release-action/schema.mjs +53 -0
  141. package/dist/server/content-types/release-action/schema.mjs.map +1 -0
  142. package/dist/server/controllers/index.js +14 -0
  143. package/dist/server/controllers/index.js.map +1 -0
  144. package/dist/server/controllers/index.mjs +12 -0
  145. package/dist/server/controllers/index.mjs.map +1 -0
  146. package/dist/server/controllers/release-action.js +150 -0
  147. package/dist/server/controllers/release-action.js.map +1 -0
  148. package/dist/server/controllers/release-action.mjs +148 -0
  149. package/dist/server/controllers/release-action.mjs.map +1 -0
  150. package/dist/server/controllers/release.js +302 -0
  151. package/dist/server/controllers/release.js.map +1 -0
  152. package/dist/server/controllers/release.mjs +300 -0
  153. package/dist/server/controllers/release.mjs.map +1 -0
  154. package/dist/server/controllers/settings.js +37 -0
  155. package/dist/server/controllers/settings.js.map +1 -0
  156. package/dist/server/controllers/settings.mjs +35 -0
  157. package/dist/server/controllers/settings.mjs.map +1 -0
  158. package/dist/server/controllers/validation/release-action.js +34 -0
  159. package/dist/server/controllers/validation/release-action.js.map +1 -0
  160. package/dist/server/controllers/validation/release-action.mjs +30 -0
  161. package/dist/server/controllers/validation/release-action.mjs.map +1 -0
  162. package/dist/server/controllers/validation/release.js +26 -0
  163. package/dist/server/controllers/validation/release.js.map +1 -0
  164. package/dist/server/controllers/validation/release.mjs +22 -0
  165. package/dist/server/controllers/validation/release.mjs.map +1 -0
  166. package/dist/server/controllers/validation/settings.js +32 -0
  167. package/dist/server/controllers/validation/settings.js.map +1 -0
  168. package/dist/server/controllers/validation/settings.mjs +10 -0
  169. package/dist/server/controllers/validation/settings.mjs.map +1 -0
  170. package/dist/server/destroy.js +15 -0
  171. package/dist/server/destroy.js.map +1 -0
  172. package/dist/server/destroy.mjs +13 -0
  173. package/dist/server/destroy.mjs.map +1 -0
  174. package/dist/server/index.js +25 -2050
  175. package/dist/server/index.js.map +1 -1
  176. package/dist/server/index.mjs +24 -2030
  177. package/dist/server/index.mjs.map +1 -1
  178. package/dist/server/middlewares/documents.js +104 -0
  179. package/dist/server/middlewares/documents.js.map +1 -0
  180. package/dist/server/middlewares/documents.mjs +101 -0
  181. package/dist/server/middlewares/documents.mjs.map +1 -0
  182. package/dist/server/migrations/database/5.0.0-document-id-in-actions.js +51 -0
  183. package/dist/server/migrations/database/5.0.0-document-id-in-actions.js.map +1 -0
  184. package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs +49 -0
  185. package/dist/server/migrations/database/5.0.0-document-id-in-actions.mjs.map +1 -0
  186. package/dist/server/migrations/index.js +205 -0
  187. package/dist/server/migrations/index.js.map +1 -0
  188. package/dist/server/migrations/index.mjs +198 -0
  189. package/dist/server/migrations/index.mjs.map +1 -0
  190. package/dist/server/register.js +23 -0
  191. package/dist/server/register.js.map +1 -0
  192. package/dist/server/register.mjs +21 -0
  193. package/dist/server/register.mjs.map +1 -0
  194. package/dist/server/routes/index.js +14 -0
  195. package/dist/server/routes/index.js.map +1 -0
  196. package/dist/server/routes/index.mjs +12 -0
  197. package/dist/server/routes/index.mjs.map +1 -0
  198. package/dist/server/routes/release-action.js +100 -0
  199. package/dist/server/routes/release-action.js.map +1 -0
  200. package/dist/server/routes/release-action.mjs +98 -0
  201. package/dist/server/routes/release-action.mjs.map +1 -0
  202. package/dist/server/routes/release.js +154 -0
  203. package/dist/server/routes/release.js.map +1 -0
  204. package/dist/server/routes/release.mjs +152 -0
  205. package/dist/server/routes/release.mjs.map +1 -0
  206. package/dist/server/routes/settings.js +46 -0
  207. package/dist/server/routes/settings.js.map +1 -0
  208. package/dist/server/routes/settings.mjs +44 -0
  209. package/dist/server/routes/settings.mjs.map +1 -0
  210. package/dist/server/services/index.js +18 -0
  211. package/dist/server/services/index.js.map +1 -0
  212. package/dist/server/services/index.mjs +16 -0
  213. package/dist/server/services/index.mjs.map +1 -0
  214. package/dist/server/services/release-action.js +324 -0
  215. package/dist/server/services/release-action.js.map +1 -0
  216. package/dist/server/services/release-action.mjs +322 -0
  217. package/dist/server/services/release-action.mjs.map +1 -0
  218. package/dist/server/services/release.js +324 -0
  219. package/dist/server/services/release.js.map +1 -0
  220. package/dist/server/services/release.mjs +322 -0
  221. package/dist/server/services/release.mjs.map +1 -0
  222. package/dist/server/services/scheduling.js +70 -0
  223. package/dist/server/services/scheduling.js.map +1 -0
  224. package/dist/server/services/scheduling.mjs +68 -0
  225. package/dist/server/services/scheduling.mjs.map +1 -0
  226. package/dist/server/services/settings.js +34 -0
  227. package/dist/server/services/settings.js.map +1 -0
  228. package/dist/server/services/settings.mjs +32 -0
  229. package/dist/server/services/settings.mjs.map +1 -0
  230. package/dist/server/services/validation.js +91 -0
  231. package/dist/server/services/validation.js.map +1 -0
  232. package/dist/server/services/validation.mjs +86 -0
  233. package/dist/server/services/validation.mjs.map +1 -0
  234. package/dist/server/src/destroy.d.ts +1 -1
  235. package/dist/server/src/destroy.d.ts.map +1 -1
  236. package/dist/server/src/middlewares/documents.d.ts +1 -1
  237. package/dist/server/src/middlewares/documents.d.ts.map +1 -1
  238. package/dist/server/src/services/release-action.d.ts.map +1 -1
  239. package/dist/server/src/services/scheduling.d.ts +1 -1
  240. package/dist/server/src/services/scheduling.d.ts.map +1 -1
  241. package/dist/server/src/services/validation.d.ts +1 -1
  242. package/dist/server/src/services/validation.d.ts.map +1 -1
  243. package/dist/server/src/utils/index.d.ts.map +1 -1
  244. package/dist/server/utils/index.js +94 -0
  245. package/dist/server/utils/index.js.map +1 -0
  246. package/dist/server/utils/index.mjs +88 -0
  247. package/dist/server/utils/index.mjs.map +1 -0
  248. package/dist/shared/contracts/release-actions.d.ts +0 -1
  249. package/dist/shared/contracts/releases.d.ts +0 -1
  250. package/dist/shared/contracts/settings.d.ts +1 -2
  251. package/dist/shared/contracts/settings.d.ts.map +1 -1
  252. package/dist/shared/types.d.ts +0 -1
  253. package/package.json +18 -16
  254. package/dist/_chunks/App-FQyYFBJT.mjs +0 -1559
  255. package/dist/_chunks/App-FQyYFBJT.mjs.map +0 -1
  256. package/dist/_chunks/App-lx4Ucy9W.js +0 -1580
  257. package/dist/_chunks/App-lx4Ucy9W.js.map +0 -1
  258. package/dist/_chunks/PurchaseContentReleases-Be3acS2L.js +0 -52
  259. package/dist/_chunks/PurchaseContentReleases-Be3acS2L.js.map +0 -1
  260. package/dist/_chunks/PurchaseContentReleases-_MxP6-Dt.mjs +0 -52
  261. package/dist/_chunks/PurchaseContentReleases-_MxP6-Dt.mjs.map +0 -1
  262. package/dist/_chunks/ReleasesSettingsPage-DqBxvJ9i.mjs +0 -178
  263. package/dist/_chunks/ReleasesSettingsPage-DqBxvJ9i.mjs.map +0 -1
  264. package/dist/_chunks/ReleasesSettingsPage-T5VEAV03.js +0 -178
  265. package/dist/_chunks/ReleasesSettingsPage-T5VEAV03.js.map +0 -1
  266. package/dist/_chunks/en-BWPPsSH-.js +0 -102
  267. package/dist/_chunks/en-BWPPsSH-.js.map +0 -1
  268. package/dist/_chunks/en-D9Q4YW03.mjs +0 -102
  269. package/dist/_chunks/en-D9Q4YW03.mjs.map +0 -1
  270. package/dist/_chunks/index-CK9G80CL.mjs +0 -1380
  271. package/dist/_chunks/index-CK9G80CL.mjs.map +0 -1
  272. package/dist/_chunks/index-Cl3tM1YW.js +0 -1399
  273. package/dist/_chunks/index-Cl3tM1YW.js.map +0 -1
  274. package/dist/_chunks/schemas-BE1LxE9J.js +0 -62
  275. package/dist/_chunks/schemas-BE1LxE9J.js.map +0 -1
  276. package/dist/_chunks/schemas-DdA2ic2U.mjs +0 -44
  277. package/dist/_chunks/schemas-DdA2ic2U.mjs.map +0 -1
@@ -0,0 +1,772 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var strapiAdmin = require('@strapi/admin/strapi-admin');
6
+ var designSystem = require('@strapi/design-system');
7
+ var icons = require('@strapi/icons');
8
+ var symbols = require('@strapi/icons/symbols');
9
+ var format = require('date-fns/format');
10
+ var dateFnsTz = require('date-fns-tz');
11
+ var reactIntl = require('react-intl');
12
+ var reactRouterDom = require('react-router-dom');
13
+ var styledComponents = require('styled-components');
14
+ var EntryValidationPopover = require('../components/EntryValidationPopover.js');
15
+ var RelativeTime = require('../components/RelativeTime.js');
16
+ var ReleaseActionMenu = require('../components/ReleaseActionMenu.js');
17
+ var ReleaseActionOptions = require('../components/ReleaseActionOptions.js');
18
+ var ReleaseModal = require('../components/ReleaseModal.js');
19
+ var constants = require('../constants.js');
20
+ var release = require('../services/release.js');
21
+ var hooks = require('../store/hooks.js');
22
+ var api = require('../utils/api.js');
23
+ var time = require('../utils/time.js');
24
+ var ReleasesPage = require('./ReleasesPage.js');
25
+
26
+ function _interopNamespaceDefault(e) {
27
+ var n = Object.create(null);
28
+ if (e) {
29
+ Object.keys(e).forEach(function (k) {
30
+ if (k !== 'default') {
31
+ var d = Object.getOwnPropertyDescriptor(e, k);
32
+ Object.defineProperty(n, k, d.get ? d : {
33
+ enumerable: true,
34
+ get: function () { return e[k]; }
35
+ });
36
+ }
37
+ });
38
+ }
39
+ n.default = e;
40
+ return Object.freeze(n);
41
+ }
42
+
43
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
44
+
45
+ /* -------------------------------------------------------------------------------------------------
46
+ * ReleaseDetailsLayout
47
+ * -----------------------------------------------------------------------------------------------*/ const ReleaseInfoWrapper = styledComponents.styled(designSystem.Flex)`
48
+ align-self: stretch;
49
+ border-bottom-right-radius: ${({ theme })=>theme.borderRadius};
50
+ border-bottom-left-radius: ${({ theme })=>theme.borderRadius};
51
+ border-top: 1px solid ${({ theme })=>theme.colors.neutral150};
52
+ `;
53
+ const ReleaseDetailsLayout = ({ toggleEditReleaseModal, toggleWarningSubmit, children })=>{
54
+ const { formatMessage, formatDate, formatTime } = reactIntl.useIntl();
55
+ const { releaseId } = reactRouterDom.useParams();
56
+ const { data, isLoading: isLoadingDetails, error } = release.useGetReleaseQuery({
57
+ id: releaseId
58
+ }, {
59
+ skip: !releaseId
60
+ });
61
+ const [publishRelease, { isLoading: isPublishing }] = release.usePublishReleaseMutation();
62
+ const { toggleNotification } = strapiAdmin.useNotification();
63
+ const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
64
+ const { allowedActions } = strapiAdmin.useRBAC(constants.PERMISSIONS);
65
+ const { canUpdate, canDelete, canPublish } = allowedActions;
66
+ const dispatch = hooks.useTypedDispatch();
67
+ const { trackUsage } = strapiAdmin.useTracking();
68
+ const release$1 = data?.data;
69
+ const handlePublishRelease = (id)=>async ()=>{
70
+ const response = await publishRelease({
71
+ id
72
+ });
73
+ if ('data' in response) {
74
+ // When the response returns an object with 'data', handle success
75
+ toggleNotification({
76
+ type: 'success',
77
+ message: formatMessage({
78
+ id: 'content-releases.pages.ReleaseDetails.publish-notification-success',
79
+ defaultMessage: 'Release was published successfully.'
80
+ })
81
+ });
82
+ const { totalEntries, totalPublishedEntries, totalUnpublishedEntries } = response.data.meta;
83
+ trackUsage('didPublishRelease', {
84
+ totalEntries,
85
+ totalPublishedEntries,
86
+ totalUnpublishedEntries
87
+ });
88
+ } else if (strapiAdmin.isFetchError(response.error)) {
89
+ // When the response returns an object with 'error', handle fetch error
90
+ toggleNotification({
91
+ type: 'danger',
92
+ message: formatAPIError(response.error)
93
+ });
94
+ } else {
95
+ // Otherwise, the response returns an object with 'error', handle a generic error
96
+ toggleNotification({
97
+ type: 'danger',
98
+ message: formatMessage({
99
+ id: 'notification.error',
100
+ defaultMessage: 'An error occurred'
101
+ })
102
+ });
103
+ }
104
+ };
105
+ const handleRefresh = ()=>{
106
+ dispatch(release.releaseApi.util.invalidateTags([
107
+ {
108
+ type: 'ReleaseAction',
109
+ id: 'LIST'
110
+ },
111
+ {
112
+ type: 'Release',
113
+ id: releaseId
114
+ }
115
+ ]));
116
+ };
117
+ const getCreatedByUser = ()=>{
118
+ if (!release$1?.createdBy) {
119
+ return null;
120
+ }
121
+ // Favor the username
122
+ if (release$1.createdBy.username) {
123
+ return release$1.createdBy.username;
124
+ }
125
+ // Firstname may not exist if created with SSO
126
+ if (release$1.createdBy.firstname) {
127
+ return `${release$1.createdBy.firstname} ${release$1.createdBy.lastname || ''}`.trim();
128
+ }
129
+ // All users must have at least an email
130
+ return release$1.createdBy.email;
131
+ };
132
+ if (isLoadingDetails) {
133
+ return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
134
+ }
135
+ if (api.isBaseQueryError(error) && 'code' in error || !release$1) {
136
+ return /*#__PURE__*/ jsxRuntime.jsx(reactRouterDom.Navigate, {
137
+ to: "..",
138
+ state: {
139
+ errors: [
140
+ {
141
+ // @ts-expect-error – TODO: fix this weird error flow
142
+ code: error?.code
143
+ }
144
+ ]
145
+ }
146
+ });
147
+ }
148
+ const totalEntries = release$1.actions.meta.count || 0;
149
+ const hasCreatedByUser = Boolean(getCreatedByUser());
150
+ const isScheduled = release$1.scheduledAt && release$1.timezone;
151
+ const numberOfEntriesText = formatMessage({
152
+ id: 'content-releases.pages.Details.header-subtitle',
153
+ defaultMessage: '{number, plural, =0 {No entries} one {# entry} other {# entries}}'
154
+ }, {
155
+ number: totalEntries
156
+ });
157
+ const scheduledText = isScheduled ? formatMessage({
158
+ id: 'content-releases.pages.ReleaseDetails.header-subtitle.scheduled',
159
+ defaultMessage: 'Scheduled for {date} at {time} ({offset})'
160
+ }, {
161
+ date: formatDate(new Date(release$1.scheduledAt), {
162
+ weekday: 'long',
163
+ day: 'numeric',
164
+ month: 'long',
165
+ year: 'numeric',
166
+ timeZone: release$1.timezone
167
+ }),
168
+ time: formatTime(new Date(release$1.scheduledAt), {
169
+ timeZone: release$1.timezone,
170
+ hourCycle: 'h23'
171
+ }),
172
+ offset: time.getTimezoneOffset(release$1.timezone, new Date(release$1.scheduledAt))
173
+ }) : '';
174
+ return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Main, {
175
+ "aria-busy": isLoadingDetails,
176
+ children: [
177
+ /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Layouts.Header, {
178
+ title: release$1.name,
179
+ subtitle: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
180
+ gap: 2,
181
+ lineHeight: 6,
182
+ children: [
183
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
184
+ textColor: "neutral600",
185
+ variant: "epsilon",
186
+ children: numberOfEntriesText + (isScheduled ? ` - ${scheduledText}` : '')
187
+ }),
188
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Badge, {
189
+ ...ReleasesPage.getBadgeProps(release$1.status),
190
+ children: release$1.status
191
+ })
192
+ ]
193
+ }),
194
+ navigationAction: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.BackButton, {
195
+ fallback: ".."
196
+ }),
197
+ primaryAction: !release$1.releasedAt && /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
198
+ gap: 2,
199
+ children: [
200
+ /*#__PURE__*/ jsxRuntime.jsxs(SimpleMenuButton, {
201
+ label: /*#__PURE__*/ jsxRuntime.jsx(icons.More, {}),
202
+ variant: "tertiary",
203
+ endIcon: null,
204
+ paddingLeft: "7px",
205
+ paddingRight: "7px",
206
+ "aria-label": formatMessage({
207
+ id: 'content-releases.header.actions.open-release-actions',
208
+ defaultMessage: 'Release edit and delete menu'
209
+ }),
210
+ popoverPlacement: "bottom-end",
211
+ children: [
212
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Menu.Item, {
213
+ disabled: !canUpdate,
214
+ onSelect: toggleEditReleaseModal,
215
+ startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Pencil, {}),
216
+ children: formatMessage({
217
+ id: 'content-releases.header.actions.edit',
218
+ defaultMessage: 'Edit'
219
+ })
220
+ }),
221
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Menu.Item, {
222
+ disabled: !canDelete,
223
+ onSelect: toggleWarningSubmit,
224
+ variant: "danger",
225
+ startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Trash, {}),
226
+ children: formatMessage({
227
+ id: 'content-releases.header.actions.delete',
228
+ defaultMessage: 'Delete'
229
+ })
230
+ }),
231
+ /*#__PURE__*/ jsxRuntime.jsxs(ReleaseInfoWrapper, {
232
+ direction: "column",
233
+ justifyContent: "center",
234
+ alignItems: "flex-start",
235
+ gap: 1,
236
+ padding: 4,
237
+ children: [
238
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
239
+ variant: "pi",
240
+ fontWeight: "bold",
241
+ children: formatMessage({
242
+ id: 'content-releases.header.actions.created',
243
+ defaultMessage: 'Created'
244
+ })
245
+ }),
246
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Typography, {
247
+ variant: "pi",
248
+ color: "neutral300",
249
+ children: [
250
+ /*#__PURE__*/ jsxRuntime.jsx(RelativeTime.RelativeTime, {
251
+ timestamp: new Date(release$1.createdAt)
252
+ }),
253
+ formatMessage({
254
+ id: 'content-releases.header.actions.created.description',
255
+ defaultMessage: '{hasCreatedByUser, select, true { by {createdBy}} other { by deleted user}}'
256
+ }, {
257
+ createdBy: getCreatedByUser(),
258
+ hasCreatedByUser
259
+ })
260
+ ]
261
+ })
262
+ ]
263
+ })
264
+ ]
265
+ }),
266
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
267
+ size: "S",
268
+ variant: "tertiary",
269
+ onClick: handleRefresh,
270
+ children: formatMessage({
271
+ id: 'content-releases.header.actions.refresh',
272
+ defaultMessage: 'Refresh'
273
+ })
274
+ }),
275
+ canPublish ? /*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
276
+ size: "S",
277
+ variant: "default",
278
+ onClick: handlePublishRelease(release$1.id.toString()),
279
+ loading: isPublishing,
280
+ disabled: release$1.actions.meta.count === 0,
281
+ children: formatMessage({
282
+ id: 'content-releases.header.actions.publish',
283
+ defaultMessage: 'Publish'
284
+ })
285
+ }) : null
286
+ ]
287
+ })
288
+ }),
289
+ children
290
+ ]
291
+ });
292
+ };
293
+ const SimpleMenuButton = styledComponents.styled(designSystem.SimpleMenu)`
294
+ & > span {
295
+ display: flex;
296
+ }
297
+ `;
298
+ /* -------------------------------------------------------------------------------------------------
299
+ * ReleaseDetailsBody
300
+ * -----------------------------------------------------------------------------------------------*/ const GROUP_BY_OPTIONS = [
301
+ 'contentType',
302
+ 'locale',
303
+ 'action'
304
+ ];
305
+ const GROUP_BY_OPTIONS_NO_LOCALE = [
306
+ 'contentType',
307
+ 'action'
308
+ ];
309
+ const getGroupByOptionLabel = (value)=>{
310
+ if (value === 'locale') {
311
+ return {
312
+ id: 'content-releases.pages.ReleaseDetails.groupBy.option.locales',
313
+ defaultMessage: 'Locales'
314
+ };
315
+ }
316
+ if (value === 'action') {
317
+ return {
318
+ id: 'content-releases.pages.ReleaseDetails.groupBy.option.actions',
319
+ defaultMessage: 'Actions'
320
+ };
321
+ }
322
+ return {
323
+ id: 'content-releases.pages.ReleaseDetails.groupBy.option.content-type',
324
+ defaultMessage: 'Content-Types'
325
+ };
326
+ };
327
+ const ReleaseDetailsBody = ({ releaseId })=>{
328
+ const { formatMessage } = reactIntl.useIntl();
329
+ const [{ query }, setQuery] = strapiAdmin.useQueryParams();
330
+ const { toggleNotification } = strapiAdmin.useNotification();
331
+ const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
332
+ const { data: releaseData, isLoading: isReleaseLoading, error: releaseError } = release.useGetReleaseQuery({
333
+ id: releaseId
334
+ });
335
+ const { allowedActions: { canUpdate } } = strapiAdmin.useRBAC(constants.PERMISSIONS);
336
+ const runHookWaterfall = strapiAdmin.useStrapiApp('ReleaseDetailsPage', (state)=>state.runHookWaterfall);
337
+ // TODO: Migrated displayedHeader to v5
338
+ const { displayedHeaders, hasI18nEnabled } = runHookWaterfall('ContentReleases/pages/ReleaseDetails/add-locale-in-releases', {
339
+ displayedHeaders: [
340
+ {
341
+ label: {
342
+ id: 'content-releases.page.ReleaseDetails.table.header.label.name',
343
+ defaultMessage: 'name'
344
+ },
345
+ name: 'name'
346
+ }
347
+ ],
348
+ hasI18nEnabled: false
349
+ });
350
+ const release$1 = releaseData?.data;
351
+ const selectedGroupBy = query?.groupBy || 'contentType';
352
+ const { isLoading, isFetching, isError, data, error: releaseActionsError } = release.useGetReleaseActionsQuery({
353
+ ...query,
354
+ releaseId
355
+ });
356
+ const [updateReleaseAction] = release.useUpdateReleaseActionMutation();
357
+ const handleChangeType = async (e, actionId, actionPath)=>{
358
+ const response = await updateReleaseAction({
359
+ params: {
360
+ releaseId,
361
+ actionId
362
+ },
363
+ body: {
364
+ type: e.target.value
365
+ },
366
+ query,
367
+ actionPath
368
+ });
369
+ if ('error' in response) {
370
+ if (strapiAdmin.isFetchError(response.error)) {
371
+ // When the response returns an object with 'error', handle fetch error
372
+ toggleNotification({
373
+ type: 'danger',
374
+ message: formatAPIError(response.error)
375
+ });
376
+ } else {
377
+ // Otherwise, the response returns an object with 'error', handle a generic error
378
+ toggleNotification({
379
+ type: 'danger',
380
+ message: formatMessage({
381
+ id: 'notification.error',
382
+ defaultMessage: 'An error occurred'
383
+ })
384
+ });
385
+ }
386
+ }
387
+ };
388
+ if (isLoading || isReleaseLoading) {
389
+ return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
390
+ }
391
+ const releaseActions = data?.data;
392
+ const releaseMeta = data?.meta;
393
+ const contentTypes = releaseMeta?.contentTypes || {};
394
+ releaseMeta?.components || {};
395
+ if (api.isBaseQueryError(releaseError) || !release$1) {
396
+ const errorsArray = [];
397
+ if (releaseError && 'code' in releaseError) {
398
+ errorsArray.push({
399
+ code: releaseError.code
400
+ });
401
+ }
402
+ if (releaseActionsError && 'code' in releaseActionsError) {
403
+ errorsArray.push({
404
+ code: releaseActionsError.code
405
+ });
406
+ }
407
+ return /*#__PURE__*/ jsxRuntime.jsx(reactRouterDom.Navigate, {
408
+ to: "..",
409
+ state: {
410
+ errors: errorsArray
411
+ }
412
+ });
413
+ }
414
+ if (isError || !releaseActions) {
415
+ return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Error, {});
416
+ }
417
+ if (Object.keys(releaseActions).length === 0) {
418
+ return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Layouts.Content, {
419
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.EmptyStateLayout, {
420
+ action: /*#__PURE__*/ jsxRuntime.jsx(designSystem.LinkButton, {
421
+ tag: reactRouterDom.Link,
422
+ to: {
423
+ pathname: '/content-manager'
424
+ },
425
+ style: {
426
+ textDecoration: 'none'
427
+ },
428
+ variant: "secondary",
429
+ children: formatMessage({
430
+ id: 'content-releases.page.Details.button.openContentManager',
431
+ defaultMessage: 'Open the Content Manager'
432
+ })
433
+ }),
434
+ icon: /*#__PURE__*/ jsxRuntime.jsx(symbols.EmptyDocuments, {
435
+ width: "16rem"
436
+ }),
437
+ content: formatMessage({
438
+ id: 'content-releases.pages.Details.tab.emptyEntries',
439
+ defaultMessage: 'This release is empty. Open the Content Manager, select an entry and add it to the release.'
440
+ })
441
+ })
442
+ });
443
+ }
444
+ const groupByLabel = formatMessage({
445
+ id: 'content-releases.pages.ReleaseDetails.groupBy.aria-label',
446
+ defaultMessage: 'Group by'
447
+ });
448
+ const headers = [
449
+ ...displayedHeaders,
450
+ {
451
+ label: {
452
+ id: 'content-releases.page.ReleaseDetails.table.header.label.content-type',
453
+ defaultMessage: 'content-type'
454
+ },
455
+ name: 'content-type'
456
+ },
457
+ {
458
+ label: {
459
+ id: 'content-releases.page.ReleaseDetails.table.header.label.action',
460
+ defaultMessage: 'action'
461
+ },
462
+ name: 'action'
463
+ },
464
+ ...!release$1.releasedAt ? [
465
+ {
466
+ label: {
467
+ id: 'content-releases.page.ReleaseDetails.table.header.label.status',
468
+ defaultMessage: 'status'
469
+ },
470
+ name: 'status'
471
+ }
472
+ ] : []
473
+ ];
474
+ const options = hasI18nEnabled ? GROUP_BY_OPTIONS : GROUP_BY_OPTIONS_NO_LOCALE;
475
+ return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Layouts.Content, {
476
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
477
+ gap: 8,
478
+ direction: "column",
479
+ alignItems: "stretch",
480
+ children: [
481
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
482
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.SingleSelect, {
483
+ placeholder: groupByLabel,
484
+ "aria-label": groupByLabel,
485
+ customizeContent: (value)=>formatMessage({
486
+ id: `content-releases.pages.ReleaseDetails.groupBy.label`,
487
+ defaultMessage: `Group by {groupBy}`
488
+ }, {
489
+ groupBy: value
490
+ }),
491
+ value: formatMessage(getGroupByOptionLabel(selectedGroupBy)),
492
+ onChange: (value)=>setQuery({
493
+ groupBy: value
494
+ }),
495
+ children: options.map((option)=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.SingleSelectOption, {
496
+ value: option,
497
+ children: formatMessage(getGroupByOptionLabel(option))
498
+ }, option))
499
+ })
500
+ }),
501
+ Object.keys(releaseActions).map((key)=>/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
502
+ gap: 4,
503
+ direction: "column",
504
+ alignItems: "stretch",
505
+ children: [
506
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
507
+ role: "separator",
508
+ "aria-label": key,
509
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Badge, {
510
+ children: key
511
+ })
512
+ }),
513
+ /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Table.Root, {
514
+ rows: releaseActions[key].map((item)=>({
515
+ ...item,
516
+ id: Number(item.entry.id)
517
+ })),
518
+ headers: headers,
519
+ isLoading: isLoading || isFetching,
520
+ children: /*#__PURE__*/ jsxRuntime.jsxs(strapiAdmin.Table.Content, {
521
+ children: [
522
+ /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Table.Head, {
523
+ children: headers.map(({ label, name })=>/*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Table.HeaderCell, {
524
+ label: formatMessage(label),
525
+ name: name
526
+ }, name))
527
+ }),
528
+ /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Table.Loading, {}),
529
+ /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Table.Body, {
530
+ children: releaseActions[key].map(({ id, contentType, locale, type, entry, status }, actionIndex)=>/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Tr, {
531
+ children: [
532
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Td, {
533
+ width: "25%",
534
+ maxWidth: "200px",
535
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
536
+ ellipsis: true,
537
+ children: `${contentType.mainFieldValue || entry.id}`
538
+ })
539
+ }),
540
+ hasI18nEnabled && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Td, {
541
+ width: "10%",
542
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
543
+ children: `${locale?.name ? locale.name : '-'}`
544
+ })
545
+ }),
546
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Td, {
547
+ width: "10%",
548
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
549
+ children: contentType.displayName || ''
550
+ })
551
+ }),
552
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Td, {
553
+ width: "20%",
554
+ children: release$1.releasedAt ? /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
555
+ children: formatMessage({
556
+ id: 'content-releases.page.ReleaseDetails.table.action-published',
557
+ defaultMessage: 'This entry was <b>{isPublish, select, true {published} other {unpublished}}</b>.'
558
+ }, {
559
+ isPublish: type === 'publish',
560
+ b: (children)=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
561
+ fontWeight: "bold",
562
+ children: children
563
+ })
564
+ })
565
+ }) : /*#__PURE__*/ jsxRuntime.jsx(ReleaseActionOptions.ReleaseActionOptions, {
566
+ selected: type,
567
+ handleChange: (e)=>handleChangeType(e, id, [
568
+ key,
569
+ actionIndex
570
+ ]),
571
+ name: `release-action-${id}-type`,
572
+ disabled: !canUpdate
573
+ })
574
+ }),
575
+ !release$1.releasedAt && /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
576
+ children: [
577
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Td, {
578
+ width: "20%",
579
+ minWidth: "200px",
580
+ children: /*#__PURE__*/ jsxRuntime.jsx(EntryValidationPopover.EntryValidationPopover, {
581
+ action: type,
582
+ schema: contentTypes?.[contentType.uid],
583
+ entry: entry,
584
+ status: status
585
+ })
586
+ }),
587
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Td, {
588
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
589
+ justifyContent: "flex-end",
590
+ children: /*#__PURE__*/ jsxRuntime.jsxs(ReleaseActionMenu.ReleaseActionMenu.Root, {
591
+ children: [
592
+ /*#__PURE__*/ jsxRuntime.jsx(ReleaseActionMenu.ReleaseActionMenu.ReleaseActionEntryLinkItem, {
593
+ contentTypeUid: contentType.uid,
594
+ documentId: entry.documentId,
595
+ locale: locale?.code
596
+ }),
597
+ /*#__PURE__*/ jsxRuntime.jsx(ReleaseActionMenu.ReleaseActionMenu.DeleteReleaseActionItem, {
598
+ releaseId: release$1.id,
599
+ actionId: id
600
+ })
601
+ ]
602
+ })
603
+ })
604
+ })
605
+ ]
606
+ })
607
+ ]
608
+ }, id))
609
+ })
610
+ ]
611
+ })
612
+ })
613
+ ]
614
+ }, `releases-group-${key}`)),
615
+ /*#__PURE__*/ jsxRuntime.jsxs(strapiAdmin.Pagination.Root, {
616
+ ...releaseMeta?.pagination,
617
+ defaultPageSize: releaseMeta?.pagination?.pageSize,
618
+ children: [
619
+ /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Pagination.PageSize, {}),
620
+ /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Pagination.Links, {})
621
+ ]
622
+ })
623
+ ]
624
+ })
625
+ });
626
+ };
627
+ /* -------------------------------------------------------------------------------------------------
628
+ * ReleaseDetailsPage
629
+ * -----------------------------------------------------------------------------------------------*/ const ReleaseDetailsPage = ()=>{
630
+ const { formatMessage } = reactIntl.useIntl();
631
+ const { releaseId } = reactRouterDom.useParams();
632
+ const { toggleNotification } = strapiAdmin.useNotification();
633
+ const { formatAPIError } = strapiAdmin.useAPIErrorHandler();
634
+ const navigate = reactRouterDom.useNavigate();
635
+ const [releaseModalShown, setReleaseModalShown] = React__namespace.useState(false);
636
+ const [showWarningSubmit, setWarningSubmit] = React__namespace.useState(false);
637
+ const { isLoading: isLoadingDetails, data, isSuccess: isSuccessDetails } = release.useGetReleaseQuery({
638
+ id: releaseId
639
+ }, {
640
+ skip: !releaseId
641
+ });
642
+ const { data: dataTimezone, isLoading: isLoadingTimezone } = release.useGetReleaseSettingsQuery();
643
+ const [updateRelease, { isLoading: isSubmittingForm }] = release.useUpdateReleaseMutation();
644
+ const [deleteRelease] = release.useDeleteReleaseMutation();
645
+ const toggleEditReleaseModal = ()=>{
646
+ setReleaseModalShown((prev)=>!prev);
647
+ };
648
+ const getTimezoneValue = ()=>{
649
+ if (releaseData?.timezone) {
650
+ return releaseData.timezone;
651
+ } else {
652
+ if (dataTimezone?.data.defaultTimezone) {
653
+ return dataTimezone.data.defaultTimezone;
654
+ }
655
+ return null;
656
+ }
657
+ };
658
+ const toggleWarningSubmit = ()=>setWarningSubmit((prevState)=>!prevState);
659
+ if (isLoadingDetails || isLoadingTimezone) {
660
+ return /*#__PURE__*/ jsxRuntime.jsx(ReleaseDetailsLayout, {
661
+ toggleEditReleaseModal: toggleEditReleaseModal,
662
+ toggleWarningSubmit: toggleWarningSubmit,
663
+ children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Loading, {})
664
+ });
665
+ }
666
+ if (!releaseId) {
667
+ return /*#__PURE__*/ jsxRuntime.jsx(reactRouterDom.Navigate, {
668
+ to: ".."
669
+ });
670
+ }
671
+ const releaseData = isSuccessDetails && data?.data || null;
672
+ const title = releaseData?.name || '';
673
+ const timezone = getTimezoneValue();
674
+ const scheduledAt = releaseData?.scheduledAt && timezone ? dateFnsTz.utcToZonedTime(releaseData.scheduledAt, timezone) : null;
675
+ // Just get the date and time to display without considering updated timezone time
676
+ const date = scheduledAt ? format(scheduledAt, 'yyyy-MM-dd') : undefined;
677
+ const time = scheduledAt ? format(scheduledAt, 'HH:mm') : '';
678
+ const handleEditRelease = async (values)=>{
679
+ const response = await updateRelease({
680
+ id: releaseId,
681
+ name: values.name,
682
+ scheduledAt: values.scheduledAt,
683
+ timezone: values.timezone
684
+ });
685
+ if ('data' in response) {
686
+ // When the response returns an object with 'data', handle success
687
+ toggleNotification({
688
+ type: 'success',
689
+ message: formatMessage({
690
+ id: 'content-releases.modal.release-updated-notification-success',
691
+ defaultMessage: 'Release updated.'
692
+ })
693
+ });
694
+ toggleEditReleaseModal();
695
+ } else if (strapiAdmin.isFetchError(response.error)) {
696
+ // When the response returns an object with 'error', handle fetch error
697
+ toggleNotification({
698
+ type: 'danger',
699
+ message: formatAPIError(response.error)
700
+ });
701
+ } else {
702
+ // Otherwise, the response returns an object with 'error', handle a generic error
703
+ toggleNotification({
704
+ type: 'danger',
705
+ message: formatMessage({
706
+ id: 'notification.error',
707
+ defaultMessage: 'An error occurred'
708
+ })
709
+ });
710
+ }
711
+ };
712
+ const handleDeleteRelease = async ()=>{
713
+ const response = await deleteRelease({
714
+ id: releaseId
715
+ });
716
+ if ('data' in response) {
717
+ navigate('..');
718
+ } else if (strapiAdmin.isFetchError(response.error)) {
719
+ // When the response returns an object with 'error', handle fetch error
720
+ toggleNotification({
721
+ type: 'danger',
722
+ message: formatAPIError(response.error)
723
+ });
724
+ } else {
725
+ // Otherwise, the response returns an object with 'error', handle a generic error
726
+ toggleNotification({
727
+ type: 'danger',
728
+ message: formatMessage({
729
+ id: 'notification.error',
730
+ defaultMessage: 'An error occurred'
731
+ })
732
+ });
733
+ }
734
+ };
735
+ return /*#__PURE__*/ jsxRuntime.jsxs(ReleaseDetailsLayout, {
736
+ toggleEditReleaseModal: toggleEditReleaseModal,
737
+ toggleWarningSubmit: toggleWarningSubmit,
738
+ children: [
739
+ /*#__PURE__*/ jsxRuntime.jsx(ReleaseDetailsBody, {
740
+ releaseId: releaseId
741
+ }),
742
+ /*#__PURE__*/ jsxRuntime.jsx(ReleaseModal.ReleaseModal, {
743
+ open: releaseModalShown,
744
+ handleClose: toggleEditReleaseModal,
745
+ handleSubmit: handleEditRelease,
746
+ isLoading: isLoadingDetails || isSubmittingForm,
747
+ initialValues: {
748
+ name: title || '',
749
+ scheduledAt,
750
+ date,
751
+ time,
752
+ isScheduled: Boolean(scheduledAt),
753
+ timezone
754
+ }
755
+ }),
756
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Dialog.Root, {
757
+ open: showWarningSubmit,
758
+ onOpenChange: toggleWarningSubmit,
759
+ children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.ConfirmDialog, {
760
+ onConfirm: handleDeleteRelease,
761
+ children: formatMessage({
762
+ id: 'content-releases.dialog.confirmation-message',
763
+ defaultMessage: 'Are you sure you want to delete this release?'
764
+ })
765
+ })
766
+ })
767
+ ]
768
+ });
769
+ };
770
+
771
+ exports.ReleaseDetailsPage = ReleaseDetailsPage;
772
+ //# sourceMappingURL=ReleaseDetailsPage.js.map