all the haul
This commit is contained in:
@@ -3,6 +3,25 @@ import { handleApiError } from "$lib/optima-api/errorHandler";
|
||||
import { checkPermissions } from "$lib/permissions";
|
||||
import type { PageServerLoad } from "./$types";
|
||||
|
||||
function withTimeoutFallback<T>(
|
||||
promise: Promise<T>,
|
||||
timeoutMs: number,
|
||||
fallback: T,
|
||||
): Promise<T> {
|
||||
return new Promise<T>((resolve) => {
|
||||
const timer = setTimeout(() => resolve(fallback), timeoutMs);
|
||||
promise
|
||||
.then((value) => {
|
||||
clearTimeout(timer);
|
||||
resolve(value);
|
||||
})
|
||||
.catch(() => {
|
||||
clearTimeout(timer);
|
||||
resolve(fallback);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
export const load: PageServerLoad = async ({ locals, url }) => {
|
||||
const accessToken = locals.session?.accessToken;
|
||||
if (!accessToken) {
|
||||
@@ -68,7 +87,11 @@ export const load: PageServerLoad = async ({ locals, url }) => {
|
||||
optima.sales
|
||||
.fetchOpportunityTypes(accessToken)
|
||||
.catch(() => ({ data: [] })),
|
||||
optima.sales.fetchMetrics(accessToken).catch(() => null),
|
||||
withTimeoutFallback(
|
||||
optima.sales.fetchMetrics(accessToken).catch(() => null),
|
||||
2500,
|
||||
null,
|
||||
),
|
||||
]);
|
||||
|
||||
const opportunities =
|
||||
|
||||
Reference in New Issue
Block a user