@@ -2,7 +2,7 @@ import styled from '@emotion/styled';
22import { PlatformIcon } from 'platformicons' ;
33
44import { CodeBlock } from '@sentry/scraps/code' ;
5- import { Flex } from '@sentry/scraps/layout' ;
5+ import { Flex , Stack } from '@sentry/scraps/layout' ;
66import { Heading , Text } from '@sentry/scraps/text' ;
77import { Tooltip } from '@sentry/scraps/tooltip' ;
88
@@ -12,8 +12,10 @@ import {t} from 'sentry/locale';
1212import { formatBytesBase10 } from 'sentry/utils/bytes/formatBytesBase10' ;
1313import { getFormat , getFormattedDate , getUtcToSystem } from 'sentry/utils/dates' ;
1414import { openInstallModal } from 'sentry/views/preprod/components/installModal' ;
15+ import { MetricsArtifactType } from 'sentry/views/preprod/types/appSizeTypes' ;
1516import {
1617 BuildDetailsSizeAnalysisState ,
18+ getPrimarySizeMetric ,
1719 type BuildDetailsAppInfo ,
1820 type BuildDetailsSizeInfo ,
1921} from 'sentry/views/preprod/types/buildDetailsTypes' ;
@@ -40,6 +42,86 @@ export function BuildDetailsSidebarAppInfo(props: BuildDetailsSidebarAppInfoProp
4042 timeZone : true ,
4143 } ) ;
4244
45+ let sizeInfoGroup = null ;
46+ if (
47+ props . sizeInfo &&
48+ props . sizeInfo . state === BuildDetailsSizeAnalysisState . COMPLETED
49+ ) {
50+ const primarySizeMetric = getPrimarySizeMetric ( props . sizeInfo ) ;
51+ const watchAppMetrics = props . sizeInfo . size_metrics . find (
52+ metric => metric . metrics_artifact_type === MetricsArtifactType . WATCH_ARTIFACT
53+ ) ;
54+
55+ let installSizeContent = (
56+ < Text size = "md" >
57+ { formatBytesBase10 ( primarySizeMetric ?. install_size_bytes ?? 0 ) }
58+ </ Text >
59+ ) ;
60+ let downloadSizeContent = (
61+ < Text size = "md" >
62+ { formatBytesBase10 ( primarySizeMetric ?. download_size_bytes ?? 0 ) }
63+ </ Text >
64+ ) ;
65+ if ( watchAppMetrics ) {
66+ installSizeContent = (
67+ < Tooltip
68+ title = {
69+ < Stack >
70+ < Text size = "md" >
71+ { t ( 'App' ) } : { formatBytesBase10 ( watchAppMetrics . install_size_bytes ) }
72+ </ Text >
73+ < Text size = "md" >
74+ { t ( 'Watch app' ) } : { formatBytesBase10 ( watchAppMetrics . install_size_bytes ) }
75+ </ Text >
76+ </ Stack >
77+ }
78+ position = "left"
79+ >
80+ < Text size = "md" underline = "dotted" >
81+ { formatBytesBase10 ( watchAppMetrics . install_size_bytes ) }
82+ </ Text >
83+ </ Tooltip >
84+ ) ;
85+ downloadSizeContent = (
86+ < Tooltip
87+ title = {
88+ < Stack >
89+ < Text size = "md" >
90+ { t ( 'App' ) } :{ ' ' }
91+ { formatBytesBase10 ( primarySizeMetric ?. download_size_bytes ?? 0 ) }
92+ </ Text >
93+ < Text size = "md" >
94+ { t ( 'Watch app' ) } : { formatBytesBase10 ( watchAppMetrics . download_size_bytes ) }
95+ </ Text >
96+ </ Stack >
97+ }
98+ position = "left"
99+ >
100+ < Text size = "md" underline = "dotted" >
101+ { formatBytesBase10 ( primarySizeMetric ?. download_size_bytes ?? 0 ) }
102+ </ Text >
103+ </ Tooltip >
104+ ) ;
105+ }
106+
107+ sizeInfoGroup = (
108+ < Flex gap = "sm" >
109+ < Flex direction = "column" gap = "xs" flex = { 1 } >
110+ < Tooltip title = { labels . installSizeDescription } position = "left" >
111+ < Heading as = "h4" > { labels . installSizeLabel } </ Heading >
112+ </ Tooltip >
113+ { installSizeContent }
114+ </ Flex >
115+ < Flex direction = "column" gap = "xs" flex = { 1 } >
116+ < Tooltip title = { labels . downloadSizeDescription } position = "left" >
117+ < Heading as = "h4" > { labels . downloadSizeLabel } </ Heading >
118+ </ Tooltip >
119+ { downloadSizeContent }
120+ </ Flex >
121+ </ Flex >
122+ ) ;
123+ }
124+
43125 return (
44126 < Flex direction = "column" gap = "xl" >
45127 < Flex align = "center" gap = "sm" >
@@ -49,27 +131,7 @@ export function BuildDetailsSidebarAppInfo(props: BuildDetailsSidebarAppInfoProp
49131 { props . appInfo . name && < Heading as = "h3" > { props . appInfo . name } </ Heading > }
50132 </ Flex >
51133
52- { props . sizeInfo &&
53- props . sizeInfo . state === BuildDetailsSizeAnalysisState . COMPLETED && (
54- < Flex gap = "sm" >
55- < Flex direction = "column" gap = "xs" flex = { 1 } >
56- < Tooltip title = { labels . installSizeDescription } position = "left" >
57- < Heading as = "h4" > { labels . installSizeLabel } </ Heading >
58- </ Tooltip >
59- < Text size = "md" >
60- { formatBytesBase10 ( props . sizeInfo . install_size_bytes ) }
61- </ Text >
62- </ Flex >
63- < Flex direction = "column" gap = "xs" flex = { 1 } >
64- < Tooltip title = { labels . downloadSizeDescription } position = "left" >
65- < Heading as = "h4" > { labels . downloadSizeLabel } </ Heading >
66- </ Tooltip >
67- < Text size = "md" >
68- { formatBytesBase10 ( props . sizeInfo . download_size_bytes ) }
69- </ Text >
70- </ Flex >
71- </ Flex >
72- ) }
134+ { sizeInfoGroup }
73135
74136 < Flex wrap = "wrap" gap = "md" >
75137 < Flex gap = "2xs" align = "center" >
0 commit comments