Browse Source

ref(perf): Have preload queries return the result (#27282)

* ref(perf): Have preload queries return the result

Previously they would exit without returning the promise / data result.
k-fish 3 years ago
parent
commit
ff0b741831

+ 1 - 1
src/sentry/templates/sentry/partial/preload-data.html

@@ -35,7 +35,7 @@
       var preloadPromises = { orgSlug: slug };
       window.__sentry_preload = preloadPromises;
 
-      preloadPromises.organization = promiseRequest(makeUrl('/?detailed=0'));
+      preloadPromises['organization?detailed=0'] = promiseRequest(makeUrl('/?detailed=0'));
       preloadPromises.projects =  promiseRequest(makeUrl('/projects/?all_projects=1&collapse=latestDeploys'));
       preloadPromises.teams = promiseRequest(makeUrl('/teams/'));
     }

+ 3 - 2
static/app/actionCreators/organization.tsx

@@ -18,14 +18,15 @@ async function fetchOrg(
   detailed: boolean,
   isInitialFetch?: boolean
 ): Promise<Organization> {
+  const detailedQueryParam = detailed ? 1 : 0;
   const org = await getPreloadedDataPromise(
-    'organization',
+    `organization?detailed=${detailedQueryParam}`,
     slug,
     () =>
       // This data should get preloaded in static/sentry/index.ejs
       // If this url changes make sure to update the preload
       api.requestPromise(`/organizations/${slug}/`, {
-        query: {detailed: detailed ? 1 : 0},
+        query: {detailed: detailedQueryParam},
       }),
     isInitialFetch
   );

+ 1 - 0
static/app/utils/getPreloadedData.ts

@@ -20,6 +20,7 @@ export async function getPreloadedDataPromise(
     if (!result) {
       return await fallback();
     }
+    return await result;
   } catch (_) {
     //
   }

+ 6 - 4
static/index.ejs

@@ -11,6 +11,7 @@
       var reg = new RegExp(/\/organizations\/(.+?(?=(\/|$)))(\/|$)/, 'i');
       var organization = window.location.pathname;
       var slug = organization.match(reg)[1];
+      var preloadPromises = { orgSlug: slug };
 
       function promiseRequest(url) {
         return new Promise(function (resolve, reject) {
@@ -36,12 +37,13 @@
         return '/api/0/organizations/' + slug + suffix;
       }
 
-      var preloadPromises = { orgSlug: slug };
       window.__sentry_preload = preloadPromises;
 
-      preloadPromises.organization = promiseRequest(makeUrl('/?detailed=0'));
-      preloadPromises.projects =  promiseRequest(makeUrl('/projects/?all_projects=1&collapse=latestDeploys'));
-      preloadPromises.teams = promiseRequest(makeUrl('/teams/'));
+      if (slug !== 'new') {
+        preloadPromises['organization?detailed=0'] = promiseRequest(makeUrl('/?detailed=0'));
+        preloadPromises.projects =  promiseRequest(makeUrl('/projects/?all_projects=1&collapse=latestDeploys'));
+        preloadPromises.teams = promiseRequest(makeUrl('/teams/'));
+      }
     } catch(_) {}
     </script>
   </head>