diff --git a/static/app/components/idBadge/projectBadge.tsx b/static/app/components/idBadge/projectBadge.tsx index 61bcc1edf1a911..512bd72ed01bd4 100644 --- a/static/app/components/idBadge/projectBadge.tsx +++ b/static/app/components/idBadge/projectBadge.tsx @@ -1,4 +1,4 @@ -import {cloneElement} from 'react'; +import {cloneElement, memo} from 'react'; import styled from '@emotion/styled'; import type {LinkProps} from 'sentry/components/core/link'; @@ -101,4 +101,4 @@ const StyledLink = styled(Link)` } `; -export default ProjectBadge; +export default memo(ProjectBadge); diff --git a/static/app/views/explore/logs/fieldRenderers.tsx b/static/app/views/explore/logs/fieldRenderers.tsx index 1539ff3aeeabf5..466ae43fabf170 100644 --- a/static/app/views/explore/logs/fieldRenderers.tsx +++ b/static/app/views/explore/logs/fieldRenderers.tsx @@ -7,11 +7,12 @@ import {Tooltip} from 'sentry/components/core/tooltip'; import {DateTime} from 'sentry/components/dateTime'; import Duration from 'sentry/components/duration/duration'; import useStacktraceLink from 'sentry/components/events/interfaces/frame/useStacktraceLink'; +import ProjectBadge from 'sentry/components/idBadge/projectBadge'; import Version from 'sentry/components/version'; import {IconPlay} from 'sentry/icons'; import {tct} from 'sentry/locale'; import {space} from 'sentry/styles/space'; -import type {Project} from 'sentry/types/project'; +import type {AvatarProject, Project} from 'sentry/types/project'; import {stripAnsi} from 'sentry/utils/ansiEscapeCodes'; import type {EventsMetaType} from 'sentry/utils/discover/eventView'; import { @@ -23,6 +24,8 @@ import {VersionContainer} from 'sentry/utils/discover/styles'; import ViewReplayLink from 'sentry/utils/discover/viewReplayLink'; import {getShortEventId} from 'sentry/utils/events'; import normalizeUrl from 'sentry/utils/url/normalizeUrl'; +import useProjectFromId from 'sentry/utils/useProjectFromId'; +import useProjects from 'sentry/utils/useProjects'; import {useRelease} from 'sentry/utils/useRelease'; import {QuickContextHoverWrapper} from 'sentry/views/discover/table/quickContext/quickContextWrapper'; import {ContextType} from 'sentry/views/discover/table/quickContext/utils'; diff --git a/static/app/views/explore/logs/tables/logsInfiniteTable.tsx b/static/app/views/explore/logs/tables/logsInfiniteTable.tsx index cf4bc2cebaad08..f62dada7b1aaef 100644 --- a/static/app/views/explore/logs/tables/logsInfiniteTable.tsx +++ b/static/app/views/explore/logs/tables/logsInfiniteTable.tsx @@ -14,6 +14,7 @@ import useJumpButtons from 'sentry/components/replays/useJumpButtons'; import {GridResizer} from 'sentry/components/tables/gridEditable/styles'; import {IconArrow, IconWarning} from 'sentry/icons'; import {t, tct} from 'sentry/locale'; +import {space} from 'sentry/styles/space'; import type {TagCollection} from 'sentry/types/group'; import {defined} from 'sentry/utils'; import { @@ -331,6 +332,7 @@ export function LogsInfiniteTable({ '.log-table-row-chevron-button': { width: theme.isChonk ? '24px' : '18px', height: theme.isChonk ? '24px' : '18px', + padding: `${space(0.5)} ${space(0.75)}`, marginRight: '4px', display: 'flex', alignItems: 'center', diff --git a/static/app/views/explore/logs/tables/logsTableRow.tsx b/static/app/views/explore/logs/tables/logsTableRow.tsx index cedfadd46a7ff1..2b251129e808fc 100644 --- a/static/app/views/explore/logs/tables/logsTableRow.tsx +++ b/static/app/views/explore/logs/tables/logsTableRow.tsx @@ -6,6 +6,7 @@ import omit from 'lodash/omit'; import {Button} from 'sentry/components/core/button'; import {EmptyStreamWrapper} from 'sentry/components/emptyStateWarning'; +import ProjectBadge from 'sentry/components/idBadge/projectBadge'; import LoadingIndicator from 'sentry/components/loadingIndicator'; import {IconAdd, IconJson, IconSubtract, IconWarning} from 'sentry/icons'; import {IconChevron} from 'sentry/icons/iconChevron'; @@ -22,6 +23,7 @@ import useCopyToClipboard from 'sentry/utils/useCopyToClipboard'; import {useLocation} from 'sentry/utils/useLocation'; import useOrganization from 'sentry/utils/useOrganization'; import useProjectFromId from 'sentry/utils/useProjectFromId'; +import useProjects from 'sentry/utils/useProjects'; import CellAction, { Actions, ActionTriggerType, @@ -36,6 +38,7 @@ import { import type {TraceItemDetailsResponse} from 'sentry/views/explore/hooks/useTraceItemDetails'; import {useFetchTraceItemDetailsOnHover} from 'sentry/views/explore/hooks/useTraceItemDetails'; import { + AlwaysPresentLogFields, DEFAULT_TRACE_ITEM_HOVER_TIMEOUT, DEFAULT_TRACE_ITEM_HOVER_TIMEOUT_WITH_AUTO_REFRESH, HiddenLogDetailFields, @@ -149,6 +152,7 @@ export const LogRowContent = memo(function LogRowContent({ const location = useLocation(); const organization = useOrganization(); const fields = useQueryParamsFields(); + const projects = useProjects(); const autorefreshEnabled = useLogsAutoRefreshEnabled(); const setAutorefresh = useSetLogsAutoRefresh(); @@ -227,9 +231,9 @@ export const LogRowContent = memo(function LogRowContent({ const severityNumber = dataRow[OurLogKnownFieldKey.SEVERITY_NUMBER]; const severityText = dataRow[OurLogKnownFieldKey.SEVERITY]; - const project = useProjectFromId({ - project_id: '' + dataRow[OurLogKnownFieldKey.PROJECT_ID], - }); + const projectId: (typeof AlwaysPresentLogFields)[1] = + dataRow[OurLogKnownFieldKey.PROJECT_ID]; + const project = projects.projects.find(p => p.id === '' + projectId); const projectSlug = project?.slug ?? ''; const level = getLogSeverityLevel( @@ -335,6 +339,7 @@ export const LogRowContent = memo(function LogRowContent({ {chevronIcon} )} + {project ? : null} {fields?.map(field => {