|
@@ -4,8 +4,21 @@ export async function getPreloadedDataPromise(
|
|
fallback: () => Promise<any>,
|
|
fallback: () => Promise<any>,
|
|
usePreload?: boolean
|
|
usePreload?: boolean
|
|
) {
|
|
) {
|
|
|
|
+ const data = (window as any).__sentry_preload;
|
|
|
|
+ /**
|
|
|
|
+ * Save the fallback promise to `__sentry_preload` to allow the sudo modal to wait
|
|
|
|
+ * for the promise to resolve
|
|
|
|
+ */
|
|
|
|
+ const wrappedFallback = () => {
|
|
|
|
+ const fallbackAttribute = `${name}_fallback`;
|
|
|
|
+ const promise = fallback();
|
|
|
|
+ if (data) {
|
|
|
|
+ data[fallbackAttribute] = promise;
|
|
|
|
+ }
|
|
|
|
+ return promise;
|
|
|
|
+ };
|
|
|
|
+
|
|
try {
|
|
try {
|
|
- const data = (window as any).__sentry_preload;
|
|
|
|
if (
|
|
if (
|
|
!usePreload ||
|
|
!usePreload ||
|
|
!data ||
|
|
!data ||
|
|
@@ -14,15 +27,15 @@ export async function getPreloadedDataPromise(
|
|
!data[name] ||
|
|
!data[name] ||
|
|
!data[name].then
|
|
!data[name].then
|
|
) {
|
|
) {
|
|
- return await fallback();
|
|
|
|
|
|
+ return await wrappedFallback();
|
|
}
|
|
}
|
|
- const result = await data[name].catch(fallback);
|
|
|
|
|
|
+ const result = await data[name].catch(() => null);
|
|
if (!result) {
|
|
if (!result) {
|
|
- return await fallback();
|
|
|
|
|
|
+ return await wrappedFallback();
|
|
}
|
|
}
|
|
return await result;
|
|
return await result;
|
|
} catch (_) {
|
|
} catch (_) {
|
|
//
|
|
//
|
|
}
|
|
}
|
|
- return await fallback();
|
|
|
|
|
|
+ return await wrappedFallback();
|
|
}
|
|
}
|