{"version":3,"file":"ReleaseDetailsPage.mjs","sources":["../../../admin/src/pages/ReleaseDetailsPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n  Page,\n  Pagination,\n  Table,\n  BackButton,\n  ConfirmDialog,\n  useTracking,\n  useAPIErrorHandler,\n  useNotification,\n  useQueryParams,\n  useRBAC,\n  isFetchError,\n  useStrapiApp,\n  Layouts,\n} from '@strapi/admin/strapi-admin';\nimport {\n  Button,\n  Flex,\n  Main,\n  Tr,\n  Td,\n  Typography,\n  Badge,\n  SingleSelect,\n  SingleSelectOption,\n  EmptyStateLayout,\n  LinkButton,\n  Dialog,\n  SimpleMenu,\n  Menu,\n} from '@strapi/design-system';\nimport { More, Pencil, Trash } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport format from 'date-fns/format';\nimport { utcToZonedTime } from 'date-fns-tz';\nimport { useIntl } from 'react-intl';\nimport { useParams, useNavigate, Link as ReactRouterLink, Navigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { EntryValidationPopover } from '../components/EntryValidationPopover';\nimport { RelativeTime } from '../components/RelativeTime';\nimport { ReleaseActionMenu } from '../components/ReleaseActionMenu';\nimport { ReleaseActionOptions } from '../components/ReleaseActionOptions';\nimport { ReleaseModal, FormValues } from '../components/ReleaseModal';\nimport { PERMISSIONS } from '../constants';\nimport {\n  GetReleaseActionsQueryParams,\n  useGetReleaseActionsQuery,\n  useGetReleaseQuery,\n  useGetReleaseSettingsQuery,\n  useUpdateReleaseMutation,\n  useUpdateReleaseActionMutation,\n  usePublishReleaseMutation,\n  useDeleteReleaseMutation,\n  releaseApi,\n} from '../services/release';\nimport { useTypedDispatch } from '../store/hooks';\nimport { isBaseQueryError } from '../utils/api';\nimport { getTimezoneOffset } from '../utils/time';\n\nimport { getBadgeProps } from './ReleasesPage';\n\nimport type {\n  ReleaseAction,\n  ReleaseActionGroupBy,\n} from '../../../shared/contracts/release-actions';\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseDetailsLayout\n * -----------------------------------------------------------------------------------------------*/\nconst ReleaseInfoWrapper = styled(Flex)`\n  align-self: stretch;\n  border-bottom-right-radius: ${({ theme }) => theme.borderRadius};\n  border-bottom-left-radius: ${({ theme }) => theme.borderRadius};\n  border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\ninterface ReleaseDetailsLayoutProps {\n  toggleEditReleaseModal: () => void;\n  toggleWarningSubmit: () => void;\n  children: React.ReactNode;\n}\n\nconst ReleaseDetailsLayout = ({\n  toggleEditReleaseModal,\n  toggleWarningSubmit,\n  children,\n}: ReleaseDetailsLayoutProps) => {\n  const { formatMessage, formatDate, formatTime } = useIntl();\n  const { releaseId } = useParams<{ releaseId: string }>();\n  const {\n    data,\n    isLoading: isLoadingDetails,\n    error,\n  } = useGetReleaseQuery(\n    { id: releaseId! },\n    {\n      skip: !releaseId,\n    }\n  );\n  const [publishRelease, { isLoading: isPublishing }] = usePublishReleaseMutation();\n  const { toggleNotification } = useNotification();\n  const { formatAPIError } = useAPIErrorHandler();\n  const { allowedActions } = useRBAC(PERMISSIONS);\n  const { canUpdate, canDelete, canPublish } = allowedActions;\n  const dispatch = useTypedDispatch();\n  const { trackUsage } = useTracking();\n\n  const release = data?.data;\n\n  const handlePublishRelease = (id: string) => async () => {\n    const response = await publishRelease({ id });\n\n    if ('data' in response) {\n      // When the response returns an object with 'data', handle success\n      toggleNotification({\n        type: 'success',\n        message: formatMessage({\n          id: 'content-releases.pages.ReleaseDetails.publish-notification-success',\n          defaultMessage: 'Release was published successfully.',\n        }),\n      });\n\n      const { totalEntries, totalPublishedEntries, totalUnpublishedEntries } = response.data.meta;\n\n      trackUsage('didPublishRelease', {\n        totalEntries,\n        totalPublishedEntries,\n        totalUnpublishedEntries,\n      });\n    } else if (isFetchError(response.error)) {\n      // When the response returns an object with 'error', handle fetch error\n      toggleNotification({\n        type: 'danger',\n        message: formatAPIError(response.error),\n      });\n    } else {\n      // Otherwise, the response returns an object with 'error', handle a generic error\n      toggleNotification({\n        type: 'danger',\n        message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n      });\n    }\n  };\n\n  const handleRefresh = () => {\n    dispatch(\n      releaseApi.util.invalidateTags([\n        { type: 'ReleaseAction', id: 'LIST' },\n        { type: 'Release', id: releaseId },\n      ])\n    );\n  };\n\n  const getCreatedByUser = () => {\n    if (!release?.createdBy) {\n      return null;\n    }\n\n    // Favor the username\n    if (release.createdBy.username) {\n      return release.createdBy.username;\n    }\n\n    // Firstname may not exist if created with SSO\n    if (release.createdBy.firstname) {\n      return `${release.createdBy.firstname} ${release.createdBy.lastname || ''}`.trim();\n    }\n\n    // All users must have at least an email\n    return release.createdBy.email;\n  };\n\n  if (isLoadingDetails) {\n    return <Page.Loading />;\n  }\n\n  if ((isBaseQueryError(error) && 'code' in error) || !release) {\n    return (\n      <Navigate\n        to=\"..\"\n        state={{\n          errors: [\n            {\n              // @ts-expect-error – TODO: fix this weird error flow\n              code: error?.code,\n            },\n          ],\n        }}\n      />\n    );\n  }\n\n  const totalEntries = release.actions.meta.count || 0;\n  const hasCreatedByUser = Boolean(getCreatedByUser());\n\n  const isScheduled = release.scheduledAt && release.timezone;\n  const numberOfEntriesText = formatMessage(\n    {\n      id: 'content-releases.pages.Details.header-subtitle',\n      defaultMessage: '{number, plural, =0 {No entries} one {# entry} other {# entries}}',\n    },\n    { number: totalEntries }\n  );\n  const scheduledText = isScheduled\n    ? formatMessage(\n        {\n          id: 'content-releases.pages.ReleaseDetails.header-subtitle.scheduled',\n          defaultMessage: 'Scheduled for {date} at {time} ({offset})',\n        },\n        {\n          date: formatDate(new Date(release.scheduledAt!), {\n            weekday: 'long',\n            day: 'numeric',\n            month: 'long',\n            year: 'numeric',\n            timeZone: release.timezone!,\n          }),\n          time: formatTime(new Date(release.scheduledAt!), {\n            timeZone: release.timezone!,\n            hourCycle: 'h23',\n          }),\n          offset: getTimezoneOffset(release.timezone!, new Date(release.scheduledAt!)),\n        }\n      )\n    : '';\n\n  return (\n    <Layouts.Root>\n      <Main aria-busy={isLoadingDetails}>\n        <Layouts.Header\n          title={release.name}\n          subtitle={\n            <Flex gap={2} lineHeight={6}>\n              <Typography textColor=\"neutral600\" variant=\"epsilon\">\n                {numberOfEntriesText + (isScheduled ? ` - ${scheduledText}` : '')}\n              </Typography>\n              <Badge {...getBadgeProps(release.status)}>{release.status}</Badge>\n            </Flex>\n          }\n          navigationAction={<BackButton fallback=\"..\" />}\n          primaryAction={\n            !release.releasedAt && (\n              <Flex gap={2}>\n                <SimpleMenuButton\n                  label={<More />}\n                  variant=\"tertiary\"\n                  endIcon={null}\n                  paddingLeft=\"7px\"\n                  paddingRight=\"7px\"\n                  aria-label={formatMessage({\n                    id: 'content-releases.header.actions.open-release-actions',\n                    defaultMessage: 'Release edit and delete menu',\n                  })}\n                  popoverPlacement=\"bottom-end\"\n                >\n                  <Menu.Item\n                    disabled={!canUpdate}\n                    onSelect={toggleEditReleaseModal}\n                    startIcon={<Pencil />}\n                  >\n                    {formatMessage({\n                      id: 'content-releases.header.actions.edit',\n                      defaultMessage: 'Edit',\n                    })}\n                  </Menu.Item>\n                  <Menu.Item\n                    disabled={!canDelete}\n                    onSelect={toggleWarningSubmit}\n                    variant=\"danger\"\n                    startIcon={<Trash />}\n                  >\n                    {formatMessage({\n                      id: 'content-releases.header.actions.delete',\n                      defaultMessage: 'Delete',\n                    })}\n                  </Menu.Item>\n                  <ReleaseInfoWrapper\n                    direction=\"column\"\n                    justifyContent=\"center\"\n                    alignItems=\"flex-start\"\n                    gap={1}\n                    padding={4}\n                  >\n                    <Typography variant=\"pi\" fontWeight=\"bold\">\n                      {formatMessage({\n                        id: 'content-releases.header.actions.created',\n                        defaultMessage: 'Created',\n                      })}\n                    </Typography>\n                    <Typography variant=\"pi\" color=\"neutral300\">\n                      <RelativeTime timestamp={new Date(release.createdAt)} />\n                      {formatMessage(\n                        {\n                          id: 'content-releases.header.actions.created.description',\n                          defaultMessage:\n                            '{hasCreatedByUser, select, true { by {createdBy}} other { by deleted user}}',\n                        },\n                        { createdBy: getCreatedByUser(), hasCreatedByUser }\n                      )}\n                    </Typography>\n                  </ReleaseInfoWrapper>\n                </SimpleMenuButton>\n                <Button size=\"S\" variant=\"tertiary\" onClick={handleRefresh}>\n                  {formatMessage({\n                    id: 'content-releases.header.actions.refresh',\n                    defaultMessage: 'Refresh',\n                  })}\n                </Button>\n                {canPublish ? (\n                  <Button\n                    size=\"S\"\n                    variant=\"default\"\n                    onClick={handlePublishRelease(release.id.toString())}\n                    loading={isPublishing}\n                    disabled={release.actions.meta.count === 0}\n                  >\n                    {formatMessage({\n                      id: 'content-releases.header.actions.publish',\n                      defaultMessage: 'Publish',\n                    })}\n                  </Button>\n                ) : null}\n              </Flex>\n            )\n          }\n        />\n        {children}\n      </Main>\n    </Layouts.Root>\n  );\n};\n\nconst SimpleMenuButton = styled(SimpleMenu)`\n  & > span {\n    display: flex;\n  }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseDetailsBody\n * -----------------------------------------------------------------------------------------------*/\nconst GROUP_BY_OPTIONS = ['contentType', 'locale', 'action'] as const;\nconst GROUP_BY_OPTIONS_NO_LOCALE = ['contentType', 'action'] as const;\nconst getGroupByOptionLabel = (value: (typeof GROUP_BY_OPTIONS)[number]) => {\n  if (value === 'locale') {\n    return {\n      id: 'content-releases.pages.ReleaseDetails.groupBy.option.locales',\n      defaultMessage: 'Locales',\n    };\n  }\n\n  if (value === 'action') {\n    return {\n      id: 'content-releases.pages.ReleaseDetails.groupBy.option.actions',\n      defaultMessage: 'Actions',\n    };\n  }\n\n  return {\n    id: 'content-releases.pages.ReleaseDetails.groupBy.option.content-type',\n    defaultMessage: 'Content-Types',\n  };\n};\n\ninterface ReleaseDetailsBodyProps {\n  releaseId: string;\n}\n\nconst ReleaseDetailsBody = ({ releaseId }: ReleaseDetailsBodyProps) => {\n  const { formatMessage } = useIntl();\n  const [{ query }, setQuery] = useQueryParams<GetReleaseActionsQueryParams>();\n  const { toggleNotification } = useNotification();\n  const { formatAPIError } = useAPIErrorHandler();\n  const {\n    data: releaseData,\n    isLoading: isReleaseLoading,\n    error: releaseError,\n  } = useGetReleaseQuery({ id: releaseId });\n  const {\n    allowedActions: { canUpdate },\n  } = useRBAC(PERMISSIONS);\n  const runHookWaterfall = useStrapiApp('ReleaseDetailsPage', (state) => state.runHookWaterfall);\n\n  // TODO: Migrated displayedHeader to v5\n  const { displayedHeaders, hasI18nEnabled }: { displayedHeaders: any; hasI18nEnabled: boolean } =\n    runHookWaterfall('ContentReleases/pages/ReleaseDetails/add-locale-in-releases', {\n      displayedHeaders: [\n        {\n          label: {\n            id: 'content-releases.page.ReleaseDetails.table.header.label.name',\n            defaultMessage: 'name',\n          },\n          name: 'name',\n        },\n      ],\n      hasI18nEnabled: false,\n    });\n\n  const release = releaseData?.data;\n  const selectedGroupBy = query?.groupBy || 'contentType';\n\n  const {\n    isLoading,\n    isFetching,\n    isError,\n    data,\n    error: releaseActionsError,\n  } = useGetReleaseActionsQuery({\n    ...query,\n    releaseId,\n  });\n\n  const [updateReleaseAction] = useUpdateReleaseActionMutation();\n\n  const handleChangeType = async (\n    e: React.ChangeEvent<HTMLInputElement>,\n    actionId: ReleaseAction['id'],\n    actionPath: [string, number]\n  ) => {\n    const response = await updateReleaseAction({\n      params: {\n        releaseId,\n        actionId,\n      },\n      body: {\n        type: e.target.value as ReleaseAction['type'],\n      },\n      query, // We are passing the query params to make optimistic updates\n      actionPath, // We are passing the action path to found the position in the cache of the action for optimistic updates\n    });\n\n    if ('error' in response) {\n      if (isFetchError(response.error)) {\n        // When the response returns an object with 'error', handle fetch error\n        toggleNotification({\n          type: 'danger',\n          message: formatAPIError(response.error),\n        });\n      } else {\n        // Otherwise, the response returns an object with 'error', handle a generic error\n        toggleNotification({\n          type: 'danger',\n          message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n        });\n      }\n    }\n  };\n\n  if (isLoading || isReleaseLoading) {\n    return <Page.Loading />;\n  }\n\n  const releaseActions = data?.data;\n  const releaseMeta = data?.meta;\n  const contentTypes = releaseMeta?.contentTypes || {};\n  const components = releaseMeta?.components || {};\n\n  if (isBaseQueryError(releaseError) || !release) {\n    const errorsArray = [];\n    if (releaseError && 'code' in releaseError) {\n      errorsArray.push({\n        code: releaseError.code,\n      });\n    }\n    if (releaseActionsError && 'code' in releaseActionsError) {\n      errorsArray.push({\n        code: releaseActionsError.code,\n      });\n    }\n    return (\n      <Navigate\n        to=\"..\"\n        state={{\n          errors: errorsArray,\n        }}\n      />\n    );\n  }\n\n  if (isError || !releaseActions) {\n    return <Page.Error />;\n  }\n\n  if (Object.keys(releaseActions).length === 0) {\n    return (\n      <Layouts.Content>\n        <EmptyStateLayout\n          action={\n            <LinkButton\n              tag={ReactRouterLink}\n              to={{\n                pathname: '/content-manager',\n              }}\n              style={{ textDecoration: 'none' }}\n              variant=\"secondary\"\n            >\n              {formatMessage({\n                id: 'content-releases.page.Details.button.openContentManager',\n                defaultMessage: 'Open the Content Manager',\n              })}\n            </LinkButton>\n          }\n          icon={<EmptyDocuments width=\"16rem\" />}\n          content={formatMessage({\n            id: 'content-releases.pages.Details.tab.emptyEntries',\n            defaultMessage:\n              'This release is empty. Open the Content Manager, select an entry and add it to the release.',\n          })}\n        />\n      </Layouts.Content>\n    );\n  }\n\n  const groupByLabel = formatMessage({\n    id: 'content-releases.pages.ReleaseDetails.groupBy.aria-label',\n    defaultMessage: 'Group by',\n  });\n  const headers = [\n    ...displayedHeaders,\n    {\n      label: {\n        id: 'content-releases.page.ReleaseDetails.table.header.label.content-type',\n        defaultMessage: 'content-type',\n      },\n      name: 'content-type',\n    },\n    {\n      label: {\n        id: 'content-releases.page.ReleaseDetails.table.header.label.action',\n        defaultMessage: 'action',\n      },\n      name: 'action',\n    },\n    ...(!release.releasedAt\n      ? [\n          {\n            label: {\n              id: 'content-releases.page.ReleaseDetails.table.header.label.status',\n              defaultMessage: 'status',\n            },\n            name: 'status',\n          },\n        ]\n      : []),\n  ];\n\n  const options = hasI18nEnabled ? GROUP_BY_OPTIONS : GROUP_BY_OPTIONS_NO_LOCALE;\n\n  return (\n    <Layouts.Content>\n      <Flex gap={4} direction=\"column\" alignItems=\"stretch\">\n        <Flex>\n          <SingleSelect\n            placeholder={groupByLabel}\n            aria-label={groupByLabel}\n            customizeContent={(value) =>\n              formatMessage(\n                {\n                  id: `content-releases.pages.ReleaseDetails.groupBy.label`,\n                  defaultMessage: `Group by {groupBy}`,\n                },\n                {\n                  groupBy: value,\n                }\n              )\n            }\n            value={formatMessage(getGroupByOptionLabel(selectedGroupBy))}\n            onChange={(value) => setQuery({ groupBy: value as ReleaseActionGroupBy })}\n          >\n            {options.map((option) => (\n              <SingleSelectOption key={option} value={option}>\n                {formatMessage(getGroupByOptionLabel(option))}\n              </SingleSelectOption>\n            ))}\n          </SingleSelect>\n        </Flex>\n        {Object.keys(releaseActions).map((key) => (\n          <Flex key={`releases-group-${key}`} gap={4} direction=\"column\" alignItems=\"stretch\">\n            <Flex role=\"separator\" aria-label={key}>\n              <Badge>{key}</Badge>\n            </Flex>\n            <Table.Root\n              rows={releaseActions[key].map((item) => ({\n                ...item,\n                id: Number(item.entry.id),\n              }))}\n              headers={headers}\n              isLoading={isLoading || isFetching}\n            >\n              <Table.Content>\n                <Table.Head>\n                  {headers.map(({ label, name }) => (\n                    <Table.HeaderCell key={name} label={formatMessage(label)} name={name} />\n                  ))}\n                </Table.Head>\n                <Table.Loading />\n                <Table.Body>\n                  {releaseActions[key].map(\n                    ({ id, contentType, locale, type, entry, status }, actionIndex) => (\n                      <Tr key={id}>\n                        <Td width=\"25%\" maxWidth=\"200px\">\n                          <Typography ellipsis>{`${\n                            contentType.mainFieldValue || entry.id\n                          }`}</Typography>\n                        </Td>\n                        {hasI18nEnabled && (\n                          <Td width=\"10%\">\n                            <Typography>{`${locale?.name ? locale.name : '-'}`}</Typography>\n                          </Td>\n                        )}\n\n                        <Td width=\"10%\">\n                          <Typography>{contentType.displayName || ''}</Typography>\n                        </Td>\n                        <Td width=\"20%\">\n                          {release.releasedAt ? (\n                            <Typography>\n                              {formatMessage(\n                                {\n                                  id: 'content-releases.page.ReleaseDetails.table.action-published',\n                                  defaultMessage:\n                                    'This entry was <b>{isPublish, select, true {published} other {unpublished}}</b>.',\n                                },\n                                {\n                                  isPublish: type === 'publish',\n                                  b: (children: React.ReactNode) => (\n                                    <Typography fontWeight=\"bold\">{children}</Typography>\n                                  ),\n                                }\n                              )}\n                            </Typography>\n                          ) : (\n                            <ReleaseActionOptions\n                              selected={type}\n                              handleChange={(e) => handleChangeType(e, id, [key, actionIndex])}\n                              name={`release-action-${id}-type`}\n                              disabled={!canUpdate}\n                            />\n                          )}\n                        </Td>\n                        {!release.releasedAt && (\n                          <>\n                            <Td width=\"20%\" minWidth=\"200px\">\n                              <EntryValidationPopover\n                                action={type}\n                                schema={contentTypes?.[contentType.uid]}\n                                entry={entry}\n                                status={status}\n                              />\n                            </Td>\n                            <Td>\n                              <Flex justifyContent=\"flex-end\">\n                                <ReleaseActionMenu.Root>\n                                  <ReleaseActionMenu.ReleaseActionEntryLinkItem\n                                    contentTypeUid={contentType.uid}\n                                    documentId={entry.documentId}\n                                    locale={locale?.code}\n                                  />\n                                  <ReleaseActionMenu.DeleteReleaseActionItem\n                                    releaseId={release.id}\n                                    actionId={id}\n                                  />\n                                </ReleaseActionMenu.Root>\n                              </Flex>\n                            </Td>\n                          </>\n                        )}\n                      </Tr>\n                    )\n                  )}\n                </Table.Body>\n              </Table.Content>\n            </Table.Root>\n          </Flex>\n        ))}\n        {releaseMeta?.pagination?.pageCount && releaseMeta.pagination.pageCount > 1 && (\n          <Pagination.Root\n            {...releaseMeta?.pagination}\n            defaultPageSize={releaseMeta?.pagination?.pageSize}\n          >\n            <Pagination.PageSize />\n            <Pagination.Links />\n          </Pagination.Root>\n        )}\n      </Flex>\n    </Layouts.Content>\n  );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ReleaseDetailsPage\n * -----------------------------------------------------------------------------------------------*/\nconst ReleaseDetailsPage = () => {\n  const { formatMessage } = useIntl();\n  const { releaseId } = useParams<{ releaseId: string }>();\n  const { toggleNotification } = useNotification();\n  const { formatAPIError } = useAPIErrorHandler();\n  const navigate = useNavigate();\n  const [releaseModalShown, setReleaseModalShown] = React.useState(false);\n  const [showWarningSubmit, setWarningSubmit] = React.useState(false);\n\n  const {\n    isLoading: isLoadingDetails,\n    data,\n    isSuccess: isSuccessDetails,\n  } = useGetReleaseQuery(\n    { id: releaseId! },\n    {\n      skip: !releaseId,\n    }\n  );\n  const { data: dataTimezone, isLoading: isLoadingTimezone } = useGetReleaseSettingsQuery();\n  const [updateRelease, { isLoading: isSubmittingForm }] = useUpdateReleaseMutation();\n  const [deleteRelease] = useDeleteReleaseMutation();\n\n  const toggleEditReleaseModal = () => {\n    setReleaseModalShown((prev) => !prev);\n  };\n\n  const getTimezoneValue = () => {\n    if (releaseData?.timezone) {\n      return releaseData.timezone;\n    } else {\n      if (dataTimezone?.data.defaultTimezone) {\n        return dataTimezone.data.defaultTimezone;\n      }\n      return null;\n    }\n  };\n\n  const toggleWarningSubmit = () => setWarningSubmit((prevState) => !prevState);\n\n  if (isLoadingDetails || isLoadingTimezone) {\n    return (\n      <ReleaseDetailsLayout\n        toggleEditReleaseModal={toggleEditReleaseModal}\n        toggleWarningSubmit={toggleWarningSubmit}\n      >\n        <Page.Loading />\n      </ReleaseDetailsLayout>\n    );\n  }\n\n  if (!releaseId) {\n    return <Navigate to=\"..\" />;\n  }\n\n  const releaseData = (isSuccessDetails && data?.data) || null;\n\n  const title = releaseData?.name || '';\n  const timezone = getTimezoneValue();\n  const scheduledAt =\n    releaseData?.scheduledAt && timezone ? utcToZonedTime(releaseData.scheduledAt, timezone) : null;\n  // Just get the date and time to display without considering updated timezone time\n  const date = scheduledAt ? format(scheduledAt, 'yyyy-MM-dd') : undefined;\n  const time = scheduledAt ? format(scheduledAt, 'HH:mm') : '';\n\n  const handleEditRelease = async (values: FormValues) => {\n    const response = await updateRelease({\n      id: releaseId,\n      name: values.name,\n      scheduledAt: values.scheduledAt,\n      timezone: values.timezone,\n    });\n\n    if ('data' in response) {\n      // When the response returns an object with 'data', handle success\n      toggleNotification({\n        type: 'success',\n        message: formatMessage({\n          id: 'content-releases.modal.release-updated-notification-success',\n          defaultMessage: 'Release updated.',\n        }),\n      });\n      toggleEditReleaseModal();\n    } else if (isFetchError(response.error)) {\n      // When the response returns an object with 'error', handle fetch error\n      toggleNotification({\n        type: 'danger',\n        message: formatAPIError(response.error),\n      });\n    } else {\n      // Otherwise, the response returns an object with 'error', handle a generic error\n      toggleNotification({\n        type: 'danger',\n        message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n      });\n    }\n  };\n\n  const handleDeleteRelease = async () => {\n    const response = await deleteRelease({\n      id: releaseId,\n    });\n\n    if ('data' in response) {\n      navigate('..');\n    } else if (isFetchError(response.error)) {\n      // When the response returns an object with 'error', handle fetch error\n      toggleNotification({\n        type: 'danger',\n        message: formatAPIError(response.error),\n      });\n    } else {\n      // Otherwise, the response returns an object with 'error', handle a generic error\n      toggleNotification({\n        type: 'danger',\n        message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n      });\n    }\n  };\n\n  return (\n    <ReleaseDetailsLayout\n      toggleEditReleaseModal={toggleEditReleaseModal}\n      toggleWarningSubmit={toggleWarningSubmit}\n    >\n      <ReleaseDetailsBody releaseId={releaseId} />\n      <ReleaseModal\n        open={releaseModalShown}\n        handleClose={toggleEditReleaseModal}\n        handleSubmit={handleEditRelease}\n        isLoading={isLoadingDetails || isSubmittingForm}\n        initialValues={{\n          name: title || '',\n          scheduledAt,\n          date,\n          time,\n          isScheduled: Boolean(scheduledAt),\n          timezone,\n        }}\n      />\n      <Dialog.Root open={showWarningSubmit} onOpenChange={toggleWarningSubmit}>\n        <ConfirmDialog onConfirm={handleDeleteRelease}>\n          {formatMessage({\n            id: 'content-releases.dialog.confirmation-message',\n            defaultMessage: 'Are you sure you want to delete this release?',\n          })}\n        </ConfirmDialog>\n      </Dialog.Root>\n    </ReleaseDetailsLayout>\n  );\n};\n\nexport { ReleaseDetailsPage };\n"],"names":["ReleaseInfoWrapper","styled","Flex","theme","borderRadius","colors","neutral150","ReleaseDetailsLayout","toggleEditReleaseModal","toggleWarningSubmit","children","formatMessage","formatDate","formatTime","useIntl","releaseId","useParams","data","isLoading","isLoadingDetails","error","useGetReleaseQuery","id","skip","publishRelease","isPublishing","usePublishReleaseMutation","toggleNotification","useNotification","formatAPIError","useAPIErrorHandler","allowedActions","useRBAC","PERMISSIONS","canUpdate","canDelete","canPublish","dispatch","useTypedDispatch","trackUsage","useTracking","release","handlePublishRelease","response","type","message","defaultMessage","totalEntries","totalPublishedEntries","totalUnpublishedEntries","meta","isFetchError","handleRefresh","releaseApi","util","invalidateTags","getCreatedByUser","createdBy","username","firstname","lastname","trim","email","_jsx","Page","Loading","isBaseQueryError","Navigate","to","state","errors","code","actions","count","hasCreatedByUser","Boolean","isScheduled","scheduledAt","timezone","numberOfEntriesText","number","scheduledText","date","Date","weekday","day","month","year","timeZone","time","hourCycle","offset","getTimezoneOffset","Layouts","Root","_jsxs","Main","aria-busy","Header","title","name","subtitle","gap","lineHeight","Typography","textColor","variant","Badge","getBadgeProps","status","navigationAction","BackButton","fallback","primaryAction","releasedAt","SimpleMenuButton","label","More","endIcon","paddingLeft","paddingRight","aria-label","popoverPlacement","Menu","Item","disabled","onSelect","startIcon","Pencil","Trash","direction","justifyContent","alignItems","padding","fontWeight","color","RelativeTime","timestamp","createdAt","Button","size","onClick","toString","loading","SimpleMenu","GROUP_BY_OPTIONS","GROUP_BY_OPTIONS_NO_LOCALE","getGroupByOptionLabel","value","ReleaseDetailsBody","query","setQuery","useQueryParams","releaseData","isReleaseLoading","releaseError","runHookWaterfall","useStrapiApp","displayedHeaders","hasI18nEnabled","selectedGroupBy","groupBy","isFetching","isError","releaseActionsError","useGetReleaseActionsQuery","updateReleaseAction","useUpdateReleaseActionMutation","handleChangeType","e","actionId","actionPath","params","body","target","releaseActions","releaseMeta","contentTypes","components","errorsArray","push","Error","Object","keys","length","Content","EmptyStateLayout","action","LinkButton","tag","ReactRouterLink","pathname","style","textDecoration","icon","EmptyDocuments","width","content","groupByLabel","headers","options","SingleSelect","placeholder","customizeContent","onChange","map","option","SingleSelectOption","key","role","Table","rows","item","Number","entry","Head","HeaderCell","Body","contentType","locale","actionIndex","Tr","Td","maxWidth","ellipsis","mainFieldValue","displayName","isPublish","b","ReleaseActionOptions","selected","handleChange","_Fragment","minWidth","EntryValidationPopover","schema","uid","ReleaseActionMenu","ReleaseActionEntryLinkItem","contentTypeUid","documentId","DeleteReleaseActionItem","pagination","pageCount","Pagination","defaultPageSize","pageSize","PageSize","Links","ReleaseDetailsPage","navigate","useNavigate","releaseModalShown","setReleaseModalShown","React","useState","showWarningSubmit","setWarningSubmit","isSuccess","isSuccessDetails","dataTimezone","isLoadingTimezone","useGetReleaseSettingsQuery","updateRelease","isSubmittingForm","useUpdateReleaseMutation","deleteRelease","useDeleteReleaseMutation","prev","getTimezoneValue","defaultTimezone","prevState","utcToZonedTime","format","undefined","handleEditRelease","values","handleDeleteRelease","ReleaseModal","open","handleClose","handleSubmit","initialValues","Dialog","onOpenChange","ConfirmDialog","onConfirm"],"mappings":"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"}