From 832bfcd05232ce32e38306cb9f6c0e6845b067a5 Mon Sep 17 00:00:00 2001 From: Priscila Oliveira Date: Tue, 10 Jun 2025 10:04:28 +0200 Subject: [PATCH 1/4] feat(attachments): Add webm visualiation support --- .../previewAttachmentTypes.tsx | 3 +++ .../events/attachmentViewers/webmViewer.tsx | 25 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 static/app/components/events/attachmentViewers/webmViewer.tsx diff --git a/static/app/components/events/attachmentViewers/previewAttachmentTypes.tsx b/static/app/components/events/attachmentViewers/previewAttachmentTypes.tsx index b271a675116aed..9f84b1c3352249 100644 --- a/static/app/components/events/attachmentViewers/previewAttachmentTypes.tsx +++ b/static/app/components/events/attachmentViewers/previewAttachmentTypes.tsx @@ -2,6 +2,7 @@ import ImageViewer from 'sentry/components/events/attachmentViewers/imageViewer' import JsonViewer from 'sentry/components/events/attachmentViewers/jsonViewer'; import LogFileViewer from 'sentry/components/events/attachmentViewers/logFileViewer'; import RRWebJsonViewer from 'sentry/components/events/attachmentViewers/rrwebJsonViewer'; +import {WebMViewer} from 'sentry/components/events/attachmentViewers/webmViewer'; import type {IssueAttachment} from 'sentry/types/group'; export const getInlineAttachmentRenderer = ( @@ -26,6 +27,8 @@ export const getInlineAttachmentRenderer = ( case 'image/png': case 'image/gif': return ImageViewer; + case 'video/webm': + return WebMViewer; default: return undefined; } diff --git a/static/app/components/events/attachmentViewers/webmViewer.tsx b/static/app/components/events/attachmentViewers/webmViewer.tsx new file mode 100644 index 00000000000000..74ca07a6b05073 --- /dev/null +++ b/static/app/components/events/attachmentViewers/webmViewer.tsx @@ -0,0 +1,25 @@ +import {css} from '@emotion/react'; + +import type {ViewerProps} from 'sentry/components/events/attachmentViewers/utils'; +import {getAttachmentUrl} from 'sentry/components/events/attachmentViewers/utils'; +import PanelItem from 'sentry/components/panels/panelItem'; +import {t} from 'sentry/locale'; + +interface WebMViewerProps + extends Pick {} + +export function WebMViewer(props: WebMViewerProps) { + return ( + + + + ); +} From 875fad393a4c0e0995cef62a5747335995773d11 Mon Sep 17 00:00:00 2001 From: Priscila Oliveira Date: Tue, 10 Jun 2025 11:58:01 +0200 Subject: [PATCH 2/4] feat(screenshots): Update logic to render all files if name contains screenshot --- .../previewAttachmentTypes.tsx | 7 ++- .../events/attachmentViewers/webmViewer.tsx | 11 ++-- .../events/eventTagsAndScreenshot/index.tsx | 7 +-- .../screenshot/index.tsx | 52 ++++++++++++------- .../screenshot/modal.tsx | 30 ++++++----- .../screenshot/screenshotDataSection.tsx | 11 +--- 6 files changed, 68 insertions(+), 50 deletions(-) diff --git a/static/app/components/events/attachmentViewers/previewAttachmentTypes.tsx b/static/app/components/events/attachmentViewers/previewAttachmentTypes.tsx index 9f84b1c3352249..08782e1336bd76 100644 --- a/static/app/components/events/attachmentViewers/previewAttachmentTypes.tsx +++ b/static/app/components/events/attachmentViewers/previewAttachmentTypes.tsx @@ -7,7 +7,12 @@ import type {IssueAttachment} from 'sentry/types/group'; export const getInlineAttachmentRenderer = ( attachment: IssueAttachment -): typeof ImageViewer | typeof LogFileViewer | typeof RRWebJsonViewer | undefined => { +): + | typeof ImageViewer + | typeof LogFileViewer + | typeof RRWebJsonViewer + | typeof WebMViewer + | undefined => { switch (attachment.mimetype) { case 'text/css': case 'text/csv': diff --git a/static/app/components/events/attachmentViewers/webmViewer.tsx b/static/app/components/events/attachmentViewers/webmViewer.tsx index 74ca07a6b05073..511b19e0132d56 100644 --- a/static/app/components/events/attachmentViewers/webmViewer.tsx +++ b/static/app/components/events/attachmentViewers/webmViewer.tsx @@ -6,14 +6,19 @@ import PanelItem from 'sentry/components/panels/panelItem'; import {t} from 'sentry/locale'; interface WebMViewerProps - extends Pick {} + extends Pick, + Partial> { + onCanPlay?: React.ReactEventHandler; +} -export function WebMViewer(props: WebMViewerProps) { +export function WebMViewer({controls = true, onCanPlay, ...props}: WebMViewerProps) { return (