Browse Source

fix(alerts): If user isn't a member but has project access use first project in alert wizard (#35352)

* fix(alerts): If user isn't a member but has project access use first project

* show project picker modal
Taylan Gocmen 2 years ago
parent
commit
26f4bb9783
1 changed files with 12 additions and 1 deletions
  1. 12 1
      static/app/views/alerts/builder/projectProvider.tsx

+ 12 - 1
static/app/views/alerts/builder/projectProvider.tsx

@@ -2,6 +2,7 @@ import {cloneElement, Fragment, isValidElement, useEffect} from 'react';
 import {RouteComponentProps} from 'react-router';
 
 import {fetchOrgMembers} from 'sentry/actionCreators/members';
+import {navigateTo} from 'sentry/actionCreators/navigation';
 import Alert from 'sentry/components/alert';
 import LoadingIndicator from 'sentry/components/loadingIndicator';
 import {t} from 'sentry/locale';
@@ -38,7 +39,7 @@ function AlertBuilderProjectProvider(props: Props) {
         }
   );
   const project = useFirstProject
-    ? projects.find(p => p.isMember)
+    ? projects.find(p => p.isMember) ?? (projects.length && projects[0])
     : projects.find(({slug}) => slug === projectId);
 
   useEffect(() => {
@@ -54,6 +55,16 @@ function AlertBuilderProjectProvider(props: Props) {
     return <LoadingIndicator />;
   }
 
+  // If there's no project show the project selector modal
+  if (!project && !fetchError) {
+    navigateTo(
+      hasAlertWizardV3
+        ? `/organizations/${organization.slug}/alerts/wizard/?referrer=${props.location.query.referrer}&project=:projectId`
+        : `/organizations/${organization.slug}/alerts/:projectId/wizard/?referrer=${props.location.query.referrer}`,
+      props.router
+    );
+  }
+
   // if loaded, but project fetching states incomplete or project can't be found, project doesn't exist
   if (!project || fetchError) {
     return (