Skip to content

Commit f963b83

Browse files
authored
feat(replay): Allow jetpack compose warning to be dismissable (#94232)
This allows the jetpack compose alert to be dismissable since the warning notice is so broad reaching, it should allow affect a pretty small amount of our android SDK users.
1 parent 3129f1a commit f963b83

File tree

3 files changed

+35
-12
lines changed

3 files changed

+35
-12
lines changed

static/app/components/replays/replayView.tsx

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,14 @@ import {ReplaySidebarToggleButton} from 'sentry/components/replays/replaySidebar
1414
import TextCopyInput from 'sentry/components/textCopyInput';
1515
import {tct} from 'sentry/locale';
1616
import {space} from 'sentry/styles/space';
17-
import {MIN_JETPACK_COMPOSE_VIEW_HIERARCHY_PII_FIX} from 'sentry/utils/replays/sdkVersions';
18-
import {semverCompare} from 'sentry/utils/versions/semverCompare';
1917
import useIsFullscreen from 'sentry/utils/window/useIsFullscreen';
2018
import Breadcrumbs from 'sentry/views/replays/detail/breadcrumbs';
2119
import BrowserOSIcons from 'sentry/views/replays/detail/browserOSIcons';
2220
import FluidHeight from 'sentry/views/replays/detail/layout/fluidHeight';
23-
import {JetpackComposePiiNotice} from 'sentry/views/replays/jetpackComposePiiNotice';
21+
import {
22+
JetpackComposePiiNotice,
23+
useNeedsJetpackComposePiiNotice,
24+
} from 'sentry/views/replays/jetpackComposePiiNotice';
2425

2526
import {CanvasSupportNotice} from './canvasSupportNotice';
2627

@@ -34,6 +35,9 @@ function ReplayView({toggleFullscreen, isLoading}: Props) {
3435
const [isSidebarOpen, setIsSidebarOpen] = useState(true);
3536
const {isFetching, replay} = useReplayContext();
3637
const isVideoReplay = replay?.isVideoReplay();
38+
const needsJetpackComposePiiWarning = useNeedsJetpackComposePiiNotice({
39+
replays: replay ? [replay.getReplay()] : [],
40+
});
3741

3842
return (
3943
<Fragment>
@@ -85,12 +89,7 @@ function ReplayView({toggleFullscreen, isLoading}: Props) {
8589
<ReplayProcessingError processingErrors={replay.processingErrors()} />
8690
) : (
8791
<FluidHeight>
88-
{isVideoReplay &&
89-
replay?.getReplay()?.sdk.name === 'sentry.java.android' &&
90-
semverCompare(
91-
replay?.getReplay()?.sdk.version || '',
92-
MIN_JETPACK_COMPOSE_VIEW_HIERARCHY_PII_FIX.minVersion
93-
) === -1 ? (
92+
{isVideoReplay && needsJetpackComposePiiWarning ? (
9493
<JetpackComposePiiNotice />
9594
) : null}
9695
<CanvasSupportNotice />

static/app/views/replays/jetpackComposePiiNotice.tsx

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,36 @@
11
import {Alert} from 'sentry/components/core/alert';
2+
import {Button} from 'sentry/components/core/button';
23
import ExternalLink from 'sentry/components/links/externalLink';
3-
import {tct} from 'sentry/locale';
4+
import {IconClose} from 'sentry/icons';
5+
import {t, tct} from 'sentry/locale';
46
import {MIN_JETPACK_COMPOSE_VIEW_HIERARCHY_PII_FIX} from 'sentry/utils/replays/sdkVersions';
7+
import useDismissAlert from 'sentry/utils/useDismissAlert';
58
import {semverCompare} from 'sentry/utils/versions/semverCompare';
69
import type {ReplayListRecord} from 'sentry/views/replays/types';
710

811
export function JetpackComposePiiNotice() {
12+
const LOCAL_STORAGE_KEY = 'jetpack-compose-pii-warning-dismissed';
13+
const {dismiss, isDismissed} = useDismissAlert({key: LOCAL_STORAGE_KEY});
14+
15+
if (isDismissed) {
16+
return null;
17+
}
18+
919
return (
1020
<Alert.Container>
11-
<Alert type="error" showIcon>
21+
<Alert
22+
type="error"
23+
showIcon
24+
trailingItems={
25+
<Button
26+
aria-label={t('Dismiss')}
27+
icon={<IconClose />}
28+
onClick={dismiss}
29+
size="zero"
30+
borderless
31+
/>
32+
}
33+
>
1234
{tct(
1335
'There is a [advisory:known PII/masking issue] with [jetpack:Jetpack Compose versions 1.8 and above]. [link:Update your Sentry SDK to version 8.14.0 or later] to ensure replays are properly masked.',
1436
{

static/app/views/replays/list/replaysList.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,9 @@ function ReplaysList() {
9090
ReplayColumn.ACTIVITY,
9191
];
9292

93-
const needsJetpackComposePiiWarning = useNeedsJetpackComposePiiNotice({replays});
93+
const needsJetpackComposePiiWarning = useNeedsJetpackComposePiiNotice({
94+
replays,
95+
});
9496

9597
return (
9698
<Fragment>

0 commit comments

Comments
 (0)