diff --git a/static/app/views/preprod/buildDetails/sidebar/buildDetailsSidebarAppInfo.tsx b/static/app/views/preprod/buildDetails/sidebar/buildDetailsSidebarAppInfo.tsx index 443dfcbf3a1a2b..a283124529b813 100644 --- a/static/app/views/preprod/buildDetails/sidebar/buildDetailsSidebarAppInfo.tsx +++ b/static/app/views/preprod/buildDetails/sidebar/buildDetailsSidebarAppInfo.tsx @@ -129,19 +129,15 @@ export function BuildDetailsSidebarAppInfo(props: BuildDetailsSidebarAppInfoProp - {props.projectId && props.appInfo.is_installable ? ( + {props.projectId ? ( { openInstallModal(props.projectId!, props.artifactId); }} > - Installable + Install - ) : ( - - Not Installable - - )} + ) : null} diff --git a/static/app/views/preprod/components/installModal.tsx b/static/app/views/preprod/components/installModal.tsx index 0eb362e2b286ae..32e32d0908bb9e 100644 --- a/static/app/views/preprod/components/installModal.tsx +++ b/static/app/views/preprod/components/installModal.tsx @@ -11,6 +11,7 @@ import LoadingIndicator from 'sentry/components/loadingIndicator'; import {IconClose} from 'sentry/icons/iconClose'; import {t, tn} from 'sentry/locale'; import {space} from 'sentry/styles/space'; +import {MarkedText} from 'sentry/utils/marked/markedText'; import {useApiQuery} from 'sentry/utils/queryClient'; import useOrganization from 'sentry/utils/useOrganization'; import type {InstallDetailsApiResponse} from 'sentry/views/preprod/types/installDetailsTypes'; @@ -39,33 +40,71 @@ function InstallModal({projectId, artifactId, closeModal}: InstallModalProps) { } ); + const header = ( + + {t('Install App')} + + - ); } - if (!installDetails?.install_url) { - const message = installDetails - ? t('No install download link available') - : t('No install details available'); + if (!installDetails.install_url) { + if (!installDetails.is_code_signature_valid) { + let errors = null; + if ( + installDetails.code_signature_errors && + installDetails.code_signature_errors.length > 0 + ) { + errors = ( + + {installDetails.code_signature_errors.map(e => ( + {e} + ))} + + ); + } + return ( + + {header} + {'Code signature is invalid'} + {errors} + + ); + } return ( - - {message} - + + {header} + {t('No install download link available')} ); } @@ -89,21 +128,7 @@ function InstallModal({projectId, artifactId, closeModal}: InstallModalProps) { return ( - - {t('Install App')} - -