Browse Source

ref(crons): Use project cron routes for links (#66914)

Part of GH-66615
Evan Purkhiser 1 year ago
parent
commit
90759ac50b

+ 4 - 3
static/app/components/events/interfaces/crons/cronTimelineSection.tsx

@@ -10,7 +10,7 @@ import {IconOpen} from 'sentry/icons';
 import {t} from 'sentry/locale';
 import {fadeIn} from 'sentry/styles/animations';
 import {space} from 'sentry/styles/space';
-import type {Event, Organization} from 'sentry/types';
+import type {Event, Organization, Project} from 'sentry/types';
 import {useApiQuery} from 'sentry/utils/queryClient';
 import {useDimensions} from 'sentry/utils/useDimensions';
 import useRouter from 'sentry/utils/useRouter';
@@ -31,11 +31,12 @@ import {getTimeRangeFromEvent} from 'sentry/views/monitors/utils/getTimeRangeFro
 interface Props {
   event: Event;
   organization: Organization;
+  project: Project;
 }
 
 const DEFAULT_ENVIRONMENT = 'production';
 
-export function CronTimelineSection({event, organization}: Props) {
+export function CronTimelineSection({event, organization, project}: Props) {
   const {location} = useRouter();
   const timeWindow: TimeWindow = location.query?.timeWindow ?? '24h';
   const monitorSlug = event.tags.find(({key}) => key === 'monitor.slug')?.value;
@@ -81,7 +82,7 @@ export function CronTimelineSection({event, organization}: Props) {
       <LinkButton
         size="xs"
         icon={<IconOpen />}
-        to={`/organizations/${organization.slug}/crons/${monitorSlug}`}
+        to={`/organizations/${organization.slug}/crons/${project.slug}/${monitorSlug}`}
       >
         {t('View in Monitor Details')}
       </LinkButton>

+ 5 - 1
static/app/views/issueDetails/groupEventDetails/groupEventDetailsContent.tsx

@@ -125,7 +125,11 @@ function DefaultGroupEventDetailsContent({
         </EventDataSection>
       )}
       {group.issueCategory === IssueCategory.CRON && (
-        <CronTimelineSection event={event} organization={organization} />
+        <CronTimelineSection
+          event={event}
+          organization={organization}
+          project={project}
+        />
       )}
       {hasNewTagsUI && (
         <EventDataSection

+ 1 - 1
static/app/views/monitors/components/monitorCreateForm.tsx

@@ -70,7 +70,7 @@ export default function MonitorCreateForm() {
     };
     browserHistory.push(
       normalizeUrl({
-        pathname: `/organizations/${organization.slug}/crons/${data.slug}/`,
+        pathname: `/organizations/${organization.slug}/crons/${data.project.slug}/${data.slug}/`,
         query: endpointOptions.query,
       })
     );

+ 1 - 1
static/app/views/monitors/components/monitorHeaderActions.tsx

@@ -76,7 +76,7 @@ function MonitorHeaderActions({monitor, orgSlug, onUpdate}: Props) {
         size="sm"
         icon={<IconEdit />}
         to={{
-          pathname: `/organizations/${orgSlug}/crons/${monitor.slug}/edit/`,
+          pathname: `/organizations/${orgSlug}/crons/${monitor.project.slug}/${monitor.slug}/edit/`,
           // TODO(davidenwang): Right now we have to pass the environment
           // through the URL so that when we save the monitor and are
           // redirected back to the details page it queries the backend

+ 4 - 2
static/app/views/monitors/components/overviewTimeline/timelineTableRow.tsx

@@ -65,7 +65,9 @@ export function TimelineTableRow({
 
   const monitorDetails = singleMonitorView ? null : (
     <DetailsArea>
-      <DetailsLink to={`/organizations/${organization.slug}/crons/${monitor.slug}/`}>
+      <DetailsLink
+        to={`/organizations/${organization.slug}/crons/${monitor.project.slug}/${monitor.slug}/`}
+      >
         <DetailsHeadline>
           <Name>{monitor.name}</Name>
           {isDisabled && <Tag>{t('Disabled')}</Tag>}
@@ -99,7 +101,7 @@ export function TimelineTableRow({
     (env: string) => ({
       label: t('View Environment'),
       key: 'view',
-      to: `/organizations/${organization.slug}/crons/${monitor.slug}/?environment=${env}`,
+      to: `/organizations/${organization.slug}/crons/${monitor.project.slug}/${monitor.slug}/?environment=${env}`,
     }),
     ...(onToggleMuteEnvironment
       ? [

+ 1 - 1
static/app/views/monitors/create.tsx

@@ -29,7 +29,7 @@ function CreateMonitor() {
     };
     browserHistory.push(
       normalizeUrl({
-        pathname: `/organizations/${orgSlug}/crons/${data.slug}/`,
+        pathname: `/organizations/${orgSlug}/crons/${data.project.slug}/${data.slug}/`,
         query: endpointOptions.query,
       })
     );

+ 2 - 2
static/app/views/monitors/edit.tsx

@@ -43,7 +43,7 @@ export default function EditMonitor() {
     setApiQueryData(queryClient, queryKey, data);
     browserHistory.push(
       normalizeUrl({
-        pathname: `/organizations/${organization.slug}/crons/${data.slug}/`,
+        pathname: `/organizations/${organization.slug}/crons/${data.project.slug}/${data.slug}/`,
         query: {
           environment: selection.environments,
           project: selection.projects,
@@ -92,7 +92,7 @@ export default function EditMonitor() {
                     </MonitorBreadcrumb>
                   ),
                   to: normalizeUrl(
-                    `/organizations/${organization.slug}/crons/${monitor.slug}/`
+                    `/organizations/${organization.slug}/crons/${monitor.project.slug}/${monitor.slug}/`
                   ),
                 },
                 {